解析用C编写的代码并提供API的库

解析用C编写的代码并提供API的库,c,parsing,compiler-construction,C,Parsing,Compiler Construction,我正在实现一个用于源代码到源代码转换的概念验证应用程序,需要一个带API的C解析器来操作/遍历C语法树(AST) 我曾尝试使用clang,但我遇到了各种问题,例如无法使用libclang编译教程、错误的体系结构等。由于这是一个概念验证应用程序,我会将clang推迟到不同的日期 问题: 哪些软件/库(以任何语言实现)可以解析C代码,并提供API,以便我可以在其上构建应用程序。我环顾四周,但找不到任何免费的解析器 我可以使用Windows、Mac或Linux上的任何平台,任何用C/C++/Java/

我正在实现一个用于源代码到源代码转换的概念验证应用程序,需要一个带API的C解析器来操作/遍历C语法树(AST)

我曾尝试使用
clang
,但我遇到了各种问题,例如无法使用
libclang
编译教程、错误的体系结构等。由于这是一个概念验证应用程序,我会将
clang
推迟到不同的日期

问题: 哪些软件/库(以任何语言实现)可以解析C代码,并提供API,以便我可以在其上构建应用程序。我环顾四周,但找不到任何免费的解析器


我可以使用Windows、Mac或Linux上的任何平台,任何用C/C++/Java/Perl/Python/PHP编写的解析器都可以工作。

您可以尝试一种可用的语法。ANTLR支持创建树漫游器,必要时可以手动漫游/操纵AST。包括C++预处理器和GNU C.< /P>,如果您想要一个语法分析程序(对于某些未指定语言),它是不清楚的,它是用一个文档化的AST API实现的,或者您想要一个可以处理“C/C++”的解析器(后者是一个非序列的,因为C和C++是非常不同的语言)。您能解释一下吗?请参见C++分析器的链接,它将AST作为XML提供。同样的解析器也有一个完整的API来操纵树。(在C++和C++中,当前面的注释被写入时,链接显示了C++解析器,但是有一个相应的C解析器。底层引擎不仅有一个用于直接操作AST节点的接口,还内置了对源到源转换的支持,使用使用目标语言(在本例中为C)表面语法编写的重写规则。这似乎是一个不错的工具。在使用它之前,我会寻找更多信息,因为我对Java有点缺乏经验。ANTLR可以用几种语言生成解析器,尽管它有时依赖于语法,因为它们可以包含支持代码。我链接到的ANSIC语法包含很少的Java代码,可以很容易地进行移植,以生成C甚至C#中的词法分析器和解析器(如果您愿意的话)。