三目运算符

mac2025-09-06  9

三目运算符是右结合的,所以 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
最新回复(0)