我目前正在用Java编写一个简单的计算器解析器,只处理+和 - 运算符以及整数.我已经阅读了关于postfix和中缀评估的内容,我想知道括号是否可以与这些方法中的任何一种一起使用?
后缀/前缀表示法的优点在于您不需要括号.括号用于中缀表示法,因为存在歧义,例如:
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的基于堆栈的"分流码算法".
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |