我想在C源代码上执行一些转换。我需要一个在Linux上的工具,从源代码中生成完整的AST,以便我可以在该AST上应用我的变换,然后将其转换回C源代码。我尝试使用ELSA,但它无法编译。(我正在使用Ubuntu 8.4)。有人能推荐一个更好的工具或应用程序吗?
我想在C源代码上执行一些转换。我需要一个在Linux上的工具,从源代码中生成完整的AST,以便我可以在该AST上应用我的变换,然后将其转换回C源代码。我尝试使用ELSA,但它无法编译。(我正在使用Ubuntu 8.4)。有人能推荐一个更好的工具或应用程序吗?
我建议使用clang。它具有相当完整的C实现,支持大多数gcc扩展,并且代码非常易于理解。虽然他们的C++实现不完整,但如果你只关心从C代码生成AST,那么这应该是可以的。根据你想要做什么,你可以将clang作为库直接使用AST进行操作,或者让clang将其导出到控制台。
xml
<cscan>
<typedef_hash>
<typedef id="GLenum" before="unsigned int" after="" file="/usr/include/GL/gl.h"/>
...
www.antlr.org