antlr C语法创建AST

时间:2011-04-14 18:41:57

标签: c antlr grammar abstract-syntax-tree

是否有可用的C语法生成AST,其中包含使用“^”和“!”的所有解析器规则符号

我阅读了Terence Parr写的这本书来编写这样的语法,但似乎为C语言编写一个这样的语法是一个耗时的过程,所以想知道它是否可用已经可以节省很多时间!

(对于较小的C语言子集的语法也没问题。)

谢谢:)

2 个答案:

答案 0 :(得分:2)

this。它直接来自ANTLR 4源代码:C11语法。 看起来非常合规。

当然,它没有预处理器,但是首先将cpp或mcpp放在文件中很容易。

它也没有AST规则,但它看起来太难很难做到(尽管耗时)。

答案 1 :(得分:1)

两周后没有答案。

你是对的,构建一个完整的解析器来构建完整的AST并处理C的所有细节(包括预处理器) 覆盖C的各种方言(例如,ANSI,GNU C 2/3/4 /,Miscrosoft Visual C,Green Hills C)......实际上是很多工作。除非你投入这项工作,否则它不会处理任何真正的C程序。

我希望C的完整ANTLR语法可以考虑到ANTLR的年龄。令人惊讶的是,这里的任何人似乎都无法识别出一个;当然你希望在ANTLR网站找到它。

我们将构建此类C语法分析器所需的能量(涵盖所有上述方言),并添加计算符号表,提取控制和数据流,构建调用图,启用分析器以及{{3中的树变换{}} DMS Software Reengineering Toolkit。此前端已应用于由 18,000 编译单元组成的C应用程序,以构建自定义分析工具。