在java解析器中的简单计算器

时间:2010-06-29 11:14:56

标签: java

我目前正在用Java编写一个简单的计算器解析器,只处理+和 - 运算符以及整数。我已阅读有关postfixinfix评估的内容,我想知道括号是否可以与这两种方法一起使用?

2 个答案:

答案 0 :(得分:5)

后缀/前缀表示法的优点在于您不需要括号。括号用于中缀表示法,因为存在歧义,例如:

a + b - c

这可能意味着以下任何一种情况:

(a + b) - c
a + (b - c)

然而,在后缀表示法中,它们明显不同:

a b + c -
a b c - +

没有必要使用parantheses /括号来强制执行后缀表示法中的评估顺序。

另见


从中缀转换

您可以使用带有parantheses的中缀表示法来表达,并将其转换为后缀表示法,遵循运算符优先级。一种这样的算法是Edsger Dijkstra基于堆栈的“分流码算法”。

另见

答案 1 :(得分:0)

如果你只关心简单的数学运算符+和 - 它们是可交换的,那么你可能不需要关心通常强制执行计算顺序的括号。

你的计算器可能只需要是一个简单的解析器和累加器,如果存在则忽略括号 - 除非我遗漏了关于括号的预期含义的东西