三目运算符是右结合的,所以 a ? b : c ? d : e将按a ? b : (c ? d : e)执行。
如果没有结合性,a ? b : c ? d : e既可以理解成 a ? b : (c ? d : e) 也可以理解成 (a?b:c)?d:e。
从文法推导理解结合性,右结合对应最左推导,左结合对应最右推导。
从语法树上理解结合性,先计算最右边的,左结合先计算最左边的。
比如,给定文法 E=E+E|id
,句子 a+b+c
左结合性下(最右推导),理解为(a+b)+c
E-->E+E
-->E+c
-->E+E+c
-->E+b+c
-->a+b+c
右结合性(最左推导),理解为 a+(b+c)
E-->E+E
-->a+E
-->a+E+E
-->a+b+E
-->a+b+c