【发布时间】:2016-11-26 15:46:25
【问题描述】:
我现在正在制作一个简单的字节码解释器,它使用 RPN 来表示表达式,真正使用后缀表示法,但现在我遇到的问题是:短路评估是否真的可以用于后缀表达式?例如,在计算表达式 (false && (factorial(7) > factorial(5))) 时,C++ 知道两个操作数上的 && 运算符的结果在到达第二个操作数之前就计算为 false,因为 (false && any ) 总是等于假。现在,当您将其放入 RPN 时,您会得到 (false (7 factorial 5 factorial >) &&)。
我想构建一个高效的 RPN 表达式解析器,所以问题是:如何制作一个具有短路评估的高效 RPN 表达式解析器?
【问题讨论】:
-
你写代码。我们不是来为您设计系统,也不是教您如何设计。
-
@MarcB 感谢您提供的信息。无论如何,我确实得到了一个有用的答案,所以是的。
-
RPN 和后缀表示法是一回事,不是两个不同的东西。您不会将 RPN 解析器构建到解释器中。输入已经被解析并且可以线性处理。如果要进行短路评估,则需要引入分支。
标签: c++ bytecode postfix-notation short-circuiting rpn