📄 ecma.txt
字号:
Language rules from the ECMAScript Language Specification(Edition 3 Final)24 March 2000-------------------------------InputElementDiv :: WhiteSpace IgnoredCaharacter LineTerminator Comment Token DivPunctuatorInputElementRegExp :: WhiteSpace IgnoredCaharacter LineTerminator Comment Token RegularExpressionLiteralWhiteSpace :: \u0009 <TAB> \u000B <VT> \u000C <FF> \u0020 <SP> \u00A0 <NBSP> OtherUnicodeSpaceSeparator <USP> (i.e. \u2000 to \u200B and \u3000)[ignored unless escaped]IgnoredCaharacter :: LEFT-TO-RIGHT MARK RIGHT-TO-LEFT MARK OtherUnicodeFormattingMarksLineTerminators :: \u000A <LF> \u000D <CR> \u0085 ? \u2028 <LS> \u2029 <PS>[considered as a space or a line terminator]Comment :: MultiLineComment SingleLineComment[if a line terminator is included, then thecomment becomes a line terminator, otherwiseit is a white space]MultiLineComment :: '/*' MultiLineCommentChars/opt '*/'MultiLineCommentChars :: MultiLineNotAsteriskChar MultiLineCommentChars/opt '*' PostAsteriskCommentChars/optPostAsteriskCommentChars :: MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentChars/opt '*' PostAsteriskCommentChars/optMultiLineNotAsteriskChar :: SourceCharacter BUT NOT asterisk '*'MultiLineNotForwardSlashOrAsteriskChar :: SourceCharacter BUT NOT forward-slash '/' or asterisk '*'[a single comment line is always consideredas a line terminator (even if at the end ofa file and no line terminator is found?)]SingleLineComment :: '//' SingleLineCommentChars/optSingleLineCommentChars :: SingleLineCommentChar SingleLineCommentChars/optSingleLineCommentChar :: SourceCharacter BUT NOT LineTerminatorTokens :: ReservedWord Identifier Punctuator NumericLiteral StringLiteralReservedWord :: Keyword FutureReservedWord NullLiteral BooleanLiteralKeyword :: 'break' 'case' 'catch' 'continue' 'default' 'delete' 'do' 'else' 'finally' 'for' 'function' 'if' 'in' 'instanceof' 'new' 'return' 'switch' 'this' 'throw' 'try' 'typeof' 'var' 'void' 'while' 'with'FutureReservedWord :: 'abstract' 'boolean' 'byte' 'char' 'class' 'const' 'debugger' 'double' 'enum' 'export' 'extends' 'final' 'float' 'goto' 'implements' 'import' 'int' 'interface' 'long' 'native' 'package' 'private' 'protected' 'public' 'short' 'static' 'super' 'synchronized' 'throws' 'transient' 'volatile'Identifier :: IdentifierName BUT NOT ReservedWordIdentifierName :: IdentifierStart IdentifierName IdentifierPart[identifiers starting with a '$' sign are reservedfor automatic code generators]IdentifierStart :: UnicodeLetter '$' '_' '\' UnicodeEscapeSequenceIdentifierPart :: IdentifierStart UnicodeCombiningMark UnicodeDigit UnicodeConnectorPunctuation '\' UnicodeEscapeSequenceUnicodeLetter :: any character in the Unicode categories: "Uppercase letter (Lu)" "Lowercase letter (Ll)" "Titlecase letter (Lt)" "Modifier letter (Lm)" "Other letter (Lo)" "Letter number (Nl)"UnicodeCombiningMark :: any character in the Unicode categories: "Non-spacing mark (Mn)" "Combining spacing mark (Mc)"UnicodeDigit :: any character in the Unicode category: "Decimal number (Nd)"UnicodeConnectorPunctuation :: any character in the Unicode category: "Connector punctuation (Pc)"HexDigit :: [0-9A-Fa-f]Punctuator :: '{' '}' '(' ')' '[' ']' '.' ';' ',' '<' '>' '<=' '>=' '==' '!=' '===' '!==' '+' '-' '*' '%' '++' '--' '<<' '>>' '>>>' '&' '|' '^' '!' '~' '&&' '||' '?' ':' '=' '+=' '-=' '*=' '%=' '<<=' '>>=' '>>>=' '&=' '|=' '^='DivPunctuator :: '/' '/='Literal :: NullLiteral BooleanLiteral NumericLiteral StringLiteralNullLiteral :: 'null'BooleanLiteral :: 'true' 'false'[a NumericLiteral can't be followed by anIdentifierStart nor a DecimalDigit]NumericLiteral :: DecimalLiteral HexIntegerLiteral [to support old scripts] OctalIntegerLiteral[the octal entry is only to support old scripts]OctalIntegerLiteral :: '0' OctalDigit OctalIntegerLiteral OctalDigitDecimalLiteral :: DecimalIntegerLiteral '.' DecimalDigit/opt ExponentPart/opt '.' DecimalDigits ExponentPart/opt DecimalIntegerLiteral ExponentPart/optDecimalIntegerLiteral :: 0 NonZeroDigit DecimalDigits/optDecimalDigits :: DecimalDigit DecimalDigits DecimalDigitOctalDigit :: [0-7]DecimalDigit :: [0-9]NonZeroDigit :: [1-9]ExponentPart :: ExponentIndicator SignedIntegerExponentIndicator :: 'e' 'E'SignedInteger :: DecimalDigits '+' DecimalDigits '-' DecimalDigitsHexIntegerLiteral :: '0x' HexDigit '0X' HexDigit HexIntegerLiteral HexDigitStringLiteral :: '"' DoubleStringCharacters/opt '"' ''' SingleStringCharacters/opt '''DoubleStringCharacters :: DoubleStringCharacter DoubleStringCharacters/optSingleStringCharacters :: SingleStringCharacter SingleStringCharacters/optDoubleStringCharacter :: SourceCharacter BUT NOT double quote '"' or backslash '\' or LineTerminator '\' EscapeSequenceSingleStringCharacter :: SourceCharacter BUT NOT single quote ''' or backslash '\' or LineTerminator '\' EscapeSequenceEscapeSequence :: CharacterEscapeSequence 0 [lookahead NOT DecimalDigit] HexEscapeSequence UnicodeEscapeSequence OctalEscapeSequence [for old scripts support][older scripts may include octal sequences]OctalEscapeSequence :: OctalDigit [lookahead NOT DecimalDigit] ZeroToThree OctalDigit [lookahead NOT DecimalDigit] FourToSeven OctalDigit ZeroToThree OctalDigit OctalDigitZeroToThree :: [0-3]FourToSeven :: [4-7]CharacterEscapeSequence :: SingleEscapeCharacter NonEscapeCharacterSingleEscapeCharacter :: ''' '"' '\' 'b' 'f' 'n' 'r' 't' 'v'NonEscapeCharacter :: SourceCharacter BUT NOT EscapeCharacter or LineTerminatorEscapeCharacter :: SingleEscapeCharacter DecimalDigit 'x' 'u'HexEscapeSequence :: 'x' HexDigit HexDigitUnicodeEscapeSequence :: 'u' HexDigit HexDigit HexDigit HexDigit[no empty regular expressions allowed; use /(?:)/ instead]RegularExpressionLiteral :: '/' RegularExpressionBody '/' RegularExpressionFlags/optRegularExpressionBody :: RegularExpressionFirstChar RegularExpressionChars/optRegularExpressionChars :: RegularExpressionChars RegularExpressionCharRegularExpressionFirstChar :: NonTerminator BUT NOT '*' or '\' or '.' BackslashSequenceRegularExpressionChar :: NonTerminator BUT NOT '\' or '/' BackslashSequenceBlackslashSequence :: '\' NonTerminatorNonTerminator :: SourceCharacter BUT NOT LineTerminatorRegularExpressionFlags :: RegularExpressionFlags IdentifierPart[automatic semicolon insertion: this happens when(a) an offending token is found after a LineTerminatoror the token is '}', (b) the end of the input streamis found and no ';' was found, (c) a production was definedas a 'restricted production' such as "no LineTermintor here"][The automatic semicolon is NOT applied if the resultis the empty statement or one of the semicolon ofthe for() statement]Restricted productions:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -