我打算建立一個專有語言的靜態分析工具。我打算使用ANTLR來構建AST。我想知道如何檢查由項目使用專有語言使用AST設置的規則和準則。如何做靜態分析與ANTLR
例如,如果我爲C源代碼構建AST並且說我想檢查空指針。我將如何使用AST或CST進行此項檢查。
我需要在ANTLR生成的詞法分析器/解析器的測試代碼?
謝謝
我打算建立一個專有語言的靜態分析工具。我打算使用ANTLR來構建AST。我想知道如何檢查由項目使用專有語言使用AST設置的規則和準則。如何做靜態分析與ANTLR
例如,如果我爲C源代碼構建AST並且說我想檢查空指針。我將如何使用AST或CST進行此項檢查。
我需要在ANTLR生成的詞法分析器/解析器的測試代碼?
謝謝
這取決於您要執行的具體分析。以您的具體示例爲例:靜態確定變量是否可能(或將是)空指針,您需要構造一個data flow graph。我建議去研究dragon book。
如果您想要檢查空指針值,則需要針對您的專有語言進行完全控制和數據流分析。如果沒有超人的努力,ANTLR不會讓你到達那裏。
查看flow analysis capabilities of our DMS。我們用它來對超大規模C程序進行深度流分析。
即使使用這種機器,您將不得不做很多工作來解釋您的語言。這比你可能採取的其他方法要容易得多。
@Martin:所以,如果我和ANTLR一起學習龍書,就能夠爲我的語言構建一個簡單的靜態分析器。 – codeanalyser 2010-12-18 12:13:51
@codeanalyser:這個問題不能回答。你將不得不解釋你想要執行的簡單靜態分析。對另一個人來說,簡單的事情可能無法實現。 – 2010-12-18 12:15:42
@Martin:我試圖建立的是一個類似於lint的工具,但對於我的語言。 – codeanalyser 2010-12-18 12:19:05