2010-12-18 92 views
1

我打算建立一个专有语言的静态分析工具。我打算使用ANTLR来构建AST。我想知道如何检查由项目使用专有语言使用AST设置的规则和准则。如何做静态分析与ANTLR

例如,如果我为C源代码构建AST并且说我想检查空指针。我将如何使用AST或CST进行此项检查。

我需要在ANTLR生成的词法分析器/解析器的测试代码?

谢谢

回答

2

这取决于您要执行的具体分析。以您的具体示例为例:静态确定变量是否可能(或将是)空指针,您需要构造一个data flow graph。我建议去研究dragon book

+0

@Martin:所以,如果我和ANTLR一起学习龙书,就能够为我的语言构建一个简单的静态分析器。 – codeanalyser 2010-12-18 12:13:51

+0

@codeanalyser:这个问题不能回答。你将不得不解释你想要执行的简单静态分析。对另一个人来说,简单的事情可能无法实现。 – 2010-12-18 12:15:42

+0

@Martin:我试图建立的是一个类似于lint的工具,但对于我的语言。 – codeanalyser 2010-12-18 12:19:05

1

如果您想要检查空指针值,则需要针对您的专有语言进行完全控制和数据流分析。如果没有超人的努力,ANTLR不会让你到达那里。

查看flow analysis capabilities of our DMS。我们用它来对超大规模C程序进行深度流分析。

即使使用这种机器,您将不得不做很多工作来解释您的语言。这比你可能采取的其他方法要容易得多。