反向抛光表示法的反向算法

时间:2013-05-16 16:35:44

标签: rpn

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

a + b * c

,输出

bc*a+

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

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

p&(q|r)

我需要先将其分为

p,(q|r) with &operator

和第二句:

q,r with |operator

我需要创建某种解析器或什么?有可能实现它相对容易吗?

1 个答案:

答案 0 :(得分:1)

这个问题有点不清楚,但我试着回答'创建一个算法很容易,它会告诉我最后一次计算是什么'。

将rpn视为基于堆栈的计算方法:因此bc*a+表示在堆栈上推送b的值,在堆栈上推送c,应用{{1到两个最顶层的元素并将结果推送到堆栈的顶部。然后在堆栈上按*并将a应用于两个最顶层的元素并将结果推送到堆栈上。因此,rpn公式的最后一次计算是最右边的算子。

逻辑句子完全相同,只需用&替换*和+与|。