Java解析器中的简单计算器

3

我目前正在用Java制作一个简单的计算器解析器,只处理+和-操作符以及整数。我读过有关后缀表达式中缀表达式的文章,并想知道这两种方法是否可以使用括号?

2个回答

5

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

a + b - c

这可以有以下两种含义:
(a + b) - c
a + (b - c)

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

a b + c -
a b c - +

在后缀表达式中,不需要使用括号来强制执行计算顺序。

另请参阅


从中缀转换

您可以将带有括号的中缀表达式转换为后缀表达式,并遵守运算符优先级。其中一种算法是Edsger Dijkstra的基于栈的“调度场算法”。

另请参阅


0

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

你的计算器可能只需要是一个简单的解析器和累加器,如果有括号存在则忽略它们 - 除非我对括号的预期含义有所遗漏。


我不确定可交换性与问题有什么关系。特别是因为 a - b 不同于 b - a。也就是说,- 不是可交换的。 - polygenelubricants
我的错。我本意是说加号和减号是可结合的。 - bjg
他的意思是 (a + b) - c = a + (b - c),对于加减运算,括号没有意义(忽略浮点运算的舍入误差)。 - vickirk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接