我正在寻找一个可以从中创建全面AST的C源代码解析器。
最好是Java库(我不想在这里使用Python - > http://code.google.com/p/pycparser/)
答案 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,用于计算树形分析的属性语法,以及用于模式识别和重写源代码的源到源转换。