我对以下规范规则感到困惑。为什么“ AdditiveExpression”应由另一个“ AdditiveExpression”和“ MultiplicativeExpression”组成?
如以下规则所述,我们应该首先在左侧评估“ AdditiveExpression”,在右侧评估“ MultiplicativeExpression”,但是如果操作数的右侧不是“ MultiplicativeExpression”的评估,那么该规则应该怎么做?一个“ AdditiveExpression”?
最佳答案
语法表明+
的正确操作数必须是MultiplicativeExpression。如果不是,则会出现语法错误,并且不会评估任何内容。
例如,表达式1 + 2 + 3
的解析如下:1
是NumericLiteral
,这是Literal
,是PrimaryExpression
。PrimaryExpression
是MemberExpression
,是NewExpression
,是LeftHandSideExpression
,是UpdateExpression
,是UnaryExpression
,是ExponentiationExpression
,是MultiplicativeExpression
>。MultiplicativeExpression
是AdditiveExpression
。+
是... +
。2
是NumericLiteral
,根据上面列出的链,它是MultiplicativeExpression
。
此时,规则AdditiveExpression : AdditiveExpression + MultiplicativeExpression
(在您的问题中引用)匹配:1 + 2
被解析为AdditiveExpression
。
我们还有另一个+
,就是+
。3
是NumericLiteral
,根据上面列出的链,它是MultiplicativeExpression
。
现在,AdditiveExpression : AdditiveExpression + MultiplicativeExpression
再次适用(1 + 2
是AdditiveExpression
,3
是MultiplicativeExpression
)。
现在整个都是一个AdditiveExpression
。