后缀/前缀表示法的优美之处在于您不需要括号。中缀表示法中使用括号是因为存在歧义,例如:
a + b - c
(a + b) - c
a + (b - c)
然而,在后缀表示法中,它们显然是不同的:
a b + c -
a b c - +
您可以将带有括号的中缀表达式转换为后缀表达式,并遵守运算符优先级。其中一种算法是Edsger Dijkstra的基于栈的“调度场算法”。
如果你只关心可交换的简单数学运算符+和-,那么你可能不需要关注通常强制计算顺序的括号。
你的计算器可能只需要是一个简单的解析器和累加器,如果有括号存在则忽略它们 - 除非我对括号的预期含义有所遗漏。
a - b
不同于b - a
。也就是说,-
不是可交换的。 - polygenelubricants