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

sut*_*toL 3 java

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

pol*_*nts 5

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

a + b - c
Run Code Online (Sandbox Code Playgroud)

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

(a + b) - c
a + (b - c)
Run Code Online (Sandbox Code Playgroud)

但是,在后缀表示法中,它们明显不同:

a b + c -
a b c - +
Run Code Online (Sandbox Code Playgroud)

在后缀表示法中不需要parantheses /括号来强制执行评估顺序.

也可以看看


从中缀转换

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

也可以看看