我想用AST代表源代码创建一个XML文件,但是没有编译它。到目前为止,我找不到任何充分的解决方案。这是我试过的:
clang -cc1 -ast-print-xml
- 这会很好,但它是removed from clang 还有其他选择吗?
答案 0 :(得分:3)
对于Java,请参阅What would an AST (abstract syntax tree) for an object-oriented programming language look like?
对于C,请参阅get human readable AST from c++ code
这两个都是由一个引擎生成的:我们的DMS软件再造工具包。 DMS还有一个完整的C ++ 11解析器,可以生成类似的XML。 (编辑2016年1月:现在完整的C ++ 14 for GCC和Visual C ++)。
我认为XML不是一个好主意:它是巨大而笨拙的,你可以带来的分析工具是......什么? XSLT:这对于分析程序并不是很有用。将XML读入DOM并攀登它?您会发现您缺少许多有用的支持(符号表等); AST仅仅是不够的。请参阅我的论文解析后的生活(查看我的简历或谷歌)。
最好使用一套集成机器,为分析(多种)编程语言提供各种一致支持(使用AST作为基础)。这就是DMS的目的。