有没有标准的方法来存储抽象语法树文件?

dra*_*ide 5 compilation abstract-syntax-tree

我正在寻找一种方法将抽象语法树"转储"到文件中,以便可以使用编译器解析代码,然后以独立于语言和编译器的方式存储.然而,我无法找到任何被广泛认可的方式来做到这一点.这样的方式存在吗?

Ira*_*ter 7

没有存储AST的标准,或者更重要的是从您的角度来看,在工具之间共享它们.原因是AST依赖于语法(它有所不同; C有很多"取决于具体的编译器和版本)和解析技术.

已经有很多尝试在多种语言中定义通用AST表单,但它们都没有真正起作用; 运营商的语义变化太大.(仅考虑"+":它的真正含义是什么?在Fortran中,您可以添加数组,在Java中,您可以"添加"字符串).

但是,人们可以很容易地写出特定的AST.一种简单的方法是使用某种符号,其中使用某种嵌套的"括号"来识别节点及其递归子节点.

Lisp S表达式是执行此操作的常用方法.您可以看到我们的工具生成的S表达式样式的示例.

人们也使用XML,但它非常笨重.您可以在此处查看XML输出示例.