我设法用cmake和visual studio 10成功编译了windows的clang。我想获得一个XML文件作为源代码的AST表示。有一个选项,它提供的结果铿锵linux下(Ubuntu的),GCC,但在Windows中不起作用:可以在不使用编译器的情况下使用clang获取C/C++代码的XML AST转储吗?
clang -cc1 -ast-print-xml source.c
然而,这是调用编译阶段(我想避免) 。对于叮当而言,挖掘源代码并不能帮助我。我可以设法通过使用生成AST的二进制版本:
clang -emit-ast source.c
不幸的是,这种格式是直接不可用于解析。是否有一些现有的方法直接生成XML树,而不是在铿锵声中的二进制文件?
目标是在.NET环境中的其他工具中使用XML表示,因此我需要围绕本地clang库进行一些包装以访问二进制AST。也许有第三种选择,如果有人已经写了一些二进制叮当AST解析器的.NET?
是否有可能丢失类似于铛前端生成的AST与编译阶段生成的AST不相同的东西。
我的公司构建C++前端,我们*可以发布AST的完整XML转储。我们把它作为一个复选框项目,因为人们要求它。没有人真正使用它,因为真正的C++程序(包括所有头文件)的输出量很简单*巨大*,这使得它处理速度缓慢而笨拙。真正的问题是,你为什么要这样做?Clang可能已经提供了大量机器来直接处理C++ AST(就像我们相应的工具一样);你为什么要尝试复制所有这些工作?为什么不使用Clang来达到你的目的? – 2011-03-19 17:42:33
...请参阅http://stackoverflow.com/a/17393852/120163上的C++树转储这不是XML,但该工具也可以使用完全相同的内容生成XML。 – 2016-04-12 10:02:00