Grammer: Statement Grammer ::= Statement no referencesSourceCharacter: #x0000 - #x10FFFF SourceCharacter ::= #x0000 - #x10FFFF referenced by: IdentityEscape InputElementDiv: WhiteSpace LineTerminator Comment CommonToken DivPunctuator RightBracePunctuator InputElementDiv ::= WhiteSpace | LineTerminator | Comment | CommonToken | DivPunctuator | RightBracePunctuator no referencesInputElementRegExp: WhiteSpace LineTerminator Comment CommonToken RightBracePunctuator RegularExpressionLiteral InputElementRegExp ::= WhiteSpace | LineTerminator | Comment | CommonToken | RightBracePunctuator | RegularExpressionLiteral no referencesInputElementRegExpOrTemplateTail: WhiteSpace LineTerminator Comment CommonToken RegularExpressionLiteral TemplateSubstitutionTail InputElementRegExpOrTemplateTail ::= WhiteSpace | LineTerminator | Comment | CommonToken | RegularExpressionLiteral | TemplateSubstitutionTail no referencesInputElementTemplateTail: WhiteSpace LineTerminator Comment CommonToken DivPunctuator TemplateSubstitutionTail InputElementTemplateTail ::= WhiteSpace | LineTerminator | Comment | CommonToken | DivPunctuator | TemplateSubstitutionTail no referencesWhiteSpace: <TAB> <VT> <FF> <SP> <NBSP> <ZWNBSP> <USP> WhiteSpace ::= '<TAB>' | '<VT>' | '<FF>' | '<SP>' | '<NBSP>' | '<ZWNBSP>' | '<USP>' referenced by: InputElementDiv InputElementRegExp InputElementRegExpOrTemplateTail InputElementTemplateTail StrWhiteSpaceChar WhiteSpaceSequence LineTerminator: <LF> <CR> <LS> <PS> LineTerminator ::= '<LF>' | '<CR>' | '<LS>' | '<PS>' referenced by: InputElementDiv InputElementRegExp InputElementRegExpOrTemplateTail InputElementTemplateTail MultiLineComment StrWhiteSpaceChar LineTerminatorSequence: <LF> <CR> <LF> <LS> <PS> LineTerminatorSequence ::= '<LF>' | '<CR>' '<LF>'? | '<LS>' | '<PS>' referenced by: LineContinuation SingleLineHTMLCloseComment TemplateCharacter Comment: MultiLineComment SingleLineComment MultiLineComment SingleLineComment SingleLineHTMLOpenComment SingleLineHTMLCloseComment SingleLineDelimitedComment Comment ::= MultiLineComment | SingleLineComment | MultiLineComment | SingleLineComment | SingleLineHTMLOpenComment | SingleLineHTMLCloseComment | SingleLineDelimitedComment referenced by: InputElementDiv InputElementRegExp InputElementRegExpOrTemplateTail InputElementTemplateTail MultiLineComment: /* MultiLineCommentChars */ /* FirstCommentLine LineTerminator MultiLineCommentChart */ HTMLCloseComment MultiLineComment ::= '/*' MultiLineCommentChars? '*/' | '/*' FirstCommentLine? LineTerminator MultiLineCommentChart? '*/' HTMLCloseComment? referenced by: Comment MultiLineCommentChars: MultiLineNotAsteriskChar MultiLineCommentChars MultiLineCommentChars ::= MultiLineNotAsteriskChar MultiLineCommentChars? referenced by: MultiLineComment MultiLineCommentChars PostAsteriskCommentChars PostAsteriskCommentChars: MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentChars * PostAsteriskCommentChars PostAsteriskCommentChars ::= MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentChars? | '*' PostAsteriskCommentChars? referenced by: PostAsteriskCommentChars MultiLineNotAsteriskChar: [^*] MultiLineNotAsteriskChar ::= [^*] referenced by: MultiLineCommentChars MultiLineNotForwardSlashOrAsteriskChar: [^*/] MultiLineNotForwardSlashOrAsteriskChar ::= [^/*] referenced by: PostAsteriskCommentChars SingleLineComment: / / SingleLineCommentChars SingleLineComment ::= '/' '/' SingleLineCommentChars? referenced by: Comment SingleLineCommentChars: SingleLineCommentChar SingleLineCommentChars SingleLineCommentChars ::= SingleLineCommentChar SingleLineCommentChars? referenced by: HTMLCloseComment SingleLineComment SingleLineCommentChars SingleLineHTMLOpenComment SingleLineCommentChar: [^ #x0012#x0015#x2028#x2029] SingleLineCommentChar ::= [^ #x0012 #x0015 #x2028 #x2029 ] referenced by: SingleLineCommentChars CommonToken: IdentifierName Punctuator NumericLiteral StringLiteral Template CommonToken ::= IdentifierName | Punctuator | NumericLiteral | StringLiteral | Template referenced by: InputElementDiv InputElementRegExp InputElementRegExpOrTemplateTail InputElementTemplateTail IdentifierName: IdentifierStart IdentifierName IdentifierPart IdentifierName ::= IdentifierStart | IdentifierName IdentifierPart referenced by: CallExpression CommonToken ExportSpecifier Identifier IdentifierName ImportSpecifier LiteralPropertyName MemberExpression SuperProperty IdentifierStart: UnicodeIDStart $ _ \ UnicodeEscapeSequence IdentifierStart ::= UnicodeIDStart | '$' | '_' | '\' UnicodeEscapeSequence referenced by: IdentifierName IdentifierPart: UnicodeIDContinue $ _ \ UnicodeEscapeSequence <ZWNJ> <ZWJ> IdentifierPart ::= UnicodeIDContinue | '$' | '_' | '\' UnicodeEscapeSequence | '<ZWNJ>' | '<ZWJ>' referenced by: IdentifierName RegularExpressionFlags UnicodeIDStart: [ https://github.com/mathiasbynens/unicode-data/blob/master/5.1.0/properties/ID_Start-regex.js ] UnicodeIDStart ::= [https://github.com/mathiasbynens/unicode-data/blob/master/5.1.0/properties/ID_Start-regex.js] referenced by: IdentifierStart UnicodeIDContinue: [ https://github.com/mathiasbynens/unicode-data/blob/master/5.1.0/properties/Other_ID_Continue-regex.js ] UnicodeIDContinue ::= [https://github.com/mathiasbynens/unicode-data/blob/master/5.1.0/properties/Other_ID_Continue-regex.js] referenced by: IdentifierPart ReservedWord: Keyword FutureReservedWord NullLIteral BooleanLiteral ReservedWord ::= Keyword | FutureReservedWord | NullLIteral | BooleanLiteral no referencesKeyword: break case catch class const continue debugger default delete do else export extends finally for function if import in instanceof new return super switch this throw try typeof var void while with yield Keyword ::= 'break' | 'case' | 'catch' | 'class' | 'const' | 'continue' | 'debugger' | 'default' | 'delete' | 'do' | 'else' | 'export' | 'extends' | 'finally' | 'for' | 'function' | 'if' | 'import' | 'in' | 'instanceof' | 'new' | 'return' | 'super' | 'switch' | 'this' | 'throw' | 'try' | 'typeof' | 'var' | 'void' | 'while' | 'with' | 'yield' referenced by: ReservedWord FutureReservedWord: enum await implements interface package private protected public FutureReservedWord ::= 'enum' | 'await' | 'implements' | 'interface' | 'package' | 'private' | 'protected' | 'public' referenced by: ReservedWord Punctuator: { } ( ) [ ] . ; , < > <= >= == != === !== + - * % ++ -- << >> >>> & | ^ ! ~ && ? : = += -= *= %= <<= >>= >>>= &= |= ^= => Punctuator ::= '{' | '}' | '(' | ')' | '[' | ']' | '.' | ';' | ',' | '<' | '>' | '<=' | '>=' | '==' | '!=' | '===' | '!==' | '+' | '-' | '*' | '%' | '++' | '--' | '<<' | '>>' | '>>>' | '&' | '|' | '^' | '!' | '~' | '&&' | '?' | ':' | '=' | '+=' | '-=' | '*=' | '%=' | '<<=' | '>>=' | '>>>=' | '&=' | '|=' | '^=' | '=>' referenced by: CommonToken DivPunctuator: / /= DivPunctuator ::= '/' | '/=' referenced by: InputElementDiv InputElementTemplateTail RightBracePunctuator: } RightBracePunctuator ::= '}' referenced by: InputElementDiv InputElementRegExp NullLiteral: null NullLiteral ::= 'null' referenced by: Literal BooleanLiteral: true false BooleanLiteral ::= 'true' | 'false' referenced by: Literal ReservedWord NumbericLiteral: DecimalLiteral BinaryLiteral OctalIntegerLiteral HexIntegerLiteral NumbericLiteral ::= DecimalLiteral | BinaryLiteral | OctalIntegerLiteral | HexIntegerLiteral referenced by: Literal DecimalLiteral: DecimalIntegerLiteral . DecimalDigits ExponentPart . DecimalDigits ExponentPart DecimalIntegerLiteral ExponentPart DecimalLiteral ::= DecimalIntegerLiteral '.' DecimalDigits? ExponentPart? | '.' DecimalDigits ExponentPart? | DecimalIntegerLiteral ExponentPart? referenced by: NumbericLiteral NumericLiteral DecimalIntegerLiteral: 0 NonZeroDigit DecimalDigits 0 OctalDigit LegacyOctalIntegerLiteral OctalDigit DecimalIntegerLiteral ::= '0' | NonZeroDigit DecimalDigits? | '0' OctalDigit | LegacyOctalIntegerLiteral OctalDigit referenced by: DecimalEscape DecimalLiteral DecimalDigits: DecimalDigit DecimalDigits DecimalDigit DecimalDigits ::= DecimalDigit | DecimalDigits DecimalDigit referenced by: DecimalDigits DecimalIntegerLiteral DecimalLiteral LegacyOctalIntegerLiteral QuantifierPrefix SignedInteger StrUnsignedDecimalLiteral DecimalDigit: 0 1 2 3 4 5 6 7 8 9 DecimalDigit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' referenced by: DecimalDigits EscapeCharacter NonOctalDecimalIntegerLiteral uriUnescaped NonZeroDigit: 1 2 3 4 5 6 7 8 9 NonZeroDigit ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' referenced by: DecimalIntegerLiteral LegacyOctalIntegerLiteral ExponentPart: ExponentIndicator SignedInteger ExponentPart ::= ExponentIndicator SignedInteger referenced by: DecimalLiteral StrUnsignedDecimalLiteral ExponentIndicator: e E ExponentIndicator ::= 'e' | 'E' referenced by: ExponentPart SignedInteger: DecimalDigits + DecimalDigits - DecimalDigits SignedInteger ::= DecimalDigits | '+' DecimalDigits | '-' DecimalDigits referenced by: ExponentPart BinaryIntegerLiteral: 0b BinaryDigits 0B BinaryDigits BinaryIntegerLiteral ::= '0b' BinaryDigits | '0B' BinaryDigits referenced by: NumericLiteral StrNumericLiteral BinaryDigits: BinaryDigit BinaryDigits BinaryDigit BinaryDigits ::= BinaryDigit | BinaryDigits BinaryDigit referenced by: BinaryDigits BinaryIntegerLiteral BinaryDigit: 0 1 BinaryDigit ::= '0' | '1' referenced by: BinaryDigits OctalIntegerLiteral: 0o OctalDigits 0O OctalDigits OctalIntegerLiteral ::= '0o' OctalDigits | '0O' OctalDigits referenced by: NumbericLiteral NumericLiteral StrNumericLiteral OctalDigits: OctalDigit OctalDigits OctalDigit OctalDigits ::= OctalDigit | OctalDigits OctalDigit referenced by: OctalDigits OctalIntegerLiteral OctalDigit: 0 1 2 3 4 5 6 7 OctalDigit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' referenced by: DecimalIntegerLiteral LegacyOctalEscapeSequence LegacyOctalIntegerLiteral LegacyOctalLikeDecimalIntegerLiteral OctalDigits HexIntegerLiteral: 0x HexDigits 0X HexDigits HexIntegerLiteral ::= '0x' HexDigits | '0X' HexDigits referenced by: NumbericLiteral NumericLiteral StrNumericLiteral HexDigits: HexDigit HexDigits HexDigit HexDigits ::= HexDigit | HexDigits HexDigit referenced by: HexDigits HexIntegerLiteral RegExpUnicodeEscapeSequence UnicodeEscapeSequence HexDigit: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F HexDigit ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' referenced by: Hex4Digits HexDigits HexEscapeSequence uriEscaped StringLiteral: " DoubleStringCharacters " " SingleStringCharacters " StringLiteral ::= '"' DoubleStringCharacters? '"' | '"' SingleStringCharacters? '"' referenced by: CommonToken Literal LiteralPropertyName ModuleSpecifier DoubleStringCharacters: DoubleStringCharacter DoubleStringCharacters DoubleStringCharacters ::= DoubleStringCharacter DoubleStringCharacters? referenced by: DoubleStringCharacters StringLiteral SingleStringCharacters: SingleStringCharacter SingleStringCharacters SingleStringCharacters ::= SingleStringCharacter SingleStringCharacters? referenced by: SingleStringCharacters StringLiteral DoubleStringCharacter: [^ "\#x0012#x0015#x2028#x2029] \ EscapeSequence LineContinuation DoubleStringCharacter ::= [^" \ #x0012 #x0015 #x2028 #x2029] | '\' EscapeSequence | LineContinuation referenced by: DoubleStringCharacters SingleStringCharacter: [^ '\#x0012#x0015#x2028#x2029] \ EscapeSequence LineContinuation SingleStringCharacter ::= [^' \ #x0012 #x0015 #x2028 #x2029] | '\' EscapeSequence | LineContinuation referenced by: SingleStringCharacters LineContinuation: \ LineTerminatorSequence LineContinuation ::= '\' LineTerminatorSequence referenced by: DoubleStringCharacter SingleStringCharacter TemplateCharacter EscapeSequence: CharacterEscapeSequence 0 [^ 0123456789] HexEscapeSequence UnicodeEscapeSequence CharacterEscapeSequence LegacyOctalEscapeSequence HexEscapeSequence UnicodeEscapeSequence EscapeSequence ::= CharacterEscapeSequence | '0' [^ 0 1 2 3 4 5 6 7 8 9] | HexEscapeSequence | UnicodeEscapeSequence | CharacterEscapeSequence | LegacyOctalEscapeSequence | HexEscapeSequence | UnicodeEscapeSequence referenced by: DoubleStringCharacter SingleStringCharacter TemplateCharacter CharacterEscapeSequence: SingleEscapeCharacter NonEscapeCharacter CharacterEscapeSequence ::= SingleEscapeCharacter | NonEscapeCharacter referenced by: EscapeSequence SingleEscapeCharacter: ' " \ b f n r t v SingleEscapeCharacter ::= "'" | '"' | '\' | 'b' | 'f' | 'n' | 'r' | 't' | 'v' referenced by: CharacterEscapeSequence EscapeCharacter NonEscapeCharacter: [^ "'\bfnrtv#x0012#x0015#x2028#x2029] NonEscapeCharacter ::= [^ ' " \ b f n r t v #x0012 #x0015 #x2028 #x2029] referenced by: CharacterEscapeSequence EscapeCharacter: SingleEscapeCharacter DecimalDigit x u EscapeCharacter ::= SingleEscapeCharacter | DecimalDigit | 'x' | 'u' no referencesHexEscapeSequence: x HexDigit HexDigit HexEscapeSequence ::= 'x' HexDigit HexDigit referenced by: CharacterEscape EscapeSequence UnicodeEscapeSequence: u Hex4Digits u{ HexDigits } UnicodeEscapeSequence ::= 'u' Hex4Digits | 'u{' HexDigits '}' referenced by: EscapeSequence IdentifierPart IdentifierStart Hex4Digits: HexDigit HexDigit HexDigit HexDigit Hex4Digits ::= HexDigit HexDigit HexDigit HexDigit referenced by: LeadSurrogate NonSurrogate RegExpUnicodeEscapeSequence TrailSurrogate UnicodeEscapeSequence RegularExpressionLiteral: / RegularExpressionBody / RegularExpressionFlags RegularExpressionLiteral ::= '/' RegularExpressionBody '/' RegularExpressionFlags referenced by: InputElementRegExp InputElementRegExpOrTemplateTail PrimaryExpression RegularExpressionBody: RegularExpressionFirstChar RegularExpressionChars RegularExpressionBody ::= RegularExpressionFirstChar RegularExpressionChars referenced by: RegularExpressionLiteral RegularExpressionChars: RegularExpressionChars RegularExpressionChar RegularExpressionChars ::= | RegularExpressionChars RegularExpressionChar referenced by: RegularExpressionBody RegularExpressionChars RegularExpressionFirstChar: [^ */[\#x0012#x0015#x2028#x2029] RegularExpressionBackslashSequence RegularExpressionClass RegularExpressionFirstChar ::= [^ #x0012 #x0015 #x2028 #x2029 * \ / [] | RegularExpressionBackslashSequence | RegularExpressionClass referenced by: RegularExpressionBody RegularExpressionChar: [^ /[\#x0012#x0015#x2028#x2029] RegularExpressionBackslashSequence RegularExpressionClass RegularExpressionChar ::= [^ #x0012 #x0015 #x2028 #x2029 \ / [] | RegularExpressionBackslashSequence | RegularExpressionClass referenced by: RegularExpressionChars RegularExpressionBackslashSequence: \ RegularExpressionNonTerminator RegularExpressionBackslashSequence ::= '\' RegularExpressionNonTerminator referenced by: RegularExpressionChar RegularExpressionClassChar RegularExpressionFirstChar RegularExpressionNonTerminator: [^ #x0012#x0015#x2028#x2029] RegularExpressionNonTerminator ::= [^#x0012 #x0015 #x2028 #x2029] referenced by: RegularExpressionBackslashSequence RegularExpressionClass: [ RegularExpressionClassChars ] RegularExpressionClass ::= '[' RegularExpressionClassChars ']' referenced by: RegularExpressionChar RegularExpressionFirstChar RegularExpressionClassChars: RegularExpressionClassChars RegularExpressionClassChar RegularExpressionClassChars ::= | RegularExpressionClassChars RegularExpressionClassChar referenced by: RegularExpressionClass RegularExpressionClassChars RegularExpressionClassChar: [^ \#x0012#x0015#x005D#x2028#x2029] RegularExpressionBackslashSequence RegularExpressionClassChar ::= [^ \ #x0012 #x0015 #x2028 #x2029 #x005D] | RegularExpressionBackslashSequence referenced by: RegularExpressionClassChars RegularExpressionFlags: RegularExpressionFlags IdentifierPart RegularExpressionFlags ::= | RegularExpressionFlags IdentifierPart referenced by: RegularExpressionFlags RegularExpressionLiteral Template: NoSubstitutionTemplate TemplateHead Template ::= NoSubstitutionTemplate | TemplateHead referenced by: CommonToken NoSubstitutionTemplate: ` TemplateCharacters ` NoSubstitutionTemplate ::= '`' TemplateCharacters? '`' referenced by: Template TemplateLiteral TemplateHead: ` TemplateCharacters ${ TemplateHead ::= '`' TemplateCharacters? '${' referenced by: Template TemplateLiteral TemplateSubstitutionTail: TemplateMiddle TemplateTail TemplateSubstitutionTail ::= TemplateMiddle | TemplateTail referenced by: InputElementRegExpOrTemplateTail InputElementTemplateTail TemplateMiddle: } TemplateCharacters ${ TemplateMiddle ::= '}' TemplateCharacters? '${' referenced by: TemplateMiddleList TemplateSubstitutionTail TemplateTail: } TemplateCharacters ` TemplateTail ::= '}' TemplateCharacters? '`' referenced by: TemplateSpans TemplateSubstitutionTail TemplateCharacters: TemplateCharacter TemplateCharacters TemplateCharacters ::= TemplateCharacter TemplateCharacters? referenced by: NoSubstitutionTemplate TemplateCharacters TemplateHead TemplateMiddle TemplateTail TemplateCharacter: $ [^{] \ EscapeSequence LineContinuation LineTerminatorSequence [^ $\`#x0012#x0015#x2028#x2029] TemplateCharacter ::= '$' [^{] | '\' EscapeSequence | LineContinuation | LineTerminatorSequence | [^ ` \ $ #x0012 #x0015 #x2028 #x2029] referenced by: TemplateCharacters IdentifierReference: Identifier yield IdentifierReference ::= Identifier | 'yield' referenced by: CoverInitializedName PrimaryExpression PropertyDefinition BindingIdentifier: Identifier yield BindingIdentifier ::= Identifier | 'yield' referenced by: ArrowParameters BindingRestElement CatchParameter ClassDeclaration ClassExpression CoverParenthesizedExpressionAndArrowParameterList ForBinding FunctionDeclaration FunctionExpression GeneratorDeclaration GeneratorExpression ImportedBinding LexicalBinding SingleNameBinding VariableDeclaration LabelIdentifier: Identifier yield LabelIdentifier ::= Identifier | 'yield' referenced by: BreakStatement ContinueStatement LabelledStatement Identifier: IdentifierName Identifier ::= IdentifierName referenced by: BindingIdentifier IdentifierReference LabelIdentifier PrimaryExpression: this IdentifierReference Literal ArrayLiteral ObjectLiteral FunctionExpression ClassExpression GeneratorExpression RegularExpressionLiteral TemplateLIteral CoverParenthesizedExpressionAndArrowParameterList PrimaryExpression ::= 'this' | IdentifierReference | Literal | ArrayLiteral | ObjectLiteral | FunctionExpression | ClassExpression | GeneratorExpression | RegularExpressionLiteral | TemplateLIteral | CoverParenthesizedExpressionAndArrowParameterList referenced by: MemberExpression CoverParenthesizedExpressionAndArrowParameterList: ( Expression ) ( ) ( ... BindingIdentifier ) ( Expression , ... BindingIdentifier ) CoverParenthesizedExpressionAndArrowParameterList ::= '(' Expression ')' | '(' ')' | '(' '...' BindingIdentifier ')' | '(' Expression ',' '...' BindingIdentifier ')' referenced by: ArrowParameters PrimaryExpression ParenthesizedExpression: ( Expression ) ParenthesizedExpression ::= '(' Expression ')' no referencesLiteral: NullLiteral BooleanLiteral NumbericLiteral StringLiteral Literal ::= NullLiteral | BooleanLiteral | NumbericLiteral | StringLiteral referenced by: PrimaryExpression ArrayLiteral: [ Elision ] [ ElementList ] [ ElementList , Elision ] ArrayLiteral ::= '[' Elision? ']' | '[' ElementList ']' | '[' ElementList ',' Elision? ']' referenced by: PrimaryExpression ElementList: Elision AssignmentExpression Elision SpreadElement ElementList , Elision AssignmentExpression ElementLIst , Elision SpreadElement ElementList ::= Elision? AssignmentExpression | Elision? SpreadElement | ElementList ',' Elision? AssignmentExpression | ElementLIst ',' | Elision? SpreadElement referenced by: ArrayLiteral ElementList Elision: , Elision , Elision ::= ',' | Elision ',' referenced by: ArrayBindingPattern ArrayLiteral BindingElisionElement ElementList Elision SpreadElement: ... AssignmentExpression SpreadElement ::= '...' AssignmentExpression referenced by: ElementList ObjectLiteral: { } { PropertyDefinitionList } { PropertyDefinitionList , } ObjectLiteral ::= '{' '}' | '{' PropertyDefinitionList '}' | '{' PropertyDefinitionList ',' '}' referenced by: PrimaryExpression PropertyDefinitionList: PropertyDefinition PropertyDefinitionList , PropertyDefinition PropertyDefinitionList ::= PropertyDefinition | PropertyDefinitionList ',' PropertyDefinition referenced by: ObjectLiteral PropertyDefinitionList PropertyDefinition: IdentifierReference CoverInitializedName PropertyName : AssignmentExpression MethodDefinition PropertyDefinition ::= IdentifierReference | CoverInitializedName | PropertyName ':' AssignmentExpression | MethodDefinition referenced by: PropertyDefinitionList PropertyName: LiteralPropertyName ComputedPropertyName PropertyName ::= LiteralPropertyName | ComputedPropertyName referenced by: BindingProperty GeneratorMethod MethodDefinition PropertyDefinition LiteralPropertyName: IdentifierName StringLiteral NumericLiteral LiteralPropertyName ::= IdentifierName | StringLiteral | NumericLiteral referenced by: PropertyName ComputedPropertyName: [ AssignmentExpression ] ComputedPropertyName ::= '[' AssignmentExpression ']' referenced by: PropertyName CoverInitializedName: IdentifierReference Initializer CoverInitializedName ::= IdentifierReference Initializer referenced by: PropertyDefinition Initializer: = AssignmentExpression Initializer ::= '=' AssignmentExpression referenced by: BindingElement CoverInitializedName LexicalBinding SingleNameBinding VariableDeclaration TemplateLiteral: NoSubstitutionTemplate TemplateHead Expression TemplateSpans TemplateLiteral ::= NoSubstitutionTemplate | TemplateHead Expression TemplateSpans referenced by: CallExpression MemberExpression TemplateSpans: TemplateTail TemplateMiddleList TemplateTail TemplateSpans ::= TemplateTail | TemplateMiddleList TemplateTail referenced by: TemplateLiteral TemplateMiddleList: TemplateMiddle Expression TemplateMiddleList TemplateMiddle Expression TemplateMiddleList ::= TemplateMiddle Expression | TemplateMiddleList TemplateMiddle Expression referenced by: TemplateMiddleList TemplateSpans MemberExpression: PrimaryExpression MemberExpression [ Expression ] MemberExpression . IdentifierName MemberExpression TemplateLiteral SuperProperty MetaProperty new MemberExpression Arguments MemberExpression ::= PrimaryExpression | MemberExpression '[' Expression ']' | MemberExpression '.' IdentifierName | MemberExpression TemplateLiteral | SuperProperty | MetaProperty | 'new' MemberExpression Arguments referenced by: CallExpression MemberExpression NewExpression SuperProperty: super [ Expression ] super . IdentifierName SuperProperty ::= 'super' '[' Expression ']' | 'super' '.' IdentifierName referenced by: MemberExpression MetaProperty: NewTarget MetaProperty ::= NewTarget referenced by: MemberExpression NewTarget: new . target NewTarget ::= 'new' '.' 'target' referenced by: MetaProperty NewExpression: MemberExpression new NewExpression NewExpression ::= MemberExpression | 'new' NewExpression referenced by: LeftHandSideExpression NewExpression CallExpression: MemberExpression Arguments SuperCall CallExpression Arguments CallExpression [ Expression ] CallExpression . IdentifierName CallExpression TemplateLiteral CallExpression ::= MemberExpression Arguments | SuperCall | CallExpression Arguments | CallExpression '[' Expression ']' | CallExpression '.' IdentifierName | CallExpression TemplateLiteral referenced by: CallExpression LeftHandSideExpression SuperCall: super Arguments SuperCall ::= 'super' Arguments referenced by: CallExpression Arguments: ( ) ( ArgumentList ) Arguments ::= '(' ')' | '(' ArgumentList ')' referenced by: CallExpression MemberExpression SuperCall ArgumentList: AssignmentExpression ... AssignmentExpression ArgumentList , AssignmentExpression ArugmentList , ... AssignmentExpression ArgumentList ::= AssignmentExpression | '...' AssignmentExpression | ArgumentList ',' AssignmentExpression | ArugmentList ',' '...' AssignmentExpression referenced by: ArgumentList Arguments LeftHandSideExpression: NewExpression CallExpression LeftHandSideExpression ::= NewExpression | CallExpression referenced by: AssignmentExpression ClassHeritage IterationStatement PostfixExpression PostfixExpression: LeftHandSideExpression LeftHandSideExpression ++ LeftHandSideExpression -- PostfixExpression ::= LeftHandSideExpression | LeftHandSideExpression '++' | LeftHandSideExpression '--' referenced by: UnaryExpression UnaryExpression: PostfixExpression delete UnaryExpression void UnaryExpression typeof UnaryExpression ++ UnaryExpression -- UnaryExpression + UnaryExpression - UnaryExpression ~ UnaryExpression ! UnaryExpression UnaryExpression ::= PostfixExpression | 'delete' UnaryExpression | 'void' UnaryExpression | 'typeof' UnaryExpression | '++' UnaryExpression | '--' UnaryExpression | '+' UnaryExpression | '-' UnaryExpression | '~' UnaryExpression | '!' UnaryExpression referenced by: MultiplicativeExpression UnaryExpression MultiplicativeExpression: UnaryExpression MultiplicativeExpression MultiplicativeOperator UnaryExpression MultiplicativeExpression ::= UnaryExpression | MultiplicativeExpression MultiplicativeOperator UnaryExpression referenced by: AdditiveExpression MultiplicativeExpression MultiplicativeOperator: * / % MultiplicativeOperator ::= [* / %] referenced by: MultiplicativeExpression AdditiveExpression: MultiplicativeExpression AdditiveExpression + MultiplicativeExpression AdditiveExpression - MultiplicativeExpression AdditiveExpression ::= MultiplicativeExpression | AdditiveExpression '+' MultiplicativeExpression | AdditiveExpression '-' MultiplicativeExpression referenced by: AdditiveExpression ShiftExpression ShiftExpression: AdditiveExpression ShiftExpression << AdditiveExpression ShiftExpression >> AdditiveExpression ShiftExpression >>> AdditiveExpression ShiftExpression ::= AdditiveExpression | ShiftExpression '<<' AdditiveExpression | ShiftExpression '>>' AdditiveExpression | ShiftExpression '>>>' AdditiveExpression referenced by: RelationalExpression ShiftExpression RelationalExpression: ShiftExpression RelationalExpression < ShiftExpression RelationalExpression > ShiftExpression RelationalExpression <= ShiftExpression RelationalExpression >= ShiftExpression RelationalExpression instanceof ShiftExpression RelationalExpression in ShiftExpression RelationalExpression ::= ShiftExpression | RelationalExpression '<' ShiftExpression | RelationalExpression '>' ShiftExpression | RelationalExpression '<=' ShiftExpression | RelationalExpression '>=' ShiftExpression | RelationalExpression 'instanceof' ShiftExpression | RelationalExpression 'in' ShiftExpression referenced by: BitwiseANDExpression EqualityExpression RelationalExpression EqualityExpression: RelationalExpression EqualityExpression == RelationalExpression EqualityExpression != RelationalExpression EqualityExpression === RelationalExpression EqualityExpression !== RelationalExpression EqualityExpression ::= RelationalExpression | EqualityExpression '==' RelationalExpression | EqualityExpression '!=' RelationalExpression | EqualityExpression '===' RelationalExpression | EqualityExpression '!==' RelationalExpression referenced by: EqualityExpression BitwiseANDExpression: RelationalExpression BitwiseANDExpression & RelationalExpression BitwiseANDExpression ::= RelationalExpression | BitwiseANDExpression '&' RelationalExpression referenced by: BitwiseANDExpression BitwiseXORExpression BitwiseXORExpression: BitwiseANDExpression BitwiseXORExpression ^ BitwiseANDExpression BitwiseXORExpression ::= BitwiseANDExpression | BitwiseXORExpression '^' BitwiseANDExpression referenced by: BitwiseORExpression BitwiseXORExpression BitwiseORExpression: BitwiseXORExpression BitwiseORExpression | BitwiseXORExpression BitwiseORExpression ::= BitwiseXORExpression | BitwiseORExpression '|' BitwiseXORExpression referenced by: BitwiseORExpression ConditionalExpression: LogicalORExpression LogicalORExpression ? AssignmentExpression : AssignmentExpression ConditionalExpression ::= LogicalORExpression | LogicalORExpression '?' AssignmentExpression ':' AssignmentExpression referenced by: AssignmentExpression AssignmentExpression: ConditionalExpression YieldExpression ArrowFunction LeftHandSideExpression = AssignmentExpression LeftHandSideExpression AssignmentOperator AssignmentExpression AssignmentExpression ::= ConditionalExpression | YieldExpression | ArrowFunction | LeftHandSideExpression '=' AssignmentExpression | LeftHandSideExpression AssignmentOperator AssignmentExpression referenced by: ArgumentList AssignmentExpression ComputedPropertyName ConciseBody ConditionalExpression ElementList ExportDeclaration Expression Initializer IterationStatement PropertyDefinition SpreadElement YieldExpression AssignmentOperator: *= /= %= += -= <<= >>= >>>= &= ^= |= AssignmentOperator ::= '*=' | '/=' | '%=' | '+=' | '-=' | '<<=' | '>>=' | '>>>=' | '&=' | '^=' | '|=' referenced by: AssignmentExpression Expression: AssignmentExpression Expression AssignmentExpression Expression ::= AssignmentExpression | Expression AssignmentExpression referenced by: CallExpression CaseClause CoverParenthesizedExpressionAndArrowParameterList Expression ExpressionStatement IfStatement IterationStatement MemberExpression ParenthesizedExpression ReturnStatement SuperProperty SwitchStatement TemplateLiteral TemplateMiddleList ThrowStatement WithStatement Statement: BlockStatement VariableStatement EmptyStatement ExpressionStatement IfStatement BreakableStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement ThrowStatement TryStatement DebuggerStatement Statement ::= BlockStatement | VariableStatement | EmptyStatement | ExpressionStatement | IfStatement | BreakableStatement | ContinueStatement | BreakStatement | ReturnStatement | WithStatement | LabelledStatement | ThrowStatement | TryStatement | DebuggerStatement referenced by: Grammer IfStatement IterationStatement LabelledItem StatementListItem WithStatement Declaration: HoistableDeclaration ClassDeclaration LexicalDeclaration Declaration ::= HoistableDeclaration | ClassDeclaration | LexicalDeclaration referenced by: ExportDeclaration StatementListItem HoistableDeclaration: FunctionDeclaration GeneratorDeclaration HoistableDeclaration ::= FunctionDeclaration | GeneratorDeclaration referenced by: Declaration ExportDeclaration BreakableStatement: IterationStatement SwitchStatement BreakableStatement ::= IterationStatement | SwitchStatement referenced by: Statement BlockStatement: Block BlockStatement ::= Block referenced by: Statement Block: { StatementList } Block ::= '{' StatementList? '}' referenced by: BlockStatement Catch Finally TryStatement StatementList: StatementListItem StatementList StatementListItem StatementList ::= StatementListItem | StatementList StatementListItem referenced by: Block CaseClause DefaultClause FunctionStatementList ScriptBody StatementList StatementListItem: Statement Declaration StatementListItem ::= Statement | Declaration referenced by: ModuleItem StatementList LexicalDeclaration: LetOrConst BindingList LexicalDeclaration ::= LetOrConst BindingList referenced by: Declaration IterationStatement LetOrConst: let const LetOrConst ::= 'let' | 'const' referenced by: ForDeclaration LexicalDeclaration BindingList: LexicalBinding BindingList , LexicalBinding BindingList ::= LexicalBinding | BindingList ',' LexicalBinding referenced by: BindingList LexicalDeclaration LexicalBinding: BindingIdentifier Initializer BindingPattern Initializer LexicalBinding ::= BindingIdentifier Initializer? | BindingPattern Initializer referenced by: BindingList VariableStatement: var VariableDeclarationList VariableStatement ::= 'var' VariableDeclarationList referenced by: ExportDeclaration Statement VariableDeclarationList: VariableDeclaration VariableDeclarationList , VariableDeclaration VariableDeclarationList ::= VariableDeclaration | VariableDeclarationList ',' VariableDeclaration referenced by: IterationStatement VariableDeclarationList VariableStatement VariableDeclaration: BindingIdentifier Initializer BindingPattern Initializer VariableDeclaration ::= BindingIdentifier Initializer? | BindingPattern Initializer referenced by: VariableDeclarationList BindingPattern: ObjectBindingPattern ArrayBindingPattern BindingPattern ::= ObjectBindingPattern | ArrayBindingPattern referenced by: BindingElement CatchParameter ForBinding LexicalBinding VariableDeclaration ObjectBindingPattern: { } { BindingPropertyList } { BindingPropertyList , } ObjectBindingPattern ::= '{' '}' | '{' BindingPropertyList '}' | '{' BindingPropertyList ',' '}' referenced by: BindingPattern ArrayBindingPattern: [ Elision BindingRestElement ] [ BindingElementList ] [ BindingElementList , Elision BindingRestElement ] ArrayBindingPattern ::= '[' Elision? BindingRestElement? ']' | '[' BindingElementList ']' | '[' BindingElementList ',' Elision? BindingRestElement? ']' referenced by: BindingPattern BindingPropertyList: BindingProperty BindingPropertyList BindingProperty BindingPropertyList ::= BindingProperty | BindingPropertyList BindingProperty referenced by: BindingPropertyList ObjectBindingPattern BindingElementList: BindingElisionElement BindingElementList , BindingElisionElement BindingElementList ::= BindingElisionElement | BindingElementList ',' BindingElisionElement referenced by: ArrayBindingPattern BindingElementList BindingElisionElement: Elision BindingElement BindingElisionElement ::= Elision? BindingElement referenced by: BindingElementList BindingProperty: SingleNameBinding PropertyName : BindingElement BindingProperty ::= SingleNameBinding | PropertyName ':' BindingElement referenced by: BindingPropertyList BindingElement: SingleNameBinding BindingPattern Initializer BindingElement ::= SingleNameBinding | BindingPattern Initializer? referenced by: BindingElisionElement BindingProperty FormalParameter SingleNameBinding: BindingIdentifier Initializer SingleNameBinding ::= BindingIdentifier Initializer? referenced by: BindingElement BindingProperty BindingRestElement: ... BindingIdentifier BindingRestElement ::= '...' BindingIdentifier referenced by: ArrayBindingPattern FunctionRestParameter EmptyStatement: ; EmptyStatement ::= ';' referenced by: Statement ExpressionStatement: Expression ; ExpressionStatement ::= Expression ';' referenced by: Statement IfStatement: if ( Expression ) Statement else statement if ( Expression ) Statement IfStatement ::= 'if' '(' Expression ')' Statement 'else' statement | 'if' '(' Expression ')' Statement referenced by: Statement IterationStatement: do Statement while ( Expression ) ; while ( Expression ) Statement for ( Expression ; Expression ; Expression ) Statement for ( var VariableDeclarationList ; Expression ; Expression ) Statement for ( LexicalDeclaration Expression ; Expression ; Expression ) Statement for ( LeftHandSideExpression in Expression ) Statement for ( var ForBinding in Expression ) Statement for ( ForDeclaration in Expression ) Statement for ( LeftHandSideExpression of AssignmentExpression ) Statement for ( var ForBinding of AssignmentExpression ) Statement for ( LexicalDeclaration Expression of AssignmentExpression ) Statement IterationStatement ::= 'do' Statement 'while' '(' Expression ')' ';' | 'while' '(' Expression ')' Statement | 'for' '(' Expression? ';' Expression? ';' Expression? ')' Statement | 'for' '(' 'var' VariableDeclarationList ';' Expression? ';' Expression? ')' Statement | 'for' '(' LexicalDeclaration Expression? ';' Expression? ';' Expression? ')' Statement | 'for' '(' LeftHandSideExpression 'in' Expression ')' Statement | 'for' '(' 'var' ForBinding 'in' Expression ')' Statement | 'for' '(' ForDeclaration 'in' Expression ')' Statement | 'for' '(' LeftHandSideExpression 'of' AssignmentExpression ')' Statement | 'for' '(' 'var' ForBinding 'of' AssignmentExpression ')' Statement | 'for' '(' LexicalDeclaration Expression 'of' AssignmentExpression ')' Statement referenced by: BreakableStatement ForDeclaration: LetOrConst ForBinding ForDeclaration ::= LetOrConst ForBinding referenced by: IterationStatement ForBinding: BindingIdentifier BindingPattern ForBinding ::= BindingIdentifier | BindingPattern referenced by: ForDeclaration IterationStatement ContinueStatement: continue ; continue LabelIdentifier ; ContinueStatement ::= 'continue' ';' | 'continue' LabelIdentifier ';' referenced by: Statement BreakStatement: break ; break LabelIdentifier ; BreakStatement ::= 'break' ';' | 'break' LabelIdentifier ';' referenced by: Statement ReturnStatement: return ; return Expression ; ReturnStatement ::= 'return' ';' | 'return' Expression ';' referenced by: Statement WithStatement: with ( Expression ) Statement WithStatement ::= 'with' '(' Expression ')' Statement referenced by: Statement SwitchStatement: switch ( Expression ) CaseBlock SwitchStatement ::= 'switch' '(' Expression ')' CaseBlock referenced by: BreakableStatement CaseBlock: { CaseClauses } { CaseClauses DefaultClause CaseClauses } CaseBlock ::= '{' CaseClauses? '}' | '{' CaseClauses? DefaultClause CaseClauses? '}' referenced by: SwitchStatement CaseClauses: CaseClause CaseClauses CaseClause CaseClauses ::= CaseClause | CaseClauses CaseClause referenced by: CaseBlock CaseClauses CaseClause: case Expression : StatementList CaseClause ::= 'case' Expression ':' StatementList? referenced by: CaseClauses DefaultClause: default : StatementList DefaultClause ::= 'default' ':' StatementList? referenced by: CaseBlock LabelledStatement: LabelIdentifier : LabelledItem LabelledStatement ::= LabelIdentifier ':' LabelledItem referenced by: Statement LabelledItem: Statement FunctionDeclaration LabelledItem ::= Statement | FunctionDeclaration referenced by: LabelledStatement ThrowStatement: throw Expression ; ThrowStatement ::= 'throw' Expression ';' referenced by: Statement TryStatement: try Block Catch try Block Finally try Block Catch finally TryStatement ::= 'try' Block Catch | 'try' Block Finally | 'try' Block Catch finally referenced by: Statement Catch: catch ( CatchParameter ) Block Catch ::= 'catch' '(' CatchParameter ')' Block referenced by: TryStatement Finally: finally Block Finally ::= 'finally' Block referenced by: TryStatement CatchParameter: BindingIdentifier BindingPattern CatchParameter ::= BindingIdentifier | BindingPattern referenced by: Catch DebuggerStatement: debugger ; DebuggerStatement ::= 'debugger' ';' referenced by: Statement FunctionDeclaration: function BindingIdentifier ( FormalParameters ) { FunctionBody } function ( FormalParameters ) { FunctionBody } FunctionDeclaration ::= 'function' BindingIdentifier '(' FormalParameters ')' '{' FunctionBody '}' | 'function' '(' FormalParameters ')' '{' FunctionBody '}' referenced by: HoistableDeclaration LabelledItem FunctionExpression: function BindingIdentifier ( FormalParameters ) { FunctionBody } FunctionExpression ::= 'function' BindingIdentifier? '(' FormalParameters ')' '{' FunctionBody '}' referenced by: PrimaryExpression StrictFormalParameters: FormalParameters StrictFormalParameters ::= FormalParameters referenced by: ArrowFormalParameters GeneratorMethod MethodDefinition FormalParameters: FormalParameterList FormalParameters ::= | FormalParameterList referenced by: FunctionDeclaration FunctionExpression GeneratorDeclaration GeneratorExpression StrictFormalParameters FormalParameterList: FunctionRestParameter FormalsList FormalsList , FormalParameter FormalParameterList ::= FunctionRestParameter | FormalsList | FormalsList ',' FormalParameter referenced by: FormalParameters FormalsList: FormalParameter FormalsList , FormalParameter FormalsList ::= FormalParameter | FormalsList ',' FormalParameter referenced by: FormalParameterList FormalsList FunctionRestParameter: BindingRestElement FunctionRestParameter ::= BindingRestElement referenced by: FormalParameterList FormalParameter: BindingElement FormalParameter ::= BindingElement referenced by: FormalParameterList FormalsList PropertySetParameterList FunctionBody: FunctionStatementList FunctionBody ::= FunctionStatementList referenced by: ConciseBody FunctionDeclaration FunctionExpression GeneratorBody MethodDefinition FunctionStatementList: StatementList FunctionStatementList ::= StatementList? referenced by: FunctionBody ArrowFunction: ArrowParameters => ConciseBody ArrowFunction ::= ArrowParameters '=>' ConciseBody referenced by: AssignmentExpression ArrowParameters: BindingIdentifier CoverParenthesizedExpressionAndArrowParameterList ArrowParameters ::= BindingIdentifier | CoverParenthesizedExpressionAndArrowParameterList referenced by: ArrowFunction ConciseBody: AssignmentExpression { FunctionBody } ConciseBody ::= AssignmentExpression | '{' FunctionBody '}' referenced by: ArrowFunction ArrowFormalParameters: ( StrictFormalParameters ) ArrowFormalParameters ::= '(' StrictFormalParameters ')' no referencesMethodDefinition: PropertyName ( StrictFormalParameters ) { FunctionBody } GeneratorMethod get PropertyName ( ) { FunctionBody } set PropertyName ( PropertySetParameterList ) { FunctionBody } MethodDefinition ::= PropertyName '(' StrictFormalParameters ')' '{' FunctionBody '}' | GeneratorMethod | 'get' PropertyName '(' ')' '{' FunctionBody '}' | 'set' PropertyName '(' PropertySetParameterList ')' '{' FunctionBody '}' referenced by: ClassElement PropertyDefinition PropertySetParameterList: FormalParameter PropertySetParameterList ::= FormalParameter referenced by: MethodDefinition GeneratorMethod: * PropertyName ( StrictFormalParameters ) { GeneratorBody } GeneratorMethod ::= '*' PropertyName '(' StrictFormalParameters ')' '{' GeneratorBody '}' referenced by: MethodDefinition GeneratorDeclaration: function * BindingIdentifier ( FormalParameters ) { GeneratorBody } function * ( FormalParameters ) { GeneratorBody } GeneratorDeclaration ::= 'function' '*' BindingIdentifier '(' FormalParameters ')' '{' GeneratorBody '}' | 'function' '*' '(' FormalParameters ')' '{' GeneratorBody '}' referenced by: HoistableDeclaration GeneratorExpression: function * BindingIdentifier ( FormalParameters ) { GeneratorBody } GeneratorExpression ::= 'function' '*' BindingIdentifier? '(' FormalParameters ')' '{' GeneratorBody '}' referenced by: PrimaryExpression GeneratorBody: FunctionBody GeneratorBody ::= FunctionBody referenced by: GeneratorDeclaration GeneratorExpression GeneratorMethod YieldExpression: yield yield AssignmentExpression yield * AssignmentExpression YieldExpression ::= 'yield' | 'yield' AssignmentExpression | 'yield' '*' AssignmentExpression referenced by: AssignmentExpression ClassDeclaration: class BindingIdentifier ClassTail class ClassTail ClassDeclaration ::= 'class' BindingIdentifier? ClassTail | class ClassTail referenced by: Declaration ExportDeclaration ClassExpression: class BindingIdentifier ClassTail ClassExpression ::= 'class' BindingIdentifier? ClassTail referenced by: PrimaryExpression ClassTail: ClassHeritage { ClassBody } ClassTail ::= ClassHeritage? '{' ClassBody? '}' referenced by: ClassDeclaration ClassExpression ClassHeritage: extends LeftHandSideExpression ClassHeritage ::= 'extends' LeftHandSideExpression referenced by: ClassTail ClassBody: ClassElementList ClassBody ::= ClassElementList referenced by: ClassTail ClassElementList: ClassElement classElementLIst ClassElement ClassElementList ::= ClassElement | classElementLIst ClassElement referenced by: ClassBody ClassElement: MethodDefinition static MethodDefinition ; ClassElement ::= MethodDefinition | 'static' MethodDefinition | ';' referenced by: ClassElementList script: ScriptBody script ::= ScriptBody? no referencesScriptBody: StatementList ScriptBody ::= StatementList referenced by: script Module: ModuleBody Module ::= ModuleBody? no referencesModuleBody: ModuleItemList ModuleBody ::= ModuleItemList referenced by: Module ModuleItemList: ModuleItem ModuleItemList ModuleItem ModuleItemList ::= ModuleItem | ModuleItemList ModuleItem referenced by: ModuleBody ModuleItemList ModuleItem: ImportDeclaration ExportDeclaration StatementListItem ModuleItem ::= ImportDeclaration | ExportDeclaration | StatementListItem referenced by: ModuleItemList ImportDeclaration: import ImportClause FromClause ; import ModuleSpecifier ; ImportDeclaration ::= 'import' ImportClause FromClause ';' | 'import' ModuleSpecifier ';' referenced by: ModuleItem ImportClause: ImportedDefaultBinding NameSpaceImport NamedImports ImportedDefaultBinding , NameSpaceImport ImportedDefaultBinding , NamedImports ImportClause ::= ImportedDefaultBinding | NameSpaceImport | NamedImports | ImportedDefaultBinding ',' NameSpaceImport | ImportedDefaultBinding ',' NamedImports referenced by: ImportDeclaration ImportedDefaultBinding: ImportedBinding ImportedDefaultBinding ::= ImportedBinding referenced by: ImportClause NameSpaceImport: * as ImportedBinding NameSpaceImport ::= '*' 'as' ImportedBinding referenced by: ImportClause NamedImports: { } NamedImports ::= '{' '}' referenced by: ImportClause FromClause: from ModuleSpecifier FromClause ::= 'from' ModuleSpecifier referenced by: ExportDeclaration ImportDeclaration ImportsList: ImportSpecifier ImportsList , ImportSpecifier ImportsList ::= ImportSpecifier | ImportsList ',' ImportSpecifier referenced by: ImportsList ImportSpecifier: ImportedBinding IdentifierName as ImportedBinding ImportSpecifier ::= ImportedBinding | IdentifierName 'as' ImportedBinding referenced by: ImportsList ModuleSpecifier: StringLiteral ModuleSpecifier ::= StringLiteral referenced by: FromClause ImportDeclaration ImportedBinding: BindingIdentifier ImportedBinding ::= BindingIdentifier referenced by: ImportSpecifier ImportedDefaultBinding NameSpaceImport ExportDeclaration: export * FromClause ; export ExportClause FromClause ; export ExportClause ; export VariableStatement export Declaration export default HoistableDeclaration export default ClassDeclaration export default AssignmentExpression ; ExportDeclaration ::= 'export' '*' FromClause ';' | 'export' ExportClause FromClause ';' | 'export' ExportClause ';' | 'export' VariableStatement | 'export' Declaration | 'export' 'default' HoistableDeclaration | 'export' 'default' ClassDeclaration | 'export' 'default' AssignmentExpression ';' referenced by: ModuleItem ExportClause: { } { ExportList } { ExportList , } ExportClause ::= '{' '}' | '{' ExportList '}' | '{' ExportList ',' '}' referenced by: ExportDeclaration ExportList: ExportSpecifier ExportsList , ExportSpecifier ExportList ::= ExportSpecifier | ExportsList ',' ExportSpecifier referenced by: ExportClause ExportSpecifier: IdentifierName IdentifierName as IdentifierName ExportSpecifier ::= IdentifierName | IdentifierName 'as' IdentifierName referenced by: ExportList StringNumericLiteral: StrWhiteSpace StrWhiteSpace StrNumericLiteral StrWhiteSpace StringNumericLiteral ::= StrWhiteSpace? | StrWhiteSpace? StrNumericLiteral StrWhiteSpace? no referencesStrWhiteSpace: StrWhiteSpaceChar StrWhiteSpace StrWhiteSpace ::= StrWhiteSpaceChar StrWhiteSpace? referenced by: StrWhiteSpace StringNumericLiteral StrWhiteSpaceChar: WhiteSpace LineTerminator StrWhiteSpaceChar ::= WhiteSpace | LineTerminator referenced by: StrWhiteSpace StrNumericLiteral: StrDecimalLiteral BinaryIntegerLiteral OctalIntegerLiteral HexIntegerLiteral StrNumericLiteral ::= StrDecimalLiteral | BinaryIntegerLiteral | OctalIntegerLiteral | HexIntegerLiteral referenced by: StringNumericLiteral StrDecimalLiteral: StrUnsignedDecimalLiteral + StrUnsignedDecimalLiteral - StrUnsignedDecimalLiteral StrDecimalLiteral ::= StrUnsignedDecimalLiteral | '+' StrUnsignedDecimalLiteral | '-' StrUnsignedDecimalLiteral referenced by: StrNumericLiteral StrUnsignedDecimalLiteral: Infinity DecimalDigits . DecimalDigits ExponentPart . DecimalDigits ExponentPart DecimalDigits ExponentPart StrUnsignedDecimalLiteral ::= 'Infinity' | DecimalDigits '.' DecimalDigits? ExponentPart? | '.' DecimalDigits ExponentPart? | DecimalDigits ExponentPart? referenced by: StrDecimalLiteral uri: uriCharacters uri ::= uriCharacters? no referencesuriCharacters: uriCharacter uriCharacters uriCharacters ::= uriCharacter uriCharacters? referenced by: uri uriCharacters uriCharacter: uriReserved uriUnescaped uriEscaped uriCharacter ::= uriReserved | uriUnescaped | uriEscaped referenced by: uriCharacters uriReserved: ; / ? : @ & = + $ , uriReserved ::= [ ; / ? : @ & = + $ , ] referenced by: uriCharacter uriUnescaped: uriAlpha DecimalDigit uriMark uriUnescaped ::= uriAlpha | DecimalDigit | uriMark referenced by: uriCharacter uriEscaped: % HexDigit HexDigit uriEscaped ::= '%' HexDigit HexDigit referenced by: uriCharacter 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 uriAlpha ::= [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] referenced by: ControlEscape uriUnescaped uriMark: - _ . ! ~ * ' ( ) uriMark ::= [-_.!~*'()] referenced by: uriUnescaped Pattern: Disjunction Pattern ::= Disjunction no referencesDisjunction: Alternative Alternative | Disjunction Disjunction ::= Alternative | Alternative '|' Disjunction referenced by: Assertion Atom AtomNoBrace Disjunction Pattern QuantifiableAssertion Alternative: Alternative Term Alternative ::= | Alternative Term referenced by: Alternative Disjunction Term: Assertion Atom Atom Quantifier ExtendedTerm Assertion Atom Atom Quantifier Term ::= Assertion | Atom | Atom Quantifier | ExtendedTerm | Assertion | Atom | Atom Quantifier referenced by: Alternative Assertion: ^ $ \ b \ B ( ? = Disjunction ) ( ? ! Disjunction ) ^ $ \ b \ B ( ? = Disjunction ) ( ? ! Disjunction ) QuantifiableAssertion Assertion ::= '^' | '$' | '\' 'b' | '\' 'B' | '(' '?' '=' Disjunction ')' | '(' '?' '!' Disjunction ')' | '^' | '$' | '\' 'b' | '\' 'B' | '(' '?' '=' Disjunction ')' | '(' '?' '!' Disjunction ')' | QuantifiableAssertion referenced by: ExtendedTerm Term Quantifier: QuantifierPrefix QuantifierPrefix ? Quantifier ::= QuantifierPrefix | QuantifierPrefix '?' referenced by: ExtendedTerm Term QuantifierPrefix: * + ? { DecimalDigits } { DecimalDigits , } { DecimalDigits , DecimalDigits } QuantifierPrefix ::= '*' | '+' | '?' | '{' DecimalDigits '}' | '{' DecimalDigits ',' '}' | '{' DecimalDigits ',' DecimalDigits '}' referenced by: Quantifier Atom: PatternCharacter . \ AtomEscape CharacterClass ( Disjunction ) ( ? : Disjunction ) PatternCharacter . \ AtomEscape CharacterClass ( Disjunction ) ( ? : Disjunction ) Atom ::= PatternCharacter | '.' | '\' AtomEscape | CharacterClass | '(' Disjunction ')' | '(' '?' ':' Disjunction ')' | PatternCharacter | '.' | '\' AtomEscape | CharacterClass | '(' Disjunction ')' | '(' '?' ':' Disjunction ')' referenced by: ExtendedTerm Term SyntaxCharacter: $ ^ \ . * + ? ( ) [ [#x005D] { } | SyntaxCharacter ::= [$^\.*+?()[#x005D{}|] referenced by: IdentityEscape PatternCharacter: [^$()*+.?[\^{|}#x005D] [^$()*+.?[\^|#x005D] PatternCharacter ::= [^$^\.*+?()[#x005D{}|] | [^#x5E$\.*+?()[#x005D|] referenced by: Atom AtomEscape: DecimalEscape CharacterEscape CharacterClassEscape DecimalEscape CharacterEscape CharacterClassEscape DecimalEscape CharacterClassEscape CharacterEscape AtomEscape ::= DecimalEscape | CharacterEscape | CharacterClassEscape | DecimalEscape | CharacterEscape | CharacterClassEscape | DecimalEscape | CharacterClassEscape | CharacterEscape referenced by: Atom AtomNoBrace CharacterEscape: ControlEscape c ControlLetter HexEscapeSequence RegExpUnicodeEscapeSequence IdentityEscape ControlEscape c ControlLetter HexEscapeSequence RegExpUnicodeEscapeSequence LegacyOctalEscapeSequence IdentityEscape CharacterEscape ::= ControlEscape | 'c' ControlLetter | HexEscapeSequence | RegExpUnicodeEscapeSequence | IdentityEscape | ControlEscape | 'c' ControlLetter | HexEscapeSequence | RegExpUnicodeEscapeSequence | LegacyOctalEscapeSequence | IdentityEscape referenced by: AtomEscape ClassEscape ControlLetter: f n r t v ControlLetter ::= [fnrtv] referenced by: CharacterEscape ControlEscape: uriAlpha ControlEscape ::= uriAlpha referenced by: CharacterEscape RegExpUnicodeEscapeSequence: u LeadSurrogate \u TrailSurrogate u LeadSurrogate u TrailSurrogate u NonSurrogate Hex4Digits u{ HexDigits } RegExpUnicodeEscapeSequence ::= 'u' LeadSurrogate '\u' TrailSurrogate | 'u' LeadSurrogate | 'u' TrailSurrogate | 'u' NonSurrogate | Hex4Digits | 'u{' HexDigits '}' referenced by: CharacterEscape LeadSurrogate: Hex4Digits LeadSurrogate ::= Hex4Digits referenced by: RegExpUnicodeEscapeSequence TrailSurrogate: Hex4Digits TrailSurrogate ::= Hex4Digits referenced by: RegExpUnicodeEscapeSequence NonSurrogate: Hex4Digits NonSurrogate ::= Hex4Digits referenced by: RegExpUnicodeEscapeSequence IdentityEscape: SyntaxCharacter / [^CUcdeinotu] SyntaxCharacter / SourceCharacter IdentityEscape ::= SyntaxCharacter | '/' | [^UnicodeContinue] | SyntaxCharacter | '/' | SourceCharacter referenced by: CharacterEscape ClassAtomNoDashInRange DecimalEscape: DecimalIntegerLiteral DecimalEscape ::= DecimalIntegerLiteral referenced by: AtomEscape ClassEscape CharacterClassEscape: d D s S w W CharacterClassEscape ::= [dDsSwW] referenced by: AtomEscape ClassEscape CharacterClass: [ ClassRanges ] [ ^ ClassRanges ] CharacterClass ::= '[' ClassRanges ']' | '[' '^' ClassRanges ']' referenced by: Atom AtomNoBrace ClassRanges: NonemptyClassRanges ClassRanges ::= | NonemptyClassRanges referenced by: CharacterClass NonemptyClassRanges NonemptyClassRangesNoDash NonemptyClassRanges: ClassAtom ClassAtom NonemptyClassRangesNoDash ClassAtom - ClassAtom ClassRanges ClassAtom ClassAtom NonemptyClassRangesNoDash ClassAtom - ClassAtom ClassRanges ClassAtomInRange - ClassAtomInRange ClassRanges NonemptyClassRanges ::= ClassAtom | ClassAtom NonemptyClassRangesNoDash | ClassAtom '-' ClassAtom ClassRanges | ClassAtom | ClassAtom NonemptyClassRangesNoDash | ClassAtom '-' ClassAtom ClassRanges | ClassAtomInRange '-' ClassAtomInRange ClassRanges referenced by: ClassRanges NonemptyClassRangesNoDash: ClassAtom ClassAtomNoDash NonemptyClassRangesNoDash ClassAtomNoDash - ClassAtom ClassRanges ClassAtom ClassAtomNoDash NonemptyClassRangesNoDash ClassAtomNoDash - ClassAtom ClassRanges ClassAtomNoDashInRange - ClassAtomInRange ClassRanges NonemptyClassRangesNoDash ::= ClassAtom | ClassAtomNoDash NonemptyClassRangesNoDash | ClassAtomNoDash '-' ClassAtom ClassRanges | ClassAtom | ClassAtomNoDash NonemptyClassRangesNoDash | ClassAtomNoDash '-' ClassAtom ClassRanges | ClassAtomNoDashInRange '-' ClassAtomInRange ClassRanges referenced by: NonemptyClassRanges NonemptyClassRangesNoDash ClassAtom: - ClassAtomNoDash - ClassAtomNoDashInRange ClassAtom ::= '-' | ClassAtomNoDash | '-' | ClassAtomNoDashInRange referenced by: NonemptyClassRanges NonemptyClassRangesNoDash ClassAtomNoDash: [^-\#x005D] \ ClassEscape [^-\#x005D] \ ClassEscape ClassAtomNoDash ::= [^\#x005D#x2D] | '\' ClassEscape | [^\#x005D#x2D] | '\' ClassEscape referenced by: ClassAtom NonemptyClassRangesNoDash ClassEscape: DecimalEscape b - CharacterEscape CharacterClassEscape DecimalEscape CharacterEscape CharacterClassEscape DecimalEscape b CharacterClassEscape CharacterEscape ClassEscape ::= DecimalEscape | 'b' | '-' | CharacterEscape | CharacterClassEscape | DecimalEscape | CharacterEscape | CharacterClassEscape | DecimalEscape | 'b' | CharacterClassEscape | CharacterEscape referenced by: ClassAtomNoDash ClassAtomNoDashInRange NumericLiteral: DecimalLiteral BinaryIntegerLiteral OctalIntegerLiteral HexIntegerLiteral LegacyOctalIntegerLiteral NumericLiteral ::= DecimalLiteral | BinaryIntegerLiteral | OctalIntegerLiteral | HexIntegerLiteral | LegacyOctalIntegerLiteral referenced by: CommonToken LiteralPropertyName LegacyOctalIntegerLiteral: 0 OctalDigit NonZeroDigit DecimalDigits NonOctalDecimalIntegerLiteral LegacyOctalIntegerLiteral ::= '0' OctalDigit | NonZeroDigit DecimalDigits? | NonOctalDecimalIntegerLiteral referenced by: DecimalIntegerLiteral NumericLiteral NonOctalDecimalIntegerLiteral: 0 NonOctalDigit LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit NonOctalDecimalIntegerLiteral DecimalDigit NonOctalDecimalIntegerLiteral ::= '0' NonOctalDigit | LegacyOctalLikeDecimalIntegerLiteral NonOctalDigit | NonOctalDecimalIntegerLiteral DecimalDigit referenced by: LegacyOctalIntegerLiteral NonOctalDecimalIntegerLiteral LegacyOctalLikeDecimalIntegerLiteral: 0 OctalDigit LegacyOctalLikeDecimalIntegerLiteral OctalDigit LegacyOctalLikeDecimalIntegerLiteral ::= '0' OctalDigit | LegacyOctalLikeDecimalIntegerLiteral OctalDigit referenced by: LegacyOctalLikeDecimalIntegerLiteral NonOctalDecimalIntegerLiteral NonOctalDigit: 8 9 NonOctalDigit ::= '8' | '9' referenced by: NonOctalDecimalIntegerLiteral LegacyOctalEscapeSequence: OctalDigit ZeroToThree OctalDigit FourToSeven OctalDigit ZeroToThree OctalDigit OctalDigit LegacyOctalEscapeSequence ::= OctalDigit | ZeroToThree OctalDigit | FourToSeven OctalDigit | ZeroToThree OctalDigit OctalDigit referenced by: CharacterEscape EscapeSequence ZeroToThree: 0 1 2 3 ZeroToThree ::= [0-3] referenced by: LegacyOctalEscapeSequence FourToSeven: 4 5 6 7 FourToSeven ::= [4-7] referenced by: LegacyOctalEscapeSequence FirstCommentLine: SingleLineDelimitedCommentChars FirstCommentLine ::= SingleLineDelimitedCommentChars referenced by: MultiLineComment SingleLineHTMLOpenComment: <!-- SingleLineCommentChars SingleLineHTMLOpenComment ::= '<!--' SingleLineCommentChars? referenced by: Comment SingleLineHTMLCloseComment: LineTerminatorSequence HTMLCloseComment SingleLineHTMLCloseComment ::= LineTerminatorSequence HTMLCloseComment referenced by: Comment SingleLineDelimiterComment: /* SingleLineDelimitedCommentChars */ SingleLineDelimiterComment ::= '/*' SingleLineDelimitedCommentChars? '*/' no referencesHTMLCloseComment: WhiteSpaceSequence SingleLineDelimitedCommentSequence --> SingleLineCommentChars HTMLCloseComment ::= WhiteSpaceSequence? SingleLineDelimitedCommentSequence? '-->' SingleLineCommentChars? referenced by: MultiLineComment SingleLineHTMLCloseComment SingleLineDelimitedCommentChars: SingleLineNotAsteriskChar SingleLineDelimitedCommentChars * SingleLinePstAsteriskCommentChars SingleLineDelimitedCommentChars ::= SingleLineNotAsteriskChar SingleLineDelimitedCommentChars? | '*' SingleLinePstAsteriskCommentChars? referenced by: FirstCommentLine SingleLineDelimitedCommentChars SingleLineDelimiterComment SingleLinePostAsteriskCommentChars SingleLineNotAsteriskChar: [^*#x0012#x0015#x2028#x2029] SingleLineNotAsteriskChar ::= [^*#x0012#x0015#x2028#x2029] referenced by: SingleLineDelimitedCommentChars SingleLinePostAsteriskCommentChars: SingleLineNotForwardSlashOrAsteriskChar SingleLineDelimitedCommentChars * SingleLinePostAsteriskCommentChars SingleLinePostAsteriskCommentChars ::= SingleLineNotForwardSlashOrAsteriskChar SingleLineDelimitedCommentChars? | '*' SingleLinePostAsteriskCommentChars? referenced by: SingleLinePostAsteriskCommentChars SingleLineNotForwardSlashOrAsteriskChar: [^*/#x0012#x0015#x2028#x2029] SingleLineNotForwardSlashOrAsteriskChar ::= [^*/#x0012#x0015#x2028#x2029] referenced by: SingleLinePostAsteriskCommentChars WhiteSpaceSequence: WhiteSpace WhiteSpaceSequence WhiteSpaceSequence ::= WhiteSpace WhiteSpaceSequence? referenced by: HTMLCloseComment SingleLineDelimitedCommentSequence WhiteSpaceSequence SingleLineDelimitedCommentSequence: SingleLineDelimitedComment WhiteSpaceSequence SingleLineDelimitedCommentSequence SingleLineDelimitedCommentSequence ::= SingleLineDelimitedComment WhiteSpaceSequence? SingleLineDelimitedCommentSequence? referenced by: HTMLCloseComment SingleLineDelimitedCommentSequence ExtendedTerm: Assertion AtomNoBrace Quantifier Atom QuantifiableAssertion Quantifier ExtendedTerm ::= Assertion | AtomNoBrace Quantifier | Atom | QuantifiableAssertion Quantifier referenced by: Term AtomNoBrace: PatternCharacterNoBrace . \ AtomEscape CharacterClass ( Disjunction ) ( ? : Disjunction ) AtomNoBrace ::= PatternCharacterNoBrace | '.' | '\' AtomEscape | CharacterClass | '(' Disjunction ')' | '(' '?' ':' Disjunction ')' referenced by: ExtendedTerm PatternCharacterNoBrace: [^$()*+.?[\^{|}#x005D] PatternCharacterNoBrace ::= [^#x5E$\.*+?()[#x005D{}|] referenced by: AtomNoBrace QuantifiableAssertion: ( ? = Disjunction ) ( ? ! Disjunction ) QuantifiableAssertion ::= '(' '?' '=' Disjunction ')' | '(' '?' '!' Disjunction ')' referenced by: Assertion ExtendedTerm ClassAtomInRange: - ClassAtomNoDashInRange ClassAtomInRange ::= '-' | ClassAtomNoDashInRange referenced by: NonemptyClassRanges NonemptyClassRangesNoDash ClassAtomNoDashInRange: [^-\#x005D] \ ClassEscape \ IdentityEscape ClassAtomNoDashInRange ::= [^\#x005D#x2D] | '\' ClassEscape | '\' IdentityEscape referenced by: ClassAtom ClassAtomInRange NonemptyClassRangesNoDash ... generated by Railroad Diagram Generator R R