Warning:
This wiki has been archived and is now read-only.
ES6/annex
From HTML5 Chinese Interest Group Wiki
< ES6
Contents
附录 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
InputElementTemplateTailError 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
NumericLiteralError creating thumbnail: Unable to save thumbnail to destination
StringLiteralTemplate
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 typeofError 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 yieldError 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 :: 以下之一
/ /=
RightBracePunctuatorError creating thumbnail: Unable to save thumbnail to destination
::
}
NullLiteral ::
null
BooleanLiteral ::
true
false
NumericLiteral ::
DecimalLiteral
BinaryIntegerLiteralError creating thumbnail: Unable to save thumbnail to destination
OctalIntegerLiteralError 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
BinaryIntegerLiteralError creating thumbnail: Unable to save thumbnail to destination
::
0b BinaryDigit 0B BinaryDigit BinaryIntegerLiteral BinaryDigitBinaryDigit
Error creating thumbnail: Unable to save thumbnail to destination
:: 以下之一
0 1OctalIntegerLiteral
Error creating thumbnail: Unable to save thumbnail to destination
::
0o OctalDigit 0O OctalDigit OctalIntegerLiteral OctalDigitOctalDigit
Error creating thumbnail: Unable to save thumbnail to destination
:: 以下之一
0 1 2 3 4 5 6 7HexIntegerLiteral
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 但非 EscapeCharacter 或 LineTerminator
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
TemplateError creating thumbnail: Unable to save thumbnail to destination
::
NoSubstitutionTemplate TemplateHeadNoSubstitutionTemplate
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 TemplateTailTemplateMiddle
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 TemplateCharactersoptTemplateCharacter
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
DecimalDigitsError 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
ClassExpressionError creating thumbnail: Unable to save thumbnail to destination
GeneratorExpressionError creating thumbnail: Unable to save thumbnail to destination
GeneratorComprehensionError creating thumbnail: Unable to save thumbnail to destination
RegularExpressionLiteralTemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
CoverParenthesizedExpressionAndArrowParameterListError 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
ArrayComprehensionError creating thumbnail: Unable to save thumbnail to destination
ArrayLiteral :
[ Elisionopt ]
[ ElementList ]
[ ElementList , Elisionopt ]
ElementList :
Elisionopt AssignmentExpression
Elisionopt SpreadElementError creating thumbnail: Unable to save thumbnail to destination
ElementList , Elisionopt AssignmentExpressionElementList , Elisionopt SpreadElement
Error creating thumbnail: Unable to save thumbnail to destination
Elision :
,
Elision ,
SpreadElementError creating thumbnail: Unable to save thumbnail to destination
:
... AssignmentExpressionArrayComprehension
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 ComprehensionForComprehensionFor
Error creating thumbnail: Unable to save thumbnail to destination
:
for ForBinding of ExpressionForBinding
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
CoverInitialisedNameError creating thumbnail: Unable to save thumbnail to destination
PropertyName : AssignmentExpression MethodDefinition
PropertyName :
IdentifierName
StringLiteral
NumericLiteralError creating thumbnail: Unable to save thumbnail to destination
CoverInitialisedNameError creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
:
IdentifierName Initialiser
Initialiser :
= AssignmentExpression
GeneratorComprehensionError creating thumbnail: Unable to save thumbnail to destination
:
( Expression ComprehensionForList ) ( Expression ComprehensionForList if Expression )TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
:
NoSubstitutionTemplateTemplateHead Expression
Error creating thumbnail: Unable to save thumbnail to destination
[Lexical goal InputElementTemplateTail ] TemplateSpans
TemplateSpansError creating thumbnail: Unable to save thumbnail to destination
:
TemplateTail TemplateMiddleList [Lexical goal InputElementTemplateTail ] TemplateTailTemplateMiddleList
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 TemplateLiteralError creating thumbnail: Unable to save thumbnail to destination
super [ Expression ]Error creating thumbnail: Unable to save thumbnail to destination
super . IdentifierNameError creating thumbnail: Unable to save thumbnail to destination
new MemberExpression Arguments
NewExpression :
MemberExpression
new NewExpression
CallExpressionError creating thumbnail: Unable to save thumbnail to destination
:
MemberExpression Argumentssuper Arguments
Error creating thumbnail: Unable to save thumbnail to destination
CallExpression Arguments CallExpression [ Expression ] CallExpression . IdentifierNameCallExpression TemplateLiteral
Error creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
Arguments :
( )
( ArgumentList )
ArgumentList :
AssignmentExpression
... AssignmentExpressionError creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
ArgumentList , AssignmentExpressionArgumentList , ... 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 RelationalExpressionError 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 RelationalExpressionError creating thumbnail: Unable to save thumbnail to destination
EqualityExpressionNoIn :
RelationalExpressionNoIn
EqualityExpressionNoIn == RelationalExpressionNoIn
EqualityExpressionNoIn != RelationalExpressionNoIn
EqualityExpressionNoIn === RelationalExpressionNoIn
EqualityExpressionNoIn !== RelationalExpressionNoIn
EqualityExpressionError creating thumbnail: Unable to save thumbnail to destination
[no LineTerminator here] is RelationalExpressionError creating thumbnail: Unable to save thumbnail to destination
EqualityExpression [no LineTerminator here] isnt RelationalExpressionError 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
YieldExpressionError creating thumbnail: Unable to save thumbnail to destination
ArrowFunctionError creating thumbnail: Unable to save thumbnail to destination
LeftHandSideExpression = AssignmentExpressionError 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 ArrayAssignmentPatternObjectAssignmentPattern
Error creating thumbnail: Unable to save thumbnail to destination
:
{ }
{ AssignmentPropertyList }
{ AssignmentPropertyList , }
ArrayAssignmentPatternError 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 , AssignmentPropertyAssignmentElementList
Error creating thumbnail: Unable to save thumbnail to destination
:
Elisionopt AssignmentElement AssignmentElementList , Elisionopt AssignmentElementAssignmentProperty
Error creating thumbnail: Unable to save thumbnail to destination
:
Identifier InitialiseroptPropertyName : AssignmentElement
Error creating thumbnail: Unable to save thumbnail to destination
AssignmentElementError creating thumbnail: Unable to save thumbnail to destination
:
DestructuringAssignmentTarget InitialiseroptAssignmentRestElement
Error creating thumbnail: Unable to save thumbnail to destination
:
... DestructuringAssignmentTargetDestructuringAssignmentTarget
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
GeneratorDeclarationError creating thumbnail: Unable to save thumbnail to destination
ClassDeclarationError creating thumbnail: Unable to save thumbnail to destination
LexicalDeclarationError creating thumbnail: Unable to save thumbnail to destination
BreakableStatement :
IterationStatement
SwitchStatement
BlockStatement :
Block
Block :
{ StatementListopt }
StatementList :
StatementListItem
StatementList StatementListItem
StatementListItem :
Statement
DeclarationError creating thumbnail: Unable to save thumbnail to destination
LexicalDeclarationError creating thumbnail: Unable to save thumbnail to destination
:
LetOrConst BindingList ;LexicalDeclarationNoIn
Error creating thumbnail: Unable to save thumbnail to destination
:
LetOrConst BindingListNoInLetOrConst
Error creating thumbnail: Unable to save thumbnail to destination
:
let
const
BindingListError creating thumbnail: Unable to save thumbnail to destination
:
LexicalBinding BindingList , LexicalBindingBindingListNoIn
Error creating thumbnail: Unable to save thumbnail to destination
:
LexicalBindingNoIn BindingListNoIn , LexicalBindingNoInLexicalBinding
Error creating thumbnail: Unable to save thumbnail to destination
:
BindingIdentifier Initialiseropt BindingPattern InitialiserLexicalBindingNoIn
Error creating thumbnail: Unable to save thumbnail to destination
:
BindingIdentifier InitialiserNoInopt BindingPattern InitialiserNoInBindingIdentifier
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 InitialiserError creating thumbnail: Unable to save thumbnail to destination
VariableDeclarationNoIn :
BindingIdentifier InitialiserNoInopt
BindingPattern InitialiserNoInError creating thumbnail: Unable to save thumbnail to destination
BindingPatternError creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
:
ObjectBindingPattern ArrayBindingPatternObjectBindingPattern
Error creating thumbnail: Unable to save thumbnail to destination
:
{ }
{ BindingPropertyList }
{ BindingPropertyList , }
ArrayBindingPatternError 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 , BindingPropertyBindingElementList
Error creating thumbnail: Unable to save thumbnail to destination
:
Elisionopt BindingElement BindingElementList , Elisionopt BindingElementBindingProperty
Error creating thumbnail: Unable to save thumbnail to destination
:
SingleNameBinding PropertyName : BindingElement
BindingElement :
SingleNameBinding
BindingPattern InitialiseroptError creating thumbnail: Unable to save thumbnail to destination
SingleNameBinding :BindingIdentifier Initialiseropt
Error creating thumbnail: Unable to save thumbnail to destination
BindingRestElementError 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 ) Statementfor ( ExpressionNoInopt ; Expressionopt ; Expressionopt ) Statement
Error creating thumbnail: Unable to save thumbnail to destination
for ( var VariableDeclarationListNoIn ; Expressionopt ; Expressionopt ) Statement for ( LexicalDeclarationNoIn ; Expressionopt ; Expressionopt ) Statementfor ( 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 ) StatementError creating thumbnail: Unable to save thumbnail to destination
for ( ForDeclaration in Expression ) StatementError creating thumbnail: Unable to save thumbnail to destination
for ( LeftHandSideExpression of Expression ) StatementError creating thumbnail: Unable to save thumbnail to destination
for ( var ForBinding of Expression ) StatementError creating thumbnail: Unable to save thumbnail to destination
for ( ForDeclaration of Expression ) StatementError creating thumbnail: Unable to save thumbnail to destination
ForDeclarationError creating thumbnail: Unable to save thumbnail to destination
:
LetOrConst ForBindingContinueStatement
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
CatchParameterError creating thumbnail: Unable to save thumbnail to destination
:
BindingIdentifierBindingPattern
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]
FunctionRestParameterError creating thumbnail: Unable to save thumbnail to destination
FormalsListFormalsList , FunctionRestParameter
Error creating thumbnail: Unable to save thumbnail to destination
FormalsList :
FormalParameter
FormalsList , FormalParameter
FunctionRestParameterError creating thumbnail: Unable to save thumbnail to destination
:
... BindingIdentifier
FormalParameter :
BindingElement
FunctionBody :
StatementListopt
ArrowFunctionError creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
:
ArrowParameters => ConciseBodyError creating thumbnail: Unable to save thumbnail to destination
ArrowParametersError creating thumbnail: Unable to save thumbnail to destination
:
BindingIdentifier CoverParenthesizedExpressionAndArrowParameterListConciseBody
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 ] AssignmentExpressionError creating thumbnail: Unable to save thumbnail to destination
Error creating thumbnail: Unable to save thumbnail to destination
YieldDelegatorError creating thumbnail: Unable to save thumbnail to destination
:
*ClassDeclaration
Error creating thumbnail: Unable to save thumbnail to destination
:
class BindingIdentifier ClassTailClassExpression
Error creating thumbnail: Unable to save thumbnail to destination
:
class BindingIdentifieropt ClassTailClassTail
Error creating thumbnail: Unable to save thumbnail to destination
:
ClassHeritageopt { ClassBodyopt }ClassHeritage
Error creating thumbnail: Unable to save thumbnail to destination
:
extends AssignmentExpressionClassBody
Error creating thumbnail: Unable to save thumbnail to destination
:
ClassElementListClassElementList
Error creating thumbnail: Unable to save thumbnail to destination
:
ClassElement ClassElementList ClassElementClassElement
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
StatementListOuterStatementList
Error creating thumbnail: Unable to save thumbnail to destination
:
OuterItem OuterStatementList OuterItemOuterItem
Error creating thumbnail: Unable to save thumbnail to destination
:
ModuleDeclarationError creating thumbnail: Unable to save thumbnail to destination
ImportDeclarationError 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