jde*_*aan 23 xml code-generation clang abstract-syntax-tree
我设法使用cmake和visual studio 10成功编译了用于Windows的窗口.我想获得一个XML文件作为源代码的AST表示.有一个选项可以在linux(ubuntu)下使用gcc提供结果,但是在windows框中不起作用:
clang -cc1 -ast-print-xml source.c
Run Code Online (Sandbox Code Playgroud)
但是,这是调用编译阶段(我想避免).挖掘源代码并没有帮助我,因为我很吵.我可以通过使用以下方法设法生成AST的二进制版本:
clang -emit-ast source.c
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种格式不能直接用于解析.是否有一些现有方法直接生成XML树而不是clang中的二进制树?
目标是在.NET环境中的其他工具中使用XML表示,因此我需要围绕本机clang lib进行一些包装以访问二进制AST.如果有人已经为.NET编写了一些二进制clang AST解析器,可能还有第三种选择吗?
如果clang前端生成的AST与编译阶段生成的AST不相等,我是否可能会遗漏这些内容.
Mat*_* M. 20
对于您的信息,Douglas Gregor(负责CLang FrontEnd)已从2.9版本中删除了XML打印机.
问题是缺乏XML打印机.许多AST节点从未在打印机中实现,以及某些节点的许多属性,这导致源代码的不准确表示.
道格拉斯提出的另一个观点是,输出应该不适合调试CLang本身(这-emit-ast是关于什么),而是适用于外部工具的消耗.这要求输出在一个版本之间保持稳定.值得注意的是,它不应该是CLang内部的一对一映射,而是将源代码翻译成标准语言.
除非打印机上有大量工作(需要志愿者),否则它不会被集成回来......
| 归档时间: |
|
| 查看次数: |
13267 次 |
| 最近记录: |