我如何添加父引用Boost.原型表达式

How can I add parent references to Boost.Proto expressions?

本文关键字:引用 Boost 原型 表达式 添加 何添加      更新时间:2023-10-16

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

这样做的目的是创建表达式树来缓存求值的结果,这样它们就可以被高效地重新求值。我的策略是更新终端值,然后遍历树,将父节点标记为"脏",以便在计算根表达式时重新计算它们。

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

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

相关文章: