-1

如何扩展中缀和堆栈优先级以包括运算符<, >, <=, >=, ==, !=, !, &&, 和||?

在解析中缀表达式时,例如:P + (Q – F) / Y#,每个符号都有一个与其操作顺序相关的优先级。/并且*具有比+和更高的优先级-

以下是我拥有/理解的优先事项:

Priority * / + - ( )   #

Infix    2 2 1 1 3 0   0 

Stack    2 2 1 1 0 n/a 0
4

1 回答 1

1

这取决于你想要什么优先级,对吧?除非您以特定语言询问优先级(如果是,请详细说明)。

无论如何,<、>、<= 和 >= 不适用于布尔值,== 和 != 适用于任何东西,而 !、&& 和 || 仅适用于布尔值。但是它们都返回布尔值,所以你想先应用那些不适用于布尔值的,然后应用那些可能适用于布尔值的,最后是那些只适用于布尔值的。至于最后一个,!优先于 && 和 ||。虽然没有必要,但我会让 && 优先于 ||,因为某些逻辑符号就是这样工作的。

所以优先级最终会是:

(
* /
+ -
< > <= >=
== !=
!
&&
||
) #
于 2009-01-08T21:23:54.857 回答