gpt4 book ai didi

c - antlr 为 c 生成 ast 并解析 ast

转载 作者:行者123 更新时间:2023-12-02 08:51:44 27 4
gpt4 key购买 nike

我正在对 c 程序进行静态分析。我搜索了 antlr 网站,似乎没有合适的语法文件为 c 程序生成 ast。这是否意味着我必须从一开始就自己做。或者是有一个更快的方法。我还需要一个可以遍历解析器创建的 ast 的树解析器。

最佳答案

您表示要进行静态分析以检测缓冲区溢出。

首先,为 C 编写语法比看起来要难。标准中有所有这些东西,然后才是真正的编译器实际接受的东西。你必须决定如何处理预处理器(它因编译器而异!)。如果您没有完全正确地掌握语法和预处理,您将无法解析真正的程序。 (如果你想做玩具语言,那很好,但你不需要 C 语法)。

要进行分析,您需要 比 AST 多得多的机器。您将需要符号表、控制和数据流分析、可能的本地和全局指向分析、调用图提取和某种类型的范围分析。

人们似乎不明白这一点。

** 获得解析器距离用真实语言做任何有用的事情还有很长的路要走**

我之所以大喊大叫,是因为我一遍又一遍地看到这个。

如果您想继续进行特定的程序分析或转换任务,除非您想在开始任务之前就老死,否则最好找一个已经拥有大部分所需内容的基金会。语法不稳定的解析器生成器的基础不是基础。 (不要误会我的意思:ANTLR、YACC、JavaCC 都是很好的解析器生成器,它们非常适合为新语言构建解析器。当投资完成时,它们非常适合为真正的语言实现生产解析器。但他们生产解析器,而且大多数人不做生产部分。而且他们根本不提供额外的机器。)

我们的 DMS Software Reengineering Toolkit包含上述所有机制,因为几乎总是需要它,而且实现起来非常头疼。 (到目前为止,我的团队已经投入了 15 年。)

我们还实例化了机械是对 COBOL and Java, C, C++ 特别有用的形式(在某种程度上,语言真的很难),各种方言,让其他人不必重复这个漫长的过程。

GCC 和 Clang 作为 C 和 C++ 的替代品已经相当成熟。

关于c - antlr 为 c 生成 ast 并解析 ast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8061011/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com