Ecmascript 6 ECMAScript符号语法的含义?

Ecmascript 6 ECMAScript符号语法的含义?,ecmascript-6,ecmascript-next,Ecmascript 6,Ecmascript Next,我对如何正确阅读感到困惑 为什么IdentifierName是用identiername定义的 为什么在定义的中间有一个新的行< /强>? 怎么读这个符号 语法 IdentifierName :: IdentifierStart IdentifierName IdentifierPart 标识名:: 标识开始 IdentifierName IdentifierPart 这是一个递归定义,在语法符号中并不少见 IdentifierName由IdentifierSta

我对如何正确阅读感到困惑

  • 为什么
    IdentifierName
    是用
    identiername
    定义的
  • 为什么在定义的中间有一个<强>新的行< /强>?
怎么读这个符号

语法

IdentifierName :: IdentifierStart IdentifierName IdentifierPart 标识名:: 标识开始 IdentifierName IdentifierPart
这是一个递归定义,在语法符号中并不少见

IdentifierName
IdentifierStart
IdentifierName IdentifierPart
组成。如果我们在第二个备选方案中再次展开
IdentifierName
,我们将得到

IdentifierStart IdentifierPart
IdentifierName IdentifierPart IdentifierPart
等等

要以非正式的方式表达这一点:
IdentifierName
IdentifierStart
组成,后跟任意数量的
IdentifierPart
s


从:

另一个例子是,语法定义:

ArgumentList:
  AssignmentExpression
  ArgumentList,AssignmentExpression
声明
参数列表
可以表示单个
赋值表达式
参数列表
,后跟逗号,后跟
赋值表达式
ArgumentList
的这个定义是递归的,也就是说,它是根据自身定义的。结果是,
参数列表
可能包含任何正数的参数,用逗号分隔,其中每个参数表达式都是
赋值表达式
。这种非终结符的递归定义很常见


这是一个递归定义,在语法符号中并不少见

IdentifierName
IdentifierStart
IdentifierName IdentifierPart
组成。如果我们在第二个备选方案中再次展开
IdentifierName
,我们将得到

IdentifierStart IdentifierPart
IdentifierName IdentifierPart IdentifierPart
等等

要以非正式的方式表达这一点:
IdentifierName
IdentifierStart
组成,后跟任意数量的
IdentifierPart
s


从:

另一个例子是,语法定义:

ArgumentList:
  AssignmentExpression
  ArgumentList,AssignmentExpression
声明
参数列表
可以表示单个
赋值表达式
参数列表
,后跟逗号,后跟
赋值表达式
ArgumentList
的这个定义是递归的,也就是说,它是根据自身定义的。结果是,
参数列表
可能包含任何正数的参数,用逗号分隔,其中每个参数表达式都是
赋值表达式
。这种非终结符的递归定义很常见


你的意思是我们得到了IdentifierStart IdentifierStart IdentifierName IdentifierPart IdentifierPart,对吗?不。我可能写得不够清楚:
IdentifierName IdentifierPart
扩展到
IdentifierStart IdentifierPart
IdentifierName->IdentifierStart
)或者到
IdentifierName IdentifierPart IdentifierPart
IdentifierName->IdentifierName IdentifierPart
)的。您的意思是我们得到IdentifierStart IdentifierStart IdentifierName IdentifierPart,是吗?没有。我可能写得不够清楚:
IdentifierName IdentifierPart
扩展到
IdentifierStart IdentifierPart
IdentifierName->IdentifierStart
)或
IdentifierName IdentifierPart
IdentifierName->IdentifierName IdentifierPart
)。