我想对C源代码执行一些转换.我需要一个linux上的工具,它从源代码生成一个完整的AST,这样我就可以在这个AST上应用我的转换,然后将其转换回C源代码.我试过ELSA,但没有编译.(我使用的是Ubuntu 8.4).谁能建议更好的工具/应用程序?
我会推荐clang.它有一个相当完整的C实现,大多数gcc扩展,代码是非常容易理解的.他们的C++实现是不完整的,但如果你只关心从C代码生成AST应该没问题.根据你想要做的事情你可以使用clang作为库并直接使用AST,或者让clang将它们转储到控制台.
请参阅pycparser - 一个用于C的纯Python AST生成器.
我知道有两个项目,您可以找到有用的项目:
CIL
变形金刚
他们都解析标准的C源代码,以允许进一步的分析和转换.我没有使用它们,所以如果它们符合您的需要,您必须自己检查.
当然,使用GCC的建议也是有效的.我知道gcc的这方面文档不多.