Disambiguation of expressions with neighboring ope

2019-05-25 03:29发布

Say I have an expression as follows (where and are binary operators which have the same precedence level but not the same associativity):

x ⨁ y ⨂ z

Would y belong to or , and based on what criteria?

1条回答
等我变得足够好
2楼-- · 2019-05-25 04:11

According to the Edsgar Dijkstra's Shunting-yard algorithm if neighboring two operators in an expressions have the same precedence level then the expression is disambiguated based on the associativity of the second operator.

  1. If the second operator is left associative then the operand belongs to the first operator.
  2. If the second operator is right associative then the operand belongs to the second operator.

Case 1: is left associative. The expression evaluates to:

(x ⨁ y) ⨂ z

Case 2: is right associative. The expression evaluates to:

x ⨁ (y ⨂ z)
查看更多
登录 后发表回答