我可以得到C/ c++ /Java代码的XML AST而不编译它吗?

Can I get an XML AST of C/C++/Java code without compiling it?

本文关键字:AST 编译 XML c++ 代码 Java 我可以      更新时间:2023-10-16

我想创建一个用AST表示源代码的XML文件,但是不编译它。到目前为止我还没有找到充分的解。下面是我的尝试:

  • 在clang - clang -cc1 -ast-print-xml中使用XML打印机会很好,但是它从clang中删除了
  • srcML工具包,理论上工作得很好,但解析器很差(对于Java来说,它甚至不完全兼容1.5)

还有其他选择吗?

对于Java,请参阅面向对象编程语言的AST(抽象语法树)是什么样子的?

对于C,请参见从c++代码中获取人类可读的AST

这两个都是由一个引擎产生的:我们的DMS软件再工程工具包。DMS还有一个完整的c++ 11解析器,可以生成类似的XML。(编辑2016年1月:现在为GCC和Visual c++提供完整的c++ 14)。

我不认为XML是一个真正的好主意:它是巨大的和笨拙的,和分析工具,你可以带它承担……怎么啦?XSLT:这对于分析程序不是很有用。将XML读入DOM并爬过它?你会发现你缺少很多有用的支持(符号表等);AST是不够的。请参阅我的文章解析后的生活(查看我的个人简介或谷歌)。

您最好使用一组集成的机器,它提供各种一致的支持来分析(多种)编程语言(使用ast作为基础)。