Warning:
This wiki has been archived and is now read-only.

ES6/annex

From HTML5 Chinese Interest Group Wiki
< ES6
Jump to: navigation, search

附录 A 文法摘要

当前本章节的资料来源 是线上版的 ECMAScript6 由各章节的文法,于 2013-01-17 更新。因此,请注意:最新版的 ES6 的 AnnexA 都还是未整理的状态,各章节尚未完成的也不少,因此这里的内容都仅供参考。请透过右边 "English" 链接关注原文的内容。 所有图示是各式个样的注解,原文并没有这些东西。
Error creating thumbnail: Unable to save thumbnail to destination
是这一版的新语法。 无法保证定期更新本章节,还希望吸引新血 :) 可以参考规范更动纪录更新。

A.1 词法

   SourceCharacter ::
       任意 Unicode 编码单元 
   InputElementDiv ::
       WhiteSpace
       LineTerminator
       Comment
       Token
       DivPunctuator
       RightBracePunctuator
   InputElementRegExp ::
       WhiteSpace
       LineTerminator
       Comment
       Token
       RightBracePunctuator
       RegularExpressionLiteral
InputElementTemplateTail
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       WhiteSpace
       LineTerminator
       Comment
       Token
       DivPunctuator
       TemplateSubstitutionTail
   WhiteSpace ::
       <TAB>
       <VT>
       <FF>
       <SP>
       <NBSP>
       <BOM>
       <USP>
   LineTerminator ::
       <LF>
       <CR>
       <LS>
       <PS>
   LineTerminatorSequence ::
       <LF>
       <CR> [lookahead ∉ <LF> ]
       <LS>
       <PS>
       <CR> <LF>
   Comment ::
       MultiLineComment
       SingleLineComment
   MultiLineComment ::
       /* MultiLineCommentCharsopt */
   MultiLineCommentChars ::
       MultiLineNotAsteriskChar MultiLineCommentCharsopt
       * PostAsteriskCommentCharsopt
   PostAsteriskCommentChars ::
       MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentCharsopt
       * PostAsteriskCommentCharsopt
   MultiLineNotAsteriskChar ::
       SourceCharacter 但非 星号 *
   MultiLineNotForwardSlashOrAsteriskChar ::
       SourceCharacter 但非 正斜杠 / 或 星号 *
   SingleLineComment ::
       // SingleLineCommentCharsopt
   SingleLineCommentChars ::
       SingleLineCommentChar SingleLineCommentCharsopt
   SingleLineCommentChar ::
       SourceCharacter 但非 LineTerminator
   Token ::
       IdentifierName
       Punctuator
NumericLiteral
Error creating thumbnail: Unable to save thumbnail to destination
       StringLiteral
Template
Error creating thumbnail: Unable to save thumbnail to destination
   Identifier ::
       IdentifierName 但非 ReservedWord
   IdentifierName ::
       IdentifierStart
       IdentifierName IdentifierPart
   IdentifierStart ::
       UnicodeIDStart
       $
       _
       \ UnicodeEscapeSequence
   IdentifierPart ::
       UnicodeIDContinue
       $
       _
       \ UnicodeEscapeSequence
       <ZWNJ>
       <ZWJ>
   UnicodeIDStart ::
任何具有 Unicode 属性 “ID_Start” 的 Unicode 字符。
Error creating thumbnail: Unable to save thumbnail to destination
   UnicodeIDContinue ::
任何具有 Unicode 属性 “ID_Continue” 的 Unicode 字符。
Error creating thumbnail: Unable to save thumbnail to destination
   ReservedWord ::
       Keyword
       FutureReservedWord
       NullLiteral
       BooleanLiteral
   Keyword :: 以下之一
       break delete import this
       case do in throw
       catch else instanceof try
class export let typeof
Error creating thumbnail: Unable to save thumbnail to destination
       continue finally new var
       const for return void
       debugger function super while
       default if switch with
   FutureReservedWord :: 以下之一
       enum extends
       或在严格模式下以下之一 
implements private public yield
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
       interface package protected static
   Punctuator :: 以下之一
       { ( ) [ ]
. ; , < > <=
Error creating thumbnail: Unable to save thumbnail to destination
       >= == != === !==
       + - * % ++ --
       << >> >>> & | ^
       ! ~ && || ? :
       = += -= *= %= <<=
>>= >>>= &= |= ^= =>
Error creating thumbnail: Unable to save thumbnail to destination
   DivPunctuator :: 以下之一
       / /=
RightBracePunctuator
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       }
   NullLiteral ::
       null
   BooleanLiteral ::
       true
       false
   NumericLiteral ::
       DecimalLiteral
BinaryIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
OctalIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
       HexIntegerLiteral
   DecimalLiteral ::
       DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
       . DecimalDigits ExponentPartopt
       DecimalIntegerLiteral ExponentPartopt
   DecimalIntegerLiteral ::
       0
       NonZeroDigit DecimalDigitsopt
   DecimalDigits ::
       DecimalDigit
       DecimalDigits DecimalDigit
   DecimalDigit :: 以下之一
       0 1 2 3 4 5 6 7 8 9
   NonZeroDigit :: 以下之一
       1 2 3 4 5 6 7 8 9
   ExponentPart ::
       ExponentIndicator SignedInteger
   ExponentIndicator :: 以下之一
       e E
   SignedInteger ::
       DecimalDigits
       + DecimalDigits
       - DecimalDigits
BinaryIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       0b BinaryDigit
       0B BinaryDigit
       BinaryIntegerLiteral BinaryDigit
BinaryDigit
Error creating thumbnail: Unable to save thumbnail to destination
 :: 以下之一
       0 1
OctalIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       0o OctalDigit
       0O OctalDigit
       OctalIntegerLiteral OctalDigit
OctalDigit
Error creating thumbnail: Unable to save thumbnail to destination
 :: 以下之一
       0 1 2 3 4 5 6 7
HexIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       0x HexDigits
       0X HexDigits
   HexDigits ::
       HexDigit        
       HexDigits HexDigit
   HexDigit :: 以下之一
       0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F
   StringLiteral ::
       " DoubleStringCharactersopt "
       ' SingleStringCharactersopt '
   DoubleStringCharacters ::
       DoubleStringCharacter DoubleStringCharactersopt
   SingleStringCharacters ::
       SingleStringCharacter SingleStringCharactersopt
   DoubleStringCharacter ::
       SourceCharacter 但非 "\LineTerminator
       \ EscapeSequence
       LineContinuation
   SingleStringCharacter ::
       SourceCharacter 但非 "\LineTerminator
       \ EscapeSequence
       LineContinuation
   LineContinuation ::
       \ LineTerminatorSequence
   EscapeSequence ::
       CharacterEscapeSequence
       0 [lookahead ∉ DecimalDigit]
       HexEscapeSequence
       UnicodeEscapeSequence
   CharacterEscapeSequence ::
       SingleEscapeCharacter
       NonEscapeCharacter
   SingleEscapeCharacter :: 以下之一
       ' " \ b f n r t v
   NonEscapeCharacter ::
       SourceCharacter 但非 EscapeCharacterLineTerminator
   EscapeCharacter ::
       SingleEscapeCharacter
       DecimalDigit
       x
       u
   HexEscapeSequence ::
       x HexDigit HexDigit
   UnicodeEscapeSequence ::
       u HexDigit HexDigit HexDigit HexDigit
u{ HexDigits }
Error creating thumbnail: Unable to save thumbnail to destination
   RegularExpressionLiteral ::
       / RegularExpressionBody / RegularExpressionFlags
   RegularExpressionBody ::
       RegularExpressionFirstChar RegularExpressionChars
   RegularExpressionChars ::
       [empty]
       RegularExpressionChars RegularExpressionChar
   RegularExpressionFirstChar ::
       RegularExpressionNonTerminator 但非 *\/[
       RegularExpressionBackslashSequence
       RegularExpressionClass
   RegularExpressionChar ::
       RegularExpressionNonTerminator 但非 \/[
       RegularExpressionBackslashSequence
       RegularExpressionClass
   RegularExpressionBackslashSequence ::
       \ RegularExpressionNonTerminator
   RegularExpressionNonTerminator ::
       SourceCharacter 但非 LineTerminator
   RegularExpressionClass ::
       [ RegularExpressionClassChars ]
   RegularExpressionClassChars ::
       [empty]
       RegularExpressionClassChars RegularExpressionClassChar
   RegularExpressionClassChar ::
       RegularExpressionNonTerminator 但非 ]\
       RegularExpressionBackslashSequence
   RegularExpressionFlags ::
       [empty]
       RegularExpressionFlags IdentifierPart
Template
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       NoSubstitutionTemplate
       TemplateHead
NoSubstitutionTemplate
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       ` TemplateCharactersopt `
TemplateHead
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       ` TemplateCharactersopt ${
TemplateSubstitutionTail
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       TemplateMiddle
       TemplateTail
TemplateMiddle
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       } TemplateCharactersopt ${
TemplateTail
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       } TemplateCharactersopt `
TemplateCharacters
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       TemplateCharacter TemplateCharactersopt
TemplateCharacter
Error creating thumbnail: Unable to save thumbnail to destination
 ::
       SourceCharacter 但非 `\$
       $ [lookahead ∉ {{} ]
       \ EscapeSequence
       LineContinuation

A.2 数字转换

   StringNumericLiteral :::
       StrWhiteSpaceopt
       StrWhiteSpaceopt StrNumericLiteral StrWhiteSpaceopt
   StrWhiteSpace :::
       StrWhiteSpaceChar StrWhiteSpaceopt
   StrWhiteSpaceChar :::
       WhiteSpace
       LineTerminator
   StrNumericLiteral :::
       StrDecimalLiteral
       HexIntegerLiteral
   StrDecimalLiteral :::
       StrUnsignedDecimalLiteral
       + StrUnsignedDecimalLiteral
       - StrUnsignedDecimalLiteral
   StrUnsignedDecimalLiteral :::
       Infinity
       DecimalDigits . DecimalDigitsopt ExponentPartopt
       . DecimalDigits ExponentPartopt
       DecimalDigits ExponentPartopt
DecimalDigits
Error creating thumbnail: Unable to save thumbnail to destination
 ::: 以下之一
       DecimalDigit
       DecimalDigits DecimalDigit
   DecimalDigit ::: 以下之一
       0 1 2 3 4 5 6 7 8 9
   ExponentPart :::
       ExponentIndicator SignedInteger
   ExponentIndicator ::: 以下之一
       e E
   SignedInteger :::
       DecimalDigits
       + DecimalDigits
       - DecimalDigits
   HexIntegerLiteral :::
       0x HexDigit
       0X HexDigit
       HexIntegerLiteral HexDigit
   HexDigit ::: 以下之一
       0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F

A.3 表达式

   PrimaryExpression :
       this
       Identifier
       Literal
       ArrayInitialiser
       ObjectLiteral
       FunctionExpression
ClassExpression
Error creating thumbnail: Unable to save thumbnail to destination
GeneratorExpression
Error creating thumbnail: Unable to save thumbnail to destination
GeneratorComprehension
Error creating thumbnail: Unable to save thumbnail to destination
       RegularExpressionLiteral
TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
CoverParenthesizedExpressionAndArrowParameterList
Error creating thumbnail: Unable to save thumbnail to destination
   CoverParenthesizedExpressionAndArrowParameterList :
       ( Expression )
       ( )
       ( ... Identifier )
       ( Expression , ... Identifier )
   ParenthesizedExpression产生式 PrimaryExpression : CoverParenthesized... 中在 CoverParenthesizedExpressionAndArrowParameterList 上用的补充语法 :
       ( Expression )
   Literal :
       NullLiteral
       ValueLiteral
   ValueLiteral :
       BooleanLiteral
       NumericLiteral
       StringLiteral
   ArrayInitialiser :
       ArrayLiteral
ArrayComprehension
Error creating thumbnail: Unable to save thumbnail to destination
   ArrayLiteral :
       [ Elisionopt ]
       [ ElementList ]
       [ ElementList , Elisionopt ]
   ElementList :
       Elisionopt AssignmentExpression
Elisionopt SpreadElement
Error creating thumbnail: Unable to save thumbnail to destination
       ElementList , Elisionopt AssignmentExpression
ElementList , Elisionopt SpreadElement
Error creating thumbnail: Unable to save thumbnail to destination
   Elision :
       ,
       Elision ,
SpreadElement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ... AssignmentExpression
ArrayComprehension
Error creating thumbnail: Unable to save thumbnail to destination
 :
       [ AssignmentExpression ComprehensionForList ]
       [ AssignmentExpression ComprehensionForList if Expression ]
ComprehensionForList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ComprehensionFor
       ComprehensionForList ComprehensionFor
ComprehensionFor
Error creating thumbnail: Unable to save thumbnail to destination
 :
       for ForBinding of Expression
ForBinding
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingIdentifier
       BindingPattern
   ObjectLiteral :
       { }
       { PropertyDefinitionList }
       { PropertyDefinitionList , }
   PropertyDefinitionList :
       PropertyDefinition
       PropertyDefinitionList , PropertyDefinition
   PropertyDefinition :
IdentifierName
Error creating thumbnail: Unable to save thumbnail to destination
CoverInitialisedName
Error creating thumbnail: Unable to save thumbnail to destination
       PropertyName : AssignmentExpression
       MethodDefinition
   PropertyName :
       IdentifierName
       StringLiteral
NumericLiteral
Error creating thumbnail: Unable to save thumbnail to destination
CoverInitialisedName
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
 :
       IdentifierName Initialiser
   Initialiser :
       = AssignmentExpression
GeneratorComprehension
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ( Expression ComprehensionForList )
       ( Expression ComprehensionForList if Expression )
TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
 :
       NoSubstitutionTemplate
TemplateHead Expression
Error creating thumbnail: Unable to save thumbnail to destination
[Lexical goal InputElementTemplateTail ] TemplateSpans TemplateSpans
Error creating thumbnail: Unable to save thumbnail to destination
 :
       TemplateTail
       TemplateMiddleList [Lexical goal InputElementTemplateTail ] TemplateTail
TemplateMiddleList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       TemplateMiddle Expression
       TemplateMiddleList [Lexical goal InputElementTemplateTail ] TemplateMiddle Expression
   MemberExpression :
       [Lexical goal InputElementRegExp ] PrimaryExpression
       MemberExpression [ Expression ]
       MemberExpression . IdentifierName
MemberExpression TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
super [ Expression ]
Error creating thumbnail: Unable to save thumbnail to destination
super . IdentifierName
Error creating thumbnail: Unable to save thumbnail to destination
       new MemberExpression Arguments
   NewExpression :
       MemberExpression
       new NewExpression
CallExpression
Error creating thumbnail: Unable to save thumbnail to destination
 :
       MemberExpression Arguments
super Arguments
Error creating thumbnail: Unable to save thumbnail to destination
       CallExpression Arguments
       CallExpression [ Expression ]
       CallExpression . IdentifierName
CallExpression TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
   Arguments :
       ( )
       ( ArgumentList )
   ArgumentList :
       AssignmentExpression
... AssignmentExpression
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
       ArgumentList , AssignmentExpression
ArgumentList , ... AssignmentExpression
Error creating thumbnail: Unable to save thumbnail to destination
   LeftHandSideExpression :
       NewExpression
       CallExpression
   PostfixExpression :
       LeftHandSideExpression
       LeftHandSideExpression [no LineTerminator here] ++
       LeftHandSideExpression [no LineTerminator here] --
   UnaryExpression :
       PostfixExpression
       delete UnaryExpression
       void UnaryExpression
       typeof UnaryExpression
       ++ UnaryExpression
       -- UnaryExpression
       + UnaryExpression
       - UnaryExpression
       ~ UnaryExpression
       ! UnaryExpression
   MultiplicativeExpression :
       UnaryExpression
       MultiplicativeExpression * UnaryExpression
       MultiplicativeExpression / UnaryExpression
       MultiplicativeExpression % UnaryExpression
   AdditiveExpression :
       MultiplicativeExpression
       AdditiveExpression + MultiplicativeExpression
       AdditiveExpression - MultiplicativeExpression
   ShiftExpression :
       AdditiveExpression
       ShiftExpression << AdditiveExpression
       ShiftExpression >> AdditiveExpression
       ShiftExpression >>> AdditiveExpression
   RelationalExpression :
       ShiftExpression
       RelationalExpression < ShiftExpression
       RelationalExpression > ShiftExpression
       RelationalExpression <= ShiftExpression
       RelationalExpression >= ShiftExpression
       RelationalExpression instanceof ShiftExpression
       RelationalExpression in ShiftExpression
   RelationalExpressionNoIn :
       ShiftExpression
       RelationalExpressionNoIn < ShiftExpression
       RelationalExpressionNoIn > ShiftExpression
       RelationalExpressionNoIn <= ShiftExpression
       RelationalExpressionNoIn >= ShiftExpression
       RelationalExpressionNoIn instanceof ShiftExpression
   EqualityExpression :
       RelationalExpression
       EqualityExpression == RelationalExpression
       EqualityExpression != RelationalExpression
       EqualityExpression === RelationalExpression
       EqualityExpression !== RelationalExpression
EqualityExpression [no LineTerminator here] is RelationalExpression
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
EqualityExpression [no LineTerminator here] isnt RelationalExpression
Error creating thumbnail: Unable to save thumbnail to destination
   EqualityExpressionNoIn :
       RelationalExpressionNoIn
       EqualityExpressionNoIn == RelationalExpressionNoIn
       EqualityExpressionNoIn != RelationalExpressionNoIn
       EqualityExpressionNoIn === RelationalExpressionNoIn
       EqualityExpressionNoIn !== RelationalExpressionNoIn
EqualityExpression
Error creating thumbnail: Unable to save thumbnail to destination
[no LineTerminator here] is RelationalExpression
Error creating thumbnail: Unable to save thumbnail to destination
EqualityExpression [no LineTerminator here] isnt RelationalExpression
Error creating thumbnail: Unable to save thumbnail to destination
   BitwiseANDExpression :
       EqualityExpression
       BitwiseANDExpression & EqualityExpression
   BitwiseANDExpressionNoIn :
       EqualityExpressionNoIn
       BitwiseANDExpressionNoIn & EqualityExpressionNoIn
   BitwiseXORExpression :
       BitwiseANDExpression
       BitwiseXORExpression ^ BitwiseANDExpression
   BitwiseXORExpressionNoIn :
       BitwiseANDExpressionNoIn
       BitwiseXORExpressionNoIn ^ BitwiseANDExpressionNoIn
   BitwiseORExpression :
       BitwiseXORExpression
       BitwiseORExpression | BitwiseXORExpression
   BitwiseORExpressionNoIn :
       BitwiseXORExpressionNoIn
       BitwiseORExpressionNoIn | BitwiseXORExpressionNoIn
   LogicalANDExpression :
       BitwiseORExpression
       LogicalANDExpression && BitwiseORExpression
   LogicalANDExpressionNoIn :
       BitwiseORExpressionNoIn
       LogicalANDExpressionNoIn && BitwiseORExpressionNoIn
   LogicalORExpression :
       LogicalANDExpression
       LogicalORExpression || LogicalANDExpression
   LogicalORExpressionNoIn :
       LogicalANDExpressionNoIn
       LogicalORExpressionNoIn || LogicalANDExpressionNoIn
   ConditionalExpression :
       LogicalORExpression
       LogicalORExpression ? AssignmentExpression : AssignmentExpression
   ConditionalExpressionNoIn :
       LogicalORExpressionNoIn
       LogicalORExpressionNoIn ? AssignmentExpression : AssignmentExpressionNoIn
   AssignmentExpression :
       ConditionalExpression
YieldExpression
Error creating thumbnail: Unable to save thumbnail to destination
ArrowFunction
Error creating thumbnail: Unable to save thumbnail to destination
LeftHandSideExpression = AssignmentExpression
Error creating thumbnail: Unable to save thumbnail to destination
       LeftHandSideExpression AssignmentOperator AssignmentExpression
   AssignmentExpressionNoIn :
       ConditionalExpressionNoIn
       YieldExpression
       ArrowFunction
       LeftHandSideExpression = AssignmentExpressionNoIn
       LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn
   AssignmentOperator : 以下之一
       *= /= %= += -= <<= >>= >>>= &= ^= |=
AssignmentPattern产生式 AssignmentExpression : LeftHandSideExpression = AssignmentExpression 中在 LeftHandSideExpression 上用的补充语法
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ObjectAssignmentPattern
       ArrayAssignmentPattern
ObjectAssignmentPattern
Error creating thumbnail: Unable to save thumbnail to destination
 :
       { }
       { AssignmentPropertyList }
       { AssignmentPropertyList , }
ArrayAssignmentPattern
Error creating thumbnail: Unable to save thumbnail to destination
 :
       [ Elisionopt AssignmentRestElementopt ]
       [ AssignmentElementList ]
       [ AssignmentElementList , Elisionopt AssignmentRestElementopt ]
AssignmentPropertyList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       AssignmentProperty
       AssignmentPropertyList , AssignmentProperty
AssignmentElementList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       Elisionopt AssignmentElement
       AssignmentElementList , Elisionopt AssignmentElement
AssignmentProperty
Error creating thumbnail: Unable to save thumbnail to destination
 :
       Identifier Initialiseropt
PropertyName : AssignmentElement
Error creating thumbnail: Unable to save thumbnail to destination
AssignmentElement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       DestructuringAssignmentTarget Initialiseropt
AssignmentRestElement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ... DestructuringAssignmentTarget
DestructuringAssignmentTarget
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LeftHandSideExpression
   Expression :
       AssignmentExpression
       Expression , AssignmentExpression
   ExpressionNoIn :
       AssignmentExpressionNoIn
       ExpressionNoIn , AssignmentExpressionNoIn

A.4 语句

   Statement :
       BlockStatement
       VariableStatement
       EmptyStatement
       ExpressionStatement
       IfStatement
       BreakableStatement
       ContinueStatement
       BreakStatement
       ReturnStatement
       WithStatement
       LabelledStatement
       ThrowStatement
       TryStatement
       DebuggerStatement
   Declaration :
       FunctionDeclaration
GeneratorDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
ClassDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
LexicalDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
   BreakableStatement :
       IterationStatement
       SwitchStatement
   BlockStatement :
       Block
   Block :
       { StatementListopt }
   StatementList :
       StatementListItem
       StatementList StatementListItem
   StatementListItem :
       Statement
Declaration
Error creating thumbnail: Unable to save thumbnail to destination
LexicalDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LetOrConst BindingList ;
LexicalDeclarationNoIn
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LetOrConst BindingListNoIn
LetOrConst
Error creating thumbnail: Unable to save thumbnail to destination
 :
       let
       const
BindingList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LexicalBinding
       BindingList , LexicalBinding
BindingListNoIn
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LexicalBindingNoIn
       BindingListNoIn , LexicalBindingNoIn
LexicalBinding
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingIdentifier Initialiseropt
       BindingPattern Initialiser
LexicalBindingNoIn
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingIdentifier InitialiserNoInopt
       BindingPattern InitialiserNoIn
BindingIdentifier
Error creating thumbnail: Unable to save thumbnail to destination
 :
       Identifier
   InitialiserNoIn :
       = AssignmentExpressionNoIn
   VariableStatement :
       var VariableDeclarationList ;
   VariableDeclarationList :
       VariableDeclaration
       VariableDeclarationList , VariableDeclaration
   VariableDeclarationListNoIn :
       VariableDeclarationNoIn
       VariableDeclarationListNoIn , VariableDeclarationNoIn
   VariableDeclaration :
       BindingIdentifier Initialiseropt
BindingPattern Initialiser
Error creating thumbnail: Unable to save thumbnail to destination
   VariableDeclarationNoIn :
       BindingIdentifier InitialiserNoInopt
BindingPattern InitialiserNoIn
Error creating thumbnail: Unable to save thumbnail to destination
BindingPattern
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ObjectBindingPattern
       ArrayBindingPattern
ObjectBindingPattern
Error creating thumbnail: Unable to save thumbnail to destination
 :
       { }
       { BindingPropertyList }
       { BindingPropertyList , }
ArrayBindingPattern
Error creating thumbnail: Unable to save thumbnail to destination
 :
       [ Elisionopt BindingRestElementopt ]
       [ BindingElementList ]
       [ BindingElementList , Elisionopt BindingRestElementopt ]
BindingPropertyList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingProperty
       BindingPropertyList , BindingProperty
BindingElementList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       Elisionopt BindingElement
       BindingElementList , Elisionopt BindingElement
BindingProperty
Error creating thumbnail: Unable to save thumbnail to destination
 :
       SingleNameBinding
       PropertyName : BindingElement
   BindingElement :
       SingleNameBinding
BindingPattern Initialiseropt
Error creating thumbnail: Unable to save thumbnail to destination
   SingleNameBinding :
BindingIdentifier Initialiseropt
Error creating thumbnail: Unable to save thumbnail to destination
BindingRestElement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ... BindingIdentifier
   EmptyStatement :
       ;
   ExpressionStatement :
[lookahead ∉ {{, function, class}] Expression ;
Error creating thumbnail: Unable to save thumbnail to destination
   IfStatement :
       if ( Expression ) Statement else Statement
       if ( Expression ) Statement
   IterationStatement :
do Statement while ( Expression )
Error creating thumbnail: Unable to save thumbnail to destination
       while ( Expression ) Statement
for ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
       for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement
       for ( LexicalDeclarationNoIn ; Expressionopt ; Expressionopt ) Statement
for ( LeftHandSideExpression in Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
for ( var ForBinding in Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
for ( ForDeclaration in Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
for ( LeftHandSideExpression of Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
for ( var ForBinding of Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
for ( ForDeclaration of Expression ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
ForDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
 :
       LetOrConst ForBinding
ContinueStatement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       continue ;
       continue [no LineTerminator here] Identifier ;
   BreakStatement :
       break ;
       break [no LineTerminator here] Identifier ;
   ReturnStatement :
       return ;
       return [no LineTerminator here] Expression ;
   WithStatement :
       with ( Expression ) Statement
   SwitchStatement :
       switch ( Expression ) CaseBlock
   CaseBlock :
       { CaseClausesopt }
       { CaseClausesopt DefaultClause CaseClausesopt }
   CaseClauses :
       CaseClause
       CaseClauses CaseClause
   CaseClause :
       case Expression : StatementListopt
   DefaultClause :
       default : StatementListopt
   LabelledStatement :
       Identifier : Statement
   ThrowStatement :
       throw [no LineTerminator here] Expression ;
   TryStatement :
       try Block Catch
       try Block Finally
       try Block Catch Finally
   Catch :
       catch ( CatchParameter ) Block
   Finally :
       finally Block
CatchParameter
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingIdentifier
BindingPattern
Error creating thumbnail: Unable to save thumbnail to destination
   DebuggerStatement :
       debugger ;

A.5 函数和程序

   FunctionDeclaration :
       function BindingIdentifier ( FormalParameterList ) { FunctionBody }
   FunctionExpression :
       function BindingIdentifieropt ( FormalParameterList ) { FunctionBody }
   FormalParameterList :
       [empty]
FunctionRestParameter
Error creating thumbnail: Unable to save thumbnail to destination
       FormalsList
FormalsList , FunctionRestParameter
Error creating thumbnail: Unable to save thumbnail to destination
   FormalsList :
       FormalParameter
       FormalsList , FormalParameter
FunctionRestParameter
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ... BindingIdentifier
   FormalParameter :
       BindingElement
   FunctionBody :
       StatementListopt
ArrowFunction
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
 : ArrowParameters => ConciseBody
Error creating thumbnail: Unable to save thumbnail to destination
ArrowParameters
Error creating thumbnail: Unable to save thumbnail to destination
 :
       BindingIdentifier
       CoverParenthesizedExpressionAndArrowParameterList
ConciseBody
Error creating thumbnail: Unable to save thumbnail to destination
 :
       [lookahead ∉ {{}] AssignmentExpression
       { FunctionBody }
   ArrowFormalParameterList产生式 ArrowParameters : CoverParenthesized... 中在 CoverParenthesizedExpressionAndArrowParameterList 上用的补充语法 :
       ( FormalParameterList )
   MethodDefinition :
PropertyName ( FormalParameterList ) { FunctionBody }
Error creating thumbnail: Unable to save thumbnail to destination
* PropertyName ( FormalParameterList ) { FunctionBody }
Error creating thumbnail: Unable to save thumbnail to destination
       get PropertyName ( ) { FunctionBody }
       set PropertyName ( PropertySetParameterList ) { FunctionBody }
GeneratorDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
 :
       function * BindingIdentifier ( FormalParameterList ) { FunctionBody }
GeneratorExpression
Error creating thumbnail: Unable to save thumbnail to destination
 :
       function * BindingIdentifieropt ( FormalParameterList ) { FunctionBody }
YieldExpression
Error creating thumbnail: Unable to save thumbnail to destination
 : yield YieldDelegatoropt [Lexical goal InputElementRegExp ] AssignmentExpression
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
YieldDelegator
Error creating thumbnail: Unable to save thumbnail to destination
 :
       *
ClassDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
 :
       class BindingIdentifier ClassTail
ClassExpression
Error creating thumbnail: Unable to save thumbnail to destination
 :
       class BindingIdentifieropt ClassTail
ClassTail
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ClassHeritageopt { ClassBodyopt }
ClassHeritage
Error creating thumbnail: Unable to save thumbnail to destination
 :
       extends AssignmentExpression
ClassBody
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ClassElementList
ClassElementList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       ClassElement
       ClassElementList ClassElement
ClassElement
Error creating thumbnail: Unable to save thumbnail to destination
 :
       MethodDefinition
       ;
   Script :
       ScriptBodyopt
   ScriptBody :
Outer
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
       StatementList
OuterStatementList
Error creating thumbnail: Unable to save thumbnail to destination
 :
       OuterItem
       OuterStatementList OuterItem
OuterItem
Error creating thumbnail: Unable to save thumbnail to destination
 : ModuleDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
ImportDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
       StatementListItem

A.6 统一资源定位符字符分类

   uri :::
       uriCharactersopt
   uriCharacters :::
       uriCharacter uriCharactersopt
   uriCharacter :::
       uriReserved
       uriUnescaped
       uriEscaped
   uriReserved ::: 以下之一 
       ; / ? : @ & = + $ ,
   uriUnescaped :::
       uriAlpha
       DecimalDigit
       uriMark
   uriEscaped :::
       % HexDigit HexDigit
   uriAlpha ::: 以下之一 
       a b c d e f g h i j k l m n o p q r s t u v w x y z
       A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   uriMark ::: 以下之一
       - _ . ! ~ * ' ( )

A.7 正则表达式 

   Pattern ::
       Disjunction
   Disjunction ::
       Alternative
       Alternative | Disjunction
   Alternative ::
       [empty]
       Alternative Term
   Term ::
       Assertion
       Atom
       Atom Quantifier
   Assertion ::
       ^
       $
       \ b
       \ B
       ( ? = Disjunction )
       ( ? ! Disjunction )
   Quantifier ::
       QuantifierPrefix
       QuantifierPrefix ?
   QuantifierPrefix ::
       *
       +
       ?
       { DecimalDigits }
       { DecimalDigits , }
       { DecimalDigits , DecimalDigits }
   Atom ::
       PatternCharacter
       .
       \ AtomEscape
       CharacterClass
       ( Disjunction )
       ( ? : Disjunction )
   PatternCharacter ::
       SourceCharacter 但非以下之一
       ^ $ \ . * + ? ( ) [ ] { } |
   AtomEscape ::
       DecimalEscape
       CharacterEscape
       CharacterClassEscape
   CharacterEscape ::
       ControlEscape
       c ControlLetter
       HexEscapeSequence
       UnicodeEscapeSequence
       IdentityEscape
   ControlEscape :: 以下之一
       f n r t v
   ControlLetter :: 以下之一
       a b c d e f g h i j k l m n o p q r s t u v w x y z
       A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
   IdentityEscape ::
       SourceCharacter but not IdentifierPart
       <ZWJ>
       <ZWNJ>
   DecimalEscape ::
       DecimalIntegerLiteral [lookahead ∉ DecimalDigit]
   CharacterClassEscape :: 以下之一
       d D s S w W
   CharacterClass ::
       [ [lookahead ∉ {^}] ClassRanges ]
       [ ^ ClassRanges ]
   ClassRanges ::
       [empty]
       NonemptyClassRanges
   NonemptyClassRanges ::
       ClassAtom
       ClassAtom NonemptyClassRangesNoDash
       ClassAtom - ClassAtom ClassRanges
   NonemptyClassRangesNoDash ::
       ClassAtom
       ClassAtomNoDash NonemptyClassRangesNoDash
       ClassAtomNoDash - ClassAtom ClassRanges
   ClassAtom ::
       -
       ClassAtomNoDash
   ClassAtomNoDash ::
       SourceCharacter 但非 \]-
       \ ClassEscape
   ClassEscape ::
       DecimalEscape
       b
       CharacterEscape
       CharacterClassEscape

A.8 JSON

A.8.1 JSON 词法

   JSONWhiteSpace ::
       <TAB>
       <CR>
       <LF>
       <SP>
   JSONString ::
       " JSONStringCharactersopt "
   JSONStringCharacters ::
       JSONStringCharacter JSONStringCharactersopt
   JSONStringCharacter ::
       SourceCharacter 但非 双引号 " 或反斜杠 \ 或 U+0000 到 U+001F
       \ JSONEscapeSequence
   JSONEscapeSequence ::
       JSONEscapeCharacter
       u HexDigit HexDigit HexDigit HexDigit
   JSONEscapeCharacter :: 以下之一
       " / \ b f n r t
   JSONNumber ::
       -opt DecimalIntegerLiteral JSONFractionopt ExponentPartopt
   JSONFraction ::
       . DecimalDigits
   JSONNullLiteral ::
       NullLiteral
   JSONBooleanLiteral ::
       BooleanLiteral

A.8.2 JSON 语法

   JSONText :
       JSONValue
   JSONValue :
       JSONNullLiteral
       JSONBooleanLiteral
       JSONObject
       JSONArray
       JSONString
       JSONNumber
   JSONObject :
       { }
       { JSONMemberList }
   JSONMember :
       JSONString : JSONValue
   JSONMemberList :
       JSONMember
       JSONMemberList , JSONMember
   JSONArray :
       [ ]
       [ JSONElementList ]
   JSONElementList :
       JSONValue
       JSONElementList , JSONValue