为什么使用`=`literal而不是part'reignmentOperator`符号为赋值运算符指定单独的生成

时间:2017-10-14 11:48:57

标签: javascript ecmascript-6 context-free-grammar compiler-construction

AssignmentExpression的EcmaScript语法指定以下内容:

p->_down = element;

我想知道将AssignmentExpression : ConditionalExpression YieldExpression ArrowFunction AsyncArrowFunction LeftHandSideExpression = AssignmentExpression <-------------- here LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentOperator : one of *= /= %= += -= <<= >>= >>>= &= ^= |= **= 指定为单独制作而不是简单地将LeftHandSideExpression = AssignmentExpression加入=背后的理由是什么?

1 个答案:

答案 0 :(得分:4)

如果两部作品合并,那么语法将是完全等效的。

然而,在规范的后面有几个地方,两个制作的处理方式不同。例如,在语法之后的静态语义部分中,然后在“解构分配”部分中,这仅适用于=生成。

如果这两个作品都是一个,那么引用它们的短语就会更加尴尬,例如“LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentOperator=”。

所以推测这两部作品是分开写下来的,所以在文中单独讨论它们会更容易,更容易混淆。