为什么使用 `=` 文字而不是部分 `AssignmentOperator` 符号为赋值运算符指定单独的产生式
Why specify a separate production for assignment operator with `=` literal instead of part `AssignmentOperator` symbol
AssignmentExpression 的 EcmaScript 语法指定如下:
AssignmentExpression :
ConditionalExpression
YieldExpression
ArrowFunction
AsyncArrowFunction
LeftHandSideExpression = AssignmentExpression <-------------- here
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentOperator : one of
*= /= %= += -= <<= >>= >>>= &= ^= |= **=
我想知道将 LeftHandSideExpression = AssignmentExpression
指定为单独的作品而不是简单地将 =
包含在 AssignmentOperator
中的理由是什么?
如果合并两个产生式,语法将完全等效。
但是,规范后面的几个地方对这两个作品进行了不同的处理。例如在语法之后的静态语义部分,然后是解构赋值部分,它只适用于 =
产生式。
如果这两个作品是一个作品,那么引用它们的短语就必须更加尴尬,例如“LeftHandSideExpression AssignmentOperator AssignmentExpression
when the AssignmentOperator
is =
”。
所以大概这两个作品是分开写的,所以在文本中分开讨论它们会更容易也不会造成混淆。
AssignmentExpression 的 EcmaScript 语法指定如下:
AssignmentExpression :
ConditionalExpression
YieldExpression
ArrowFunction
AsyncArrowFunction
LeftHandSideExpression = AssignmentExpression <-------------- here
LeftHandSideExpression AssignmentOperator AssignmentExpression
AssignmentOperator : one of
*= /= %= += -= <<= >>= >>>= &= ^= |= **=
我想知道将 LeftHandSideExpression = AssignmentExpression
指定为单独的作品而不是简单地将 =
包含在 AssignmentOperator
中的理由是什么?
如果合并两个产生式,语法将完全等效。
但是,规范后面的几个地方对这两个作品进行了不同的处理。例如在语法之后的静态语义部分,然后是解构赋值部分,它只适用于 =
产生式。
如果这两个作品是一个作品,那么引用它们的短语就必须更加尴尬,例如“LeftHandSideExpression AssignmentOperator AssignmentExpression
when the AssignmentOperator
is =
”。
所以大概这两个作品是分开写的,所以在文本中分开讨论它们会更容易也不会造成混淆。