What `InputElementDiv` Means in ECMAScript Lexical Grammar

The following token classes for lexer analyzer are listed in the lexical grammar of ECMAScript:

InputElementDiv::
    WhiteSpace
    LineTerminator
    Comment
    CommonToken
    DivPunctuator
    RightBracePunctuator
InputElementRegExp::
    WhiteSpace
    LineTerminator
    Comment
    CommonToken
    RightBracePunctuator
    RegularExpressionLiteral
InputElementRegExpOrTemplateTail::
    WhiteSpace
    LineTerminator
    Comment
    CommonToken
    RegularExpressionLiteral
    TemplateSubstitutionTail
InputElementTemplateTail::
    WhiteSpace
    LineTerminator
    Comment
    CommonToken
    DivPunctuator
    TemplateSubstitutionTail

While I understand nested classes, such as WhiteSpace, LineTerminatorI do not understand, what are the top-level classes: InputElementDiv, InputElementRegExp, InputElementRegExpOrTemplateTailand InputElementTemplateTail. Can anyone clarify?

+4
source share
1 answer

, , - . https://www.ecma-international.org/ecma-262/8.0/index.html#sec-ecmascript-language-lexical-grammar. :

, , . . InputElementRegExpOrTemplateTail , RegularExpressionLiteral, TemplateMiddle TemplateTail. InputElementRegExp , RegularExpressionLiteral, TemplateMiddle, TemplateTail . InputElementTemplateTail , TemplateMiddle TemplateTail, RegularLibrary . InputElementDiv .

:

,

, , , , .

, . :

/foo/g

, :

, , , . , lexer expectRegex - , , . - " " " ".

}foo${

.

, 4 ,

| expectRegex | expectTemplate | InputElement                     |
| ----------- | -------------- | -------------------------------- |
| false       | false          | InputElementDiv                  |
| false       | true           | InputElementTemplateTail         |
| true        | false          | InputElementRegExp               |
| true        | true           | InputElementRegExpOrTemplateTail |

, :

  • InputElementRegExpOrTemplateTail: , RegularExpressionLiteral, TemplateMiddle TemplateTail.
  • InputElementRegExp: , RegularExpressionLiteral, TemplateMiddle, TemplateTail.
  • InputElementTemplateTail: , TemplateMiddle TemplateTail, RegularExpressionLiteral.
  • InputElementDiv: .
+9

Source: https://habr.com/ru/post/1683843/


All Articles