0

我知道 RPN 是如何工作的,即我们有输入:

a + b * c

输出是

bc*a+

创建算法是否容易向我展示这个方程的最后计算是什么?我的意思是我想知道第一个操作是两个句子上的 +:“a”和“b*c”。

数值方程与我的问题无关,而是与逻辑句子有关。例如我有一个合乎逻辑的句子:

p&(q|r)

我需要首先将其划分为

p,(q|r) with &operator

第二句:

q,r with |operator

我需要创建某种解析器或其他东西?是否有可能相对容易地实现它?

4

1 回答 1

1

这个问题有点不清楚,但我试图回答“创建一个向我展示最后一次计算是什么的算法是否容易”。

将 rpn 视为基于堆栈的计算方法:sobc*a+意味着将(的值)b压入堆栈,压入c堆栈,应用于*两个最顶部的元素并将结果压入堆栈顶部。然后压入a堆栈并应用于+两个最顶层的元素并将结果压入堆栈。所以 rpn 公式的最后一个计算是最右边的运算符。

逻辑语句完全相同,只需将 * 替换为 & 并将 + 替换为 |。

于 2013-05-16T17:16:19.917 回答