3

我想生成具有从子到父的“反向”引用的表达式树。有没有办法自定义 Proto 生成器或域,以便表达式包装器类(使用proto::extends<>)包含对父表达式的引用?

这背后的目标是创建缓存评估结果的表达式树,以便可以有效地重新评估它们。我的策略是更新终端值,然后沿着树将父节点标记为“脏”,以便在评估根表达式时重新评估它们。

4

1 回答 1

3

你描述的技术行不通。表达式是自下而上构建的。对于表达式a + (b * c),在构造子节点 ( ) 时,父节点 ( +) 不存在b * c。孩子不能存储指向尚不存在的对象的指针。

您必须对表达式进行后处理以使用转换或上下文设置父指针。

于 2015-08-13T17:29:24.607 回答