从表达式转换为图形(DAG)表示的算法

时间:2019-06-19 15:21:32

标签: algorithm abstract-syntax-tree directed-acyclic-graphs unification

我正在阅读有关统一算法的信息,高效的算法似乎输入了DAG,我的理解是表达式中共享的术语不是重复的节点(如AST)。

我肯定有众所周知的算法,可以将表达式从“字符串表示形式”或AST转换为DAG。 是否存在这样的算法?我只是想避免重新发明轮子。

1 个答案:

答案 0 :(得分:3)

在构造AST时可以通过记忆轻松实现。

由于AST是后置内置的,因此在创建每个节点时,请检查备注缓存以查看是否已经存在等效节点。如果是这样,请使用预先存在的节点。否则,请使用新节点并将其添加到缓存中。

在检查缓存中是否存在一个先前存在的节点时,该节点的子节点将已经被存储,因此您可以通过标识比较它们,而不必重新检查其子图。