Java中的C源代码AST解析器

时间:2012-02-16 16:37:52

标签: java c parsing abstract-syntax-tree

我正在寻找一个可以从中创建全面AST的C源代码解析器。

最好是Java库(我不想在这里使用Python - > http://code.google.com/p/pycparser/

3 个答案:

答案 0 :(得分:3)

Eclipse CDT项目有一个用Java编写的C解析器,请参阅我的answer类似的问题。

答案 1 :(得分:2)

最简单的方法是使用ANTLR并根据现有的ANTLR语法生成AST,例如: the source

ANTLR在这里有一个Java API:http://www.antlr.org/api/Java/index.html

答案 2 :(得分:-1)

我们的C Front End不是Java,绝对不是Python: - 但是为许多真正的C代码方言提供了强大的解析器。它不仅仅是建立ASTs;它提供了预处理器,符号表,本地和全局流分析,除了“有AST”之外,如果你想对C做任何事情,你将需要它。

它建立在DMS Software Reengineering Toolkit之上,它提供了解析和流分析的基础架构,可以使用模式将转换应用于AST,并可以重新生成有效的源代码。

编辑2015年7月(回应评论):DMS本身是用并行编程语言PARLANSE实现的,它在功能上类似于C,但包括细粒度并行结构以及异常处理。 DMS提供了一组用于定义语言处理的DSL:一个完全支持Unicode的词法分析器,用于语法的BNF,用于计算树形分析的属性语法,以及用于模式识别和重写源代码的源到源转换。