【发布时间】:2012-08-05 18:14:10
【问题描述】:
我正计划为专有语言构建一个静态分析器工具。我打算使用 ANTLR 来构建 AST。我想知道如何检查由项目使用专有语言使用 AST 设置的规则和指南。
例如如果我为 C 源代码构建 AST 并说我想检查空指针。我将如何使用 AST 或 CST 进行此检查。
我是否必须在测试中使用 ANTLR 生成的词法分析器/解析器进行编码?
谢谢
【问题讨论】:
标签: antlr
我正计划为专有语言构建一个静态分析器工具。我打算使用 ANTLR 来构建 AST。我想知道如何检查由项目使用专有语言使用 AST 设置的规则和指南。
例如如果我为 C 源代码构建 AST 并说我想检查空指针。我将如何使用 AST 或 CST 进行此检查。
我是否必须在测试中使用 ANTLR 生成的词法分析器/解析器进行编码?
谢谢
【问题讨论】:
标签: antlr
这取决于您要执行的具体分析。以您的具体示例为例:要静态确定变量是否可能是(或将是)空指针,您需要构造一个data flow graph。我建议学习dragon book。
【讨论】:
如果您想检查空指针值,您将需要对您的专有语言进行完全控制和数据流分析。如果没有您的超人努力,ANTLR 不会让您到达那里。
查看flow analysis capabilities of our DMS。我们已经使用它对超大规模 C 程序进行深度流分析。
即使使用这种机器,您也需要做很多工作来向它解释您的语言。这比您可能采取的任何其他方法都容易得多。
【讨论】: