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

Kao*_*Kao 6 c c++ java xml abstract-syntax-tree

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

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

还有其他选择吗?

Ira*_*ter 3

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

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

这两者均由同一个引擎生成:我们的 DMS 软件重组工具包。DMS 还具有完整的 C++11 解析器,可以生成类似的 XML。(2016 年 1 月编辑:现在适用于 GCC 和 Visual C++ 的完整 C++ 14)。

我不认为 XML 实际上是一个好主意:它庞大且笨重,而您可以对其进行分析的工具是……什么?XSLT:这对于分析程序来说不是很有用。将 XML 读入 DOM 并跳过它?你会发现你缺少很多有用的支持(符号表等);AST 还不够。请参阅我关于解析后的生活的文章(检查我的简历或谷歌)。

您最好使用一组集成机制,为分析(多种)编程语言(使用 AST 作为基础)提供各种一致的支持。这就是 DMS 的设计目的。