我计划为专有语言构建静态分析器工具。我打算用ANTLR来构建AST。我想知道如何检查规则和指南,由项目使用AST使用专有语言设置。
例如如果我为C源代码构建AST,并说我想检查空指针。我如何使用AST或CST进行检查。
我是否必须使用ANTLR生成的lexer / parser编写测试代码?
由于
答案 0 :(得分:2)
这取决于您要执行的具体分析。以您的具体示例为例:要静态确定变量是否(或将是)空指针,您需要构造data flow graph。我建议学习dragon book。
答案 1 :(得分:1)
如果要检查空指针值,则需要对专有语言进行完全控制和数据流分析。如果没有超人的努力,ANTLR将无法帮助你。
查看flow analysis capabilities of our DMS。我们用这个来对非常大规模的C程序进行深度流分析。
即使使用这种机器,你也要做很多工作来解释它的语言。这比你可能采取的任何其他方法容易得多。