我可以在不编译的情况下获得C / C ++ / Java代码的XML AST吗?

时间:2014-08-26 09:59:31

标签: java c++ c xml abstract-syntax-tree

我想用AST代表源代码创建一个XML文件,但是没有编译它。到目前为止,我找不到任何充分的解决方案。这是我试过的:

  • 在clang中使用XML打印机 - clang -cc1 -ast-print-xml - 这会很好,但它是removed from clang
  • srcML工具包,理论上运行良好,但解析器很差(对于Java,它甚至不能完全兼容1.5)

还有其他选择吗?

1 个答案:

答案 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的目的。