【问题标题】:How to do Static analysis with ANTLR如何使用 ANTLR 进行静态分析
【发布时间】:2012-08-05 18:14:10
【问题描述】:

我正计划为专有语言构建一个静态分析器工具。我打算使用 ANTLR 来构建 AST。我想知道如何检查由项目使用专有语言使用 AST 设置的规则和指南。

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

我是否必须在测试中使用 ANTLR 生成的词法分析器/解析器进行编码?

谢谢

【问题讨论】:

    标签: antlr


    【解决方案1】:

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

    【讨论】:

    • @Martin:所以,如果我和 ANTLR 一起学习 Dragon 书,就可以为我的语言构建一个简单的静态分析器。
    • @codeanalysisr:这个问题无法回答。您将不得不解释您想要执行的简单静态分析是什么。对一个人来说简单的事情可能对另一个人来说是无法实现的。
    • @Martin :我正在尝试构建一个类似于 lint 的工具,但适用于我的语言。
    • @codeanalyser:那你一定要读龙书。做 lint 之类的事情一点也不简单。
    • @codeanalyzer:你需要的不仅仅是“学习”。在某些时候,您必须“实施”。而且流量分析是hard
    【解决方案2】:

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

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

    即使使用这种机器,您也需要做很多工作来向它解释您的语言。这比您可能采取的任何其他方法都容易得多。

    【讨论】:

      猜你喜欢
      • 2015-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      相关资源
      最近更新 更多