Question

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?

Était-ce utile?

La solution

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top