我知道RPN是如何工作的,即我们有输入:
a + b * c
,输出
bc*a+
是否很容易创建算法,向我展示这个等式的最后计算是什么?我的意思是我想要知道第一个操作是两个句子上的+:“a”和“b * c”。
数值方程式与我的问题无关,而是与逻辑句子有关。例如,我有一个逻辑句子:
p&(q|r)
我需要先将其分为
p,(q|r) with &operator
和第二句:
q,r with |operator
我需要创建某种解析器或什么?有可能实现它相对容易吗?
答案 0 :(得分:1)
这个问题有点不清楚,但我试着回答'创建一个算法很容易,它会告诉我最后一次计算是什么'。
将rpn视为基于堆栈的计算方法:因此bc*a+
表示在堆栈上推送b
的值,在堆栈上推送c
,应用{{1到两个最顶层的元素并将结果推送到堆栈的顶部。然后在堆栈上按*
并将a
应用于两个最顶层的元素并将结果推送到堆栈上。因此,rpn公式的最后一次计算是最右边的算子。
逻辑句子完全相同,只需用&替换*和+与|。