获取C++的AST?

Tho*_*ing 12 c++ abstract-syntax-tree

我想获得一个用于C++的AST,然后我可以使用外部程序进行解析.哪些程序适合为C++生成AST?我不关心它实现的语言或输出格式(只要它易于解析).

我的总体目标是将C++单元测试台转换为相应的C#包装器测试台.

小智 12

您可以使用clang,尤其是libclang来解析C++代码.它是一个非常高质量的手写库,用于lexing,解析和编译C++代码,但它也可以生成AST.

Clang 支持C,Objective-C和Objective-C++.Clang本身是用C++编写的.

  • 为了他人的利益:libclang(C绑定)是可怕的和不完整的.clang(C++绑定)很精彩. (2认同)

BRP*_*ock 6

实际上,GCC将在您感兴趣的管道中的任何阶段发出AST,包括GENERIC和GIMPLE表格.查看(过多的)命令行开关-fdump-- 例如-fdump-tree-original-raw

这是更容易(...)的工作方式之一,因为您可以在任意代码上使用它; 只需传递适当的CFLAGSCXXFLAGS进入大多数Makefile:

    make CXXFLAGS=-fdump-tree-original-raw all
Run Code Online (Sandbox Code Playgroud)

......你得到了"作品".

更新:在检查我的国旗名称时看到了基于GCC AST的这个整洁的小图形系统:-) Google FTW.

http://digitocero.com/en/blog/exporting-and-visualizing-gccs-abstract-syntax-tree-ast