zhouqijie

语法树的变体

Copilot:虽然在编译过程中并不一定需要从AST生成DAG,但DAG在优化编译器的性能方面具有重要作用。希望这个解释对你有所帮助!

CRE:可以避免重复计算表达式。

为表达式构造的有向无环图(DAG)指出了表达式中公共子表达式(多次出现的子表达式),可以用构造语法树的技术去构造DAG。

和表达式的语法树相似,一个DAG的叶子节点对应原子运算分量,而内部节点对应于运算符。

和语法树不同的是,一个公共子表达式可能有多个父节点。

DAG不仅简洁地表示了表达式,而且可以为最终生成表达式的高效代码提供重要的信息。

CRE:DAG的可以用记录数组的方式来顺序存储,每条节点记录的整数下标(索引)称为值编码(value number)

(END)