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