Javascript EcmaScript语法中的[Yield、wait、In、Return]是什么

Javascript EcmaScript语法中的[Yield、wait、In、Return]是什么,javascript,ecmascript-6,compiler-construction,context-free-grammar,Javascript,Ecmascript 6,Compiler Construction,Context Free Grammar,EcmaScript中的许多产品都带有以下“修饰符”: 以下是几个例子: ArrayLiteral[Yield, Await]: ... ElementList[Yield, Await]: ... AssignmentExpression[+In, ?Yield, ?Await] 我已经在规范中搜索了解释,特别是语法符号部分,但没有找到它。它应该在那里。有人能给我指一下相关的段落,也许能给我一个简短的解释吗?- 一个产品可以通过“[parameters]”形式的下标注释进行参数化,该

EcmaScript中的许多产品都带有以下“修饰符”:

以下是几个例子:

ArrayLiteral[Yield, Await]:
  ...

ElementList[Yield, Await]:
 ... AssignmentExpression[+In, ?Yield, ?Await]
我已经在规范中搜索了解释,特别是
语法符号
部分,但没有找到它。它应该在那里。有人能给我指一下相关的段落,也许能给我一个简短的解释吗?

-

一个产品可以通过“[parameters]”形式的下标注释进行参数化,该注释可以作为产品定义的非终端符号的后缀出现。“参数”可以是单个名称,也可以是逗号分隔的名称列表。参数化产品是一组产品的简写,这些产品定义了参数名称的所有组合,前面加下划线,并附加到参数化非终端符号。这意味着:

StatementList[Return]: ReturnStatement ExpressionStatement 语句列表[返回]: 返回声明 表达陈述 是一个方便的缩写,用于:

StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement StatementList_In: ReturnStatement ExpressionStatement StatementList_Return_In: ReturnStatement ExpressionStatement 声明列表: 返回声明 表达陈述 语句列表返回: 返回声明 表达陈述 而且:

StatementList[Return, In]: ReturnStatement ExpressionStatement 语句列表[返回,输入]: 返回声明 表达陈述 是以下内容的缩写:

StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement StatementList: ReturnStatement ExpressionStatement StatementList_Return: ReturnStatement ExpressionStatement StatementList_In: ReturnStatement ExpressionStatement StatementList_Return_In: ReturnStatement ExpressionStatement 声明列表: 返回声明 表达陈述 语句列表返回: 返回声明 表达陈述 语句列表\u位于: 返回声明 表达陈述 语句列表\返回\输入: 返回声明 表达陈述 多个参数产生组合数量的产品,而不是所有产品都必须在完整的语法中引用

它继续讨论参数化右侧,添加“opt”等等

(在搜索时,不要只查找
[Return]
,因为它们可以而且通常会出现在
[Yield,wait,Return]
[Yield,?wait,?Return]
等组中,就像的语法一样。)

-

如果此产品具有[Yield]参数且标识符的StringValue为“Yield”,则这是一个语法错误

如果此产品具有[Await]参数且标识符的StringValue为“Await”,则这是一个语法错误

-

需要[In]语法参数,以避免将关系表达式中的
In
运算符与
for
语句中的
In
运算符混淆


第5.1.5节,“语法符号”。请参阅@rici,非常感谢您的链接!谢谢,你能解释一下这是什么意思吗
AssignmentExpression[+In,?Yield,?wait]
?为什么在引用非终端
赋值表达式
?@AngularInDepth.com时会出现
+
:这些都在第5.1.5节中进行了解释。好的,谢谢,如果我不是英语母语人士,我会仔细阅读并回答一个澄清问题。要理解上面的5.1介绍,对我来说太难了……@太妃糖-甚至对以英语为母语的人来说也很难!:-)我建议发布一个问题,提及上面引用的部分(甚至可能引用它),也可能提及这个答案,并具体说出你不理解的内容。希望有人能以一种有助于你——以及你之后的其他人——的方式解释这一部分。:-)