如何使用 ANTLR 进行静态分析

发布于 2024-10-08 09:44:00 字数 192 浏览 3 评论 0原文

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

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

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

谢谢

I m planning to build a static analyzer tool for a proprietary language. I m planning to use ANTLR to build the AST. I would like to know how does one go about checking for rules and guidelines , set by the project using the proprietary language using the AST.

for e.g. if I build the AST for a C source code with and say i want to check for null pointers . How would i do this check using the AST or CST.

Will i have to code in the test with ANTLR generated lexer/parser?.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我三岁 2024-10-15 09:44:00

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

It depends on the specific analysis you want to perform. Taking your specific example: to determine statically whether a variable might be (or will be) a null pointer, you need to construct a data flow graph. I recommend to study the dragon book.

无风消散 2024-10-15 09:44:00

如果您想检查空指针值,您将需要对您的专有语言进行完全控制和数据流分析。如果您没有超人的努力,ANTLR 无法帮助您实现这一目标。

查看我们的 DMS 的流量分析功能。我们用它来对超大规模 C 程序进行深度流程分析。

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

If you want to check for null pointer values, you will need full control and data flow analysis for your proprietary language. ANTLR won't get you there without beyond-superhuman effort on your part.

Check out the flow analysis capabilities of our DMS. We have used this to do deep flow analysis of very large scale C programs.

Even using this machinery, you are going to have to do a lot of work to explain your langauge to it. This is just a lot easier than any other approach you might take.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文