首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RPN短路评估

RPN短路评估
EN

Stack Overflow用户
提问于 2016-07-22 16:40:31
回答 1查看 543关注 0票数 2

我现在正在制作一个简单的字节码解释器,它使用RPN作为表达式表示法,并真正用于任何东西的后缀表示法,但现在我要问的问题是:短路评估实际上能用于后缀表达式吗?例如,当计算表达式(false && (fac引流(7)>阶乘(5))时,C++知道两个操作数上的&&运算符的结果,它甚至在到达第二个操作数之前就计算为false,因为(false & anything)总是等于false。现在,当您将其放入RPN中时,会得到(false (7阶乘5阶乘>) &)。

我想要构建一个高效的RPN表达式解析器,所以问题是:如何使一个高效的RPN表达式解析器具有短路评估功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-22 16:52:57

您将分两个阶段计算一个RPN表达式。

阶段1:解析RPN,并构造RPN的树表示。因此,例如,在这个树中,&&节点有两个子节点,每个子节点对应表达式的一半。构建这棵树与计算RPN是一个几乎完全相同的过程,除了计算部分之外,计算部分被构造新节点的操作所取代,并将其子节点链接到新的父节点,然后将父节点推回RPN计算堆栈。

第二阶段:使用递归下降计算构造的树。在这一点上,短路评估变得微不足道:评估一个&&的左手子,然后决定你是否真的想要评估右边的孩子。

同样适用于||节点等..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38531525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档