2012-02-16 162 views

回答

2

这可能是最简单的供你使用ANTLR,并得到它的产生基于现有ANTLR语法的AST ,例如the source

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

+3

您可能可以构建C语法分析器; ANTLR肯定在狭义的意义上建立了精细的解析器。但是,OP想要的东西似乎是读取真正的C程序的东西。要做到这一点的详细工作比您想象的要大得多:预处理器,方言(C89,C99,C11,...),供应商变量(GCC,MSVC,GreenHills),字符集。你最好得到一个已经完成所有工作的人,而不是试图自己重新创造它。 – 2015-07-03 12:49:42

-1

我们C Front End不是在Java中,绝对不是在Python: - },但提供了强大的解析器的C代码许多现实方言。它不仅仅是构建ASTs;它提供了一个预处理器,符号表,局部和全局流分析,如果您想对C做任何事情而不仅仅是“拥有AST”,您将需要这些分析。

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

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

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – 2015-07-04 13:10:18

+0

@TonyHopkinson:“*寻找C源代码解析器*”的哪部分不直接回答?这个答案的评论在哪里? – 2015-07-04 13:37:59

+1

望着我的伴侣。 Guy还要求提供java,而你并没有说它的内容是什么。建在我们之中......也让我有些不安。如果是我,我会这样做,因为你可能想看看评论。 PS我没有做downvote ... – 2015-07-06 09:45:48

2

Eclipse CDT项目有一个用Java编写的C语法分析器,请参阅我的answer以得到类似的问题。