ASTs:更喜欢继承还是变体?

时间:2014-10-06 12:56:28

标签: c++ abstract-syntax-tree composite boost-variant

在面向对象的语言中,使用简单的层次结构(复合模式)实现AST(抽象语法树)并通过访问者遍历它们是相当普遍的。

在函数式编程语言中,使用变量/求和类型,然后使用模式匹配,是正确的方法。

C ++同时具有继承和Boost.Variants。我已经使用继承编写了几个AST层次结构,但我想从那些使用变体方法的人那里获得一些反馈。我想知道哪个是最好的&#34;在性能(时间和空间)方面,还有可维护性(易于创建树和遍历它们)。< / p>

我对实现hash-consing(保留每个公共子树的单个副本)的经验特别感兴趣,可能使用Boost.Flyweight。

谢谢!

0 个答案:

没有答案