977 lines
22 KiB
ANTLR
977 lines
22 KiB
ANTLR
/*
|
|
* [The "BSD license"]
|
|
* Copyright (c) 2014 Terence Parr
|
|
* Copyright (c) 2014 Sam Harwell
|
|
* Copyright (c) 2019 Student Main (Make it universal)
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. The name of the author may not be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
/**
|
|
* A Java 8 grammar for ANTLR 4 derived from the Java Language Specification
|
|
* chapter 19.
|
|
*
|
|
* NOTE: This grammar results in a generated parser that is much slower
|
|
* than the Java 7 grammar in the grammars-v4/java directory. This
|
|
* one is, however, extremely close to the spec.
|
|
*
|
|
* You can test with
|
|
*
|
|
* $ antlr4 Java8.g4
|
|
* $ javac *.java
|
|
* $ grun Java8 compilationUnit *.java
|
|
*
|
|
* Or,
|
|
~/antlr/code/grammars-v4/java8 $ java Test .
|
|
/Users/parrt/antlr/code/grammars-v4/java8/./Java8BaseListener.java
|
|
/Users/parrt/antlr/code/grammars-v4/java8/./Java8Lexer.java
|
|
/Users/parrt/antlr/code/grammars-v4/java8/./Java8Listener.java
|
|
/Users/parrt/antlr/code/grammars-v4/java8/./Java8Parser.java
|
|
/Users/parrt/antlr/code/grammars-v4/java8/./Test.java
|
|
Total lexer+parser time 30844ms.
|
|
*/
|
|
|
|
// $antlr-format alignTrailingComments true, columnLimit 150, maxEmptyLinesToKeep 1, reflowComments false, useTab false
|
|
// $antlr-format allowShortRulesOnASingleLine true, allowShortBlocksOnASingleLine true, minEmptyLines 0, alignSemicolons ownLine
|
|
// $antlr-format alignColons trailing, singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true
|
|
|
|
lexer grammar Java8Lexer;
|
|
|
|
// LEXER
|
|
|
|
// §3.9 Keywords
|
|
|
|
ABSTRACT : 'abstract';
|
|
ASSERT : 'assert';
|
|
BOOLEAN : 'boolean';
|
|
BREAK : 'break';
|
|
BYTE : 'byte';
|
|
CASE : 'case';
|
|
CATCH : 'catch';
|
|
CHAR : 'char';
|
|
CLASS : 'class';
|
|
CONST : 'const';
|
|
CONTINUE : 'continue';
|
|
DEFAULT : 'default';
|
|
DO : 'do';
|
|
DOUBLE : 'double';
|
|
ELSE : 'else';
|
|
ENUM : 'enum';
|
|
EXTENDS : 'extends';
|
|
FINAL : 'final';
|
|
FINALLY : 'finally';
|
|
FLOAT : 'float';
|
|
FOR : 'for';
|
|
IF : 'if';
|
|
GOTO : 'goto';
|
|
IMPLEMENTS : 'implements';
|
|
IMPORT : 'import';
|
|
INSTANCEOF : 'instanceof';
|
|
INT : 'int';
|
|
INTERFACE : 'interface';
|
|
LONG : 'long';
|
|
NATIVE : 'native';
|
|
NEW : 'new';
|
|
PACKAGE : 'package';
|
|
PRIVATE : 'private';
|
|
PROTECTED : 'protected';
|
|
PUBLIC : 'public';
|
|
RETURN : 'return';
|
|
SHORT : 'short';
|
|
STATIC : 'static';
|
|
STRICTFP : 'strictfp';
|
|
SUPER : 'super';
|
|
SWITCH : 'switch';
|
|
SYNCHRONIZED : 'synchronized';
|
|
THIS : 'this';
|
|
THROW : 'throw';
|
|
THROWS : 'throws';
|
|
TRANSIENT : 'transient';
|
|
TRY : 'try';
|
|
VOID : 'void';
|
|
VOLATILE : 'volatile';
|
|
WHILE : 'while';
|
|
|
|
// §3.10.1 Integer Literals
|
|
|
|
IntegerLiteral:
|
|
DecimalIntegerLiteral
|
|
| HexIntegerLiteral
|
|
| OctalIntegerLiteral
|
|
| BinaryIntegerLiteral
|
|
;
|
|
|
|
fragment DecimalIntegerLiteral: DecimalNumeral IntegerTypeSuffix?;
|
|
|
|
fragment HexIntegerLiteral: HexNumeral IntegerTypeSuffix?;
|
|
|
|
fragment OctalIntegerLiteral: OctalNumeral IntegerTypeSuffix?;
|
|
|
|
fragment BinaryIntegerLiteral: BinaryNumeral IntegerTypeSuffix?;
|
|
|
|
fragment IntegerTypeSuffix: [lL];
|
|
|
|
fragment DecimalNumeral: '0' | NonZeroDigit (Digits? | Underscores Digits);
|
|
|
|
fragment Digits: Digit (DigitsAndUnderscores? Digit)?;
|
|
|
|
fragment Digit: '0' | NonZeroDigit;
|
|
|
|
fragment NonZeroDigit: [1-9];
|
|
|
|
fragment DigitsAndUnderscores: DigitOrUnderscore+;
|
|
|
|
fragment DigitOrUnderscore: Digit | '_';
|
|
|
|
fragment Underscores: '_'+;
|
|
|
|
fragment HexNumeral: '0' [xX] HexDigits;
|
|
|
|
fragment HexDigits: HexDigit (HexDigitsAndUnderscores? HexDigit)?;
|
|
|
|
fragment HexDigit: [0-9a-fA-F];
|
|
|
|
fragment HexDigitsAndUnderscores: HexDigitOrUnderscore+;
|
|
|
|
fragment HexDigitOrUnderscore: HexDigit | '_';
|
|
|
|
fragment OctalNumeral: '0' Underscores? OctalDigits;
|
|
|
|
fragment OctalDigits: OctalDigit (OctalDigitsAndUnderscores? OctalDigit)?;
|
|
|
|
fragment OctalDigit: [0-7];
|
|
|
|
fragment OctalDigitsAndUnderscores: OctalDigitOrUnderscore+;
|
|
|
|
fragment OctalDigitOrUnderscore: OctalDigit | '_';
|
|
|
|
fragment BinaryNumeral: '0' [bB] BinaryDigits;
|
|
|
|
fragment BinaryDigits: BinaryDigit (BinaryDigitsAndUnderscores? BinaryDigit)?;
|
|
|
|
fragment BinaryDigit: [01];
|
|
|
|
fragment BinaryDigitsAndUnderscores: BinaryDigitOrUnderscore+;
|
|
|
|
fragment BinaryDigitOrUnderscore: BinaryDigit | '_';
|
|
|
|
// §3.10.2 Floating-Point Literals
|
|
|
|
FloatingPointLiteral: DecimalFloatingPointLiteral | HexadecimalFloatingPointLiteral;
|
|
|
|
fragment DecimalFloatingPointLiteral:
|
|
Digits '.' Digits? ExponentPart? FloatTypeSuffix?
|
|
| '.' Digits ExponentPart? FloatTypeSuffix?
|
|
| Digits ExponentPart FloatTypeSuffix?
|
|
| Digits FloatTypeSuffix
|
|
;
|
|
|
|
fragment ExponentPart: ExponentIndicator SignedInteger;
|
|
|
|
fragment ExponentIndicator: [eE];
|
|
|
|
fragment SignedInteger: Sign? Digits;
|
|
|
|
fragment Sign: [+-];
|
|
|
|
fragment FloatTypeSuffix: [fFdD];
|
|
|
|
fragment HexadecimalFloatingPointLiteral: HexSignificand BinaryExponent FloatTypeSuffix?;
|
|
|
|
fragment HexSignificand: HexNumeral '.'? | '0' [xX] HexDigits? '.' HexDigits;
|
|
|
|
fragment BinaryExponent: BinaryExponentIndicator SignedInteger;
|
|
|
|
fragment BinaryExponentIndicator: [pP];
|
|
|
|
// §3.10.3 Boolean Literals
|
|
|
|
BooleanLiteral: 'true' | 'false';
|
|
|
|
// §3.10.4 Character Literals
|
|
|
|
CharacterLiteral: '\'' SingleCharacter '\'' | '\'' EscapeSequence '\'';
|
|
|
|
fragment SingleCharacter: ~['\\\r\n];
|
|
|
|
// §3.10.5 String Literals
|
|
|
|
StringLiteral: '"' StringCharacters? '"';
|
|
|
|
fragment StringCharacters: StringCharacter+;
|
|
|
|
fragment StringCharacter: ~["\\\r\n] | EscapeSequence;
|
|
|
|
// §3.10.6 Escape Sequences for Character and String Literals
|
|
|
|
fragment EscapeSequence:
|
|
'\\' 'u005c'? [btnfr"'\\]
|
|
| OctalEscape
|
|
| UnicodeEscape // This is not in the spec but prevents having to preprocess the input
|
|
;
|
|
|
|
fragment OctalEscape:
|
|
'\\' 'u005c'? OctalDigit
|
|
| '\\' 'u005c'? OctalDigit OctalDigit
|
|
| '\\' 'u005c'? ZeroToThree OctalDigit OctalDigit
|
|
;
|
|
|
|
fragment ZeroToThree: [0-3];
|
|
|
|
// This is not in the spec but prevents having to preprocess the input
|
|
fragment UnicodeEscape: '\\' 'u'+ HexDigit HexDigit HexDigit HexDigit;
|
|
|
|
// §3.10.7 The Null Literal
|
|
|
|
NullLiteral: 'null';
|
|
|
|
// §3.11 Separators
|
|
|
|
LPAREN : '(';
|
|
RPAREN : ')';
|
|
LBRACE : '{';
|
|
RBRACE : '}';
|
|
LBRACK : '[';
|
|
RBRACK : ']';
|
|
SEMI : ';';
|
|
COMMA : ',';
|
|
DOT : '.';
|
|
|
|
// §3.12 Operators
|
|
|
|
ASSIGN : '=';
|
|
GT : '>';
|
|
LT : '<';
|
|
BANG : '!';
|
|
TILDE : '~';
|
|
QUESTION : '?';
|
|
COLON : ':';
|
|
EQUAL : '==';
|
|
LE : '<=';
|
|
GE : '>=';
|
|
NOTEQUAL : '!=';
|
|
AND : '&&';
|
|
OR : '||';
|
|
INC : '++';
|
|
DEC : '--';
|
|
ADD : '+';
|
|
SUB : '-';
|
|
MUL : '*';
|
|
DIV : '/';
|
|
BITAND : '&';
|
|
BITOR : '|';
|
|
CARET : '^';
|
|
MOD : '%';
|
|
ARROW : '->';
|
|
COLONCOLON : '::';
|
|
|
|
ADD_ASSIGN : '+=';
|
|
SUB_ASSIGN : '-=';
|
|
MUL_ASSIGN : '*=';
|
|
DIV_ASSIGN : '/=';
|
|
AND_ASSIGN : '&=';
|
|
OR_ASSIGN : '|=';
|
|
XOR_ASSIGN : '^=';
|
|
MOD_ASSIGN : '%=';
|
|
LSHIFT_ASSIGN : '<<=';
|
|
RSHIFT_ASSIGN : '>>=';
|
|
URSHIFT_ASSIGN : '>>>=';
|
|
|
|
// §3.8 Identifiers (must appear after all keywords in the grammar)
|
|
|
|
Identifier: IdentifierStart IdentifierPart*;
|
|
/*
|
|
fragment
|
|
JavaLetter
|
|
: [a-zA-Z$_] // these are the "java letters" below 0x7F
|
|
| // covers all characters above 0x7F which are not a surrogate
|
|
~[\u0000-\u007F\uD800-\uDBFF] {this.wasJavaIdentiferStart()}?
|
|
| // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
|
|
[\uD800-\uDBFF] [\uDC00-\uDFFF] {this.wasJavaIdentiferStartUTF16()}?
|
|
;
|
|
|
|
fragment
|
|
JavaLetterOrDigit
|
|
: [a-zA-Z0-9$_] // these are the "java letters or digits" below 0x7F
|
|
| // covers all characters above 0x7F which are not a surrogate
|
|
~[\u0000-\u007F\uD800-\uDBFF] {this.wasJavaIdentiferPart()}?
|
|
| // covers UTF-16 surrogate pairs encodings for U+10000 to U+10FFFF
|
|
[\uD800-\uDBFF] [\uDC00-\uDFFF] {this.wasJavaIdentiferPartUTF16()}?
|
|
;*/
|
|
|
|
// Dropped SMP support as ANTLR has no native support for it
|
|
fragment IdentifierStart:
|
|
[\u0024]
|
|
| [\u0041-\u005A]
|
|
| [\u005F]
|
|
| [\u0061-\u007A]
|
|
| [\u00A2-\u00A5]
|
|
| [\u00AA]
|
|
| [\u00B5]
|
|
| [\u00BA]
|
|
| [\u00C0-\u00D6]
|
|
| [\u00D8-\u00F6]
|
|
| [\u00F8-\u02C1]
|
|
| [\u02C6-\u02D1]
|
|
| [\u02E0-\u02E4]
|
|
| [\u02EC]
|
|
| [\u02EE]
|
|
| [\u0370-\u0374]
|
|
| [\u0376-\u0377]
|
|
| [\u037A-\u037D]
|
|
| [\u037F]
|
|
| [\u0386]
|
|
| [\u0388-\u038A]
|
|
| [\u038C]
|
|
| [\u038E-\u03A1]
|
|
| [\u03A3-\u03F5]
|
|
| [\u03F7-\u0481]
|
|
| [\u048A-\u052F]
|
|
| [\u0531-\u0556]
|
|
| [\u0559]
|
|
| [\u0561-\u0587]
|
|
| [\u058F]
|
|
| [\u05D0-\u05EA]
|
|
| [\u05F0-\u05F2]
|
|
| [\u060B]
|
|
| [\u0620-\u064A]
|
|
| [\u066E-\u066F]
|
|
| [\u0671-\u06D3]
|
|
| [\u06D5]
|
|
| [\u06E5-\u06E6]
|
|
| [\u06EE-\u06EF]
|
|
| [\u06FA-\u06FC]
|
|
| [\u06FF]
|
|
| [\u0710]
|
|
| [\u0712-\u072F]
|
|
| [\u074D-\u07A5]
|
|
| [\u07B1]
|
|
| [\u07CA-\u07EA]
|
|
| [\u07F4-\u07F5]
|
|
| [\u07FA]
|
|
| [\u0800-\u0815]
|
|
| [\u081A]
|
|
| [\u0824]
|
|
| [\u0828]
|
|
| [\u0840-\u0858]
|
|
| [\u0860-\u086A]
|
|
| [\u08A0-\u08B4]
|
|
| [\u08B6-\u08BD]
|
|
| [\u0904-\u0939]
|
|
| [\u093D]
|
|
| [\u0950]
|
|
| [\u0958-\u0961]
|
|
| [\u0971-\u0980]
|
|
| [\u0985-\u098C]
|
|
| [\u098F-\u0990]
|
|
| [\u0993-\u09A8]
|
|
| [\u09AA-\u09B0]
|
|
| [\u09B2]
|
|
| [\u09B6-\u09B9]
|
|
| [\u09BD]
|
|
| [\u09CE]
|
|
| [\u09DC-\u09DD]
|
|
| [\u09DF-\u09E1]
|
|
| [\u09F0-\u09F3]
|
|
| [\u09FB-\u09FC]
|
|
| [\u0A05-\u0A0A]
|
|
| [\u0A0F-\u0A10]
|
|
| [\u0A13-\u0A28]
|
|
| [\u0A2A-\u0A30]
|
|
| [\u0A32-\u0A33]
|
|
| [\u0A35-\u0A36]
|
|
| [\u0A38-\u0A39]
|
|
| [\u0A59-\u0A5C]
|
|
| [\u0A5E]
|
|
| [\u0A72-\u0A74]
|
|
| [\u0A85-\u0A8D]
|
|
| [\u0A8F-\u0A91]
|
|
| [\u0A93-\u0AA8]
|
|
| [\u0AAA-\u0AB0]
|
|
| [\u0AB2-\u0AB3]
|
|
| [\u0AB5-\u0AB9]
|
|
| [\u0ABD]
|
|
| [\u0AD0]
|
|
| [\u0AE0-\u0AE1]
|
|
| [\u0AF1]
|
|
| [\u0AF9]
|
|
| [\u0B05-\u0B0C]
|
|
| [\u0B0F-\u0B10]
|
|
| [\u0B13-\u0B28]
|
|
| [\u0B2A-\u0B30]
|
|
| [\u0B32-\u0B33]
|
|
| [\u0B35-\u0B39]
|
|
| [\u0B3D]
|
|
| [\u0B5C-\u0B5D]
|
|
| [\u0B5F-\u0B61]
|
|
| [\u0B71]
|
|
| [\u0B83]
|
|
| [\u0B85-\u0B8A]
|
|
| [\u0B8E-\u0B90]
|
|
| [\u0B92-\u0B95]
|
|
| [\u0B99-\u0B9A]
|
|
| [\u0B9C]
|
|
| [\u0B9E-\u0B9F]
|
|
| [\u0BA3-\u0BA4]
|
|
| [\u0BA8-\u0BAA]
|
|
| [\u0BAE-\u0BB9]
|
|
| [\u0BD0]
|
|
| [\u0BF9]
|
|
| [\u0C05-\u0C0C]
|
|
| [\u0C0E-\u0C10]
|
|
| [\u0C12-\u0C28]
|
|
| [\u0C2A-\u0C39]
|
|
| [\u0C3D]
|
|
| [\u0C58-\u0C5A]
|
|
| [\u0C60-\u0C61]
|
|
| [\u0C80]
|
|
| [\u0C85-\u0C8C]
|
|
| [\u0C8E-\u0C90]
|
|
| [\u0C92-\u0CA8]
|
|
| [\u0CAA-\u0CB3]
|
|
| [\u0CB5-\u0CB9]
|
|
| [\u0CBD]
|
|
| [\u0CDE]
|
|
| [\u0CE0-\u0CE1]
|
|
| [\u0CF1-\u0CF2]
|
|
| [\u0D05-\u0D0C]
|
|
| [\u0D0E-\u0D10]
|
|
| [\u0D12-\u0D3A]
|
|
| [\u0D3D]
|
|
| [\u0D4E]
|
|
| [\u0D54-\u0D56]
|
|
| [\u0D5F-\u0D61]
|
|
| [\u0D7A-\u0D7F]
|
|
| [\u0D85-\u0D96]
|
|
| [\u0D9A-\u0DB1]
|
|
| [\u0DB3-\u0DBB]
|
|
| [\u0DBD]
|
|
| [\u0DC0-\u0DC6]
|
|
| [\u0E01-\u0E30]
|
|
| [\u0E32-\u0E33]
|
|
| [\u0E3F-\u0E46]
|
|
| [\u0E81-\u0E82]
|
|
| [\u0E84]
|
|
| [\u0E87-\u0E88]
|
|
| [\u0E8A]
|
|
| [\u0E8D]
|
|
| [\u0E94-\u0E97]
|
|
| [\u0E99-\u0E9F]
|
|
| [\u0EA1-\u0EA3]
|
|
| [\u0EA5]
|
|
| [\u0EA7]
|
|
| [\u0EAA-\u0EAB]
|
|
| [\u0EAD-\u0EB0]
|
|
| [\u0EB2-\u0EB3]
|
|
| [\u0EBD]
|
|
| [\u0EC0-\u0EC4]
|
|
| [\u0EC6]
|
|
| [\u0EDC-\u0EDF]
|
|
| [\u0F00]
|
|
| [\u0F40-\u0F47]
|
|
| [\u0F49-\u0F6C]
|
|
| [\u0F88-\u0F8C]
|
|
| [\u1000-\u102A]
|
|
| [\u103F]
|
|
| [\u1050-\u1055]
|
|
| [\u105A-\u105D]
|
|
| [\u1061]
|
|
| [\u1065-\u1066]
|
|
| [\u106E-\u1070]
|
|
| [\u1075-\u1081]
|
|
| [\u108E]
|
|
| [\u10A0-\u10C5]
|
|
| [\u10C7]
|
|
| [\u10CD]
|
|
| [\u10D0-\u10FA]
|
|
| [\u10FC-\u1248]
|
|
| [\u124A-\u124D]
|
|
| [\u1250-\u1256]
|
|
| [\u1258]
|
|
| [\u125A-\u125D]
|
|
| [\u1260-\u1288]
|
|
| [\u128A-\u128D]
|
|
| [\u1290-\u12B0]
|
|
| [\u12B2-\u12B5]
|
|
| [\u12B8-\u12BE]
|
|
| [\u12C0]
|
|
| [\u12C2-\u12C5]
|
|
| [\u12C8-\u12D6]
|
|
| [\u12D8-\u1310]
|
|
| [\u1312-\u1315]
|
|
| [\u1318-\u135A]
|
|
| [\u1380-\u138F]
|
|
| [\u13A0-\u13F5]
|
|
| [\u13F8-\u13FD]
|
|
| [\u1401-\u166C]
|
|
| [\u166F-\u167F]
|
|
| [\u1681-\u169A]
|
|
| [\u16A0-\u16EA]
|
|
| [\u16EE-\u16F8]
|
|
| [\u1700-\u170C]
|
|
| [\u170E-\u1711]
|
|
| [\u1720-\u1731]
|
|
| [\u1740-\u1751]
|
|
| [\u1760-\u176C]
|
|
| [\u176E-\u1770]
|
|
| [\u1780-\u17B3]
|
|
| [\u17D7]
|
|
| [\u17DB-\u17DC]
|
|
| [\u1820-\u1877]
|
|
| [\u1880-\u1884]
|
|
| [\u1887-\u18A8]
|
|
| [\u18AA]
|
|
| [\u18B0-\u18F5]
|
|
| [\u1900-\u191E]
|
|
| [\u1950-\u196D]
|
|
| [\u1970-\u1974]
|
|
| [\u1980-\u19AB]
|
|
| [\u19B0-\u19C9]
|
|
| [\u1A00-\u1A16]
|
|
| [\u1A20-\u1A54]
|
|
| [\u1AA7]
|
|
| [\u1B05-\u1B33]
|
|
| [\u1B45-\u1B4B]
|
|
| [\u1B83-\u1BA0]
|
|
| [\u1BAE-\u1BAF]
|
|
| [\u1BBA-\u1BE5]
|
|
| [\u1C00-\u1C23]
|
|
| [\u1C4D-\u1C4F]
|
|
| [\u1C5A-\u1C7D]
|
|
| [\u1C80-\u1C88]
|
|
| [\u1CE9-\u1CEC]
|
|
| [\u1CEE-\u1CF1]
|
|
| [\u1CF5-\u1CF6]
|
|
| [\u1D00-\u1DBF]
|
|
| [\u1E00-\u1F15]
|
|
| [\u1F18-\u1F1D]
|
|
| [\u1F20-\u1F45]
|
|
| [\u1F48-\u1F4D]
|
|
| [\u1F50-\u1F57]
|
|
| [\u1F59]
|
|
| [\u1F5B]
|
|
| [\u1F5D]
|
|
| [\u1F5F-\u1F7D]
|
|
| [\u1F80-\u1FB4]
|
|
| [\u1FB6-\u1FBC]
|
|
| [\u1FBE]
|
|
| [\u1FC2-\u1FC4]
|
|
| [\u1FC6-\u1FCC]
|
|
| [\u1FD0-\u1FD3]
|
|
| [\u1FD6-\u1FDB]
|
|
| [\u1FE0-\u1FEC]
|
|
| [\u1FF2-\u1FF4]
|
|
| [\u1FF6-\u1FFC]
|
|
| [\u203F-\u2040]
|
|
| [\u2054]
|
|
| [\u2071]
|
|
| [\u207F]
|
|
| [\u2090-\u209C]
|
|
| [\u20A0-\u20BF]
|
|
| [\u2102]
|
|
| [\u2107]
|
|
| [\u210A-\u2113]
|
|
| [\u2115]
|
|
| [\u2119-\u211D]
|
|
| [\u2124]
|
|
| [\u2126]
|
|
| [\u2128]
|
|
| [\u212A-\u212D]
|
|
| [\u212F-\u2139]
|
|
| [\u213C-\u213F]
|
|
| [\u2145-\u2149]
|
|
| [\u214E]
|
|
| [\u2160-\u2188]
|
|
| [\u2C00-\u2C2E]
|
|
| [\u2C30-\u2C5E]
|
|
| [\u2C60-\u2CE4]
|
|
| [\u2CEB-\u2CEE]
|
|
| [\u2CF2-\u2CF3]
|
|
| [\u2D00-\u2D25]
|
|
| [\u2D27]
|
|
| [\u2D2D]
|
|
| [\u2D30-\u2D67]
|
|
| [\u2D6F]
|
|
| [\u2D80-\u2D96]
|
|
| [\u2DA0-\u2DA6]
|
|
| [\u2DA8-\u2DAE]
|
|
| [\u2DB0-\u2DB6]
|
|
| [\u2DB8-\u2DBE]
|
|
| [\u2DC0-\u2DC6]
|
|
| [\u2DC8-\u2DCE]
|
|
| [\u2DD0-\u2DD6]
|
|
| [\u2DD8-\u2DDE]
|
|
| [\u2E2F]
|
|
| [\u3005-\u3007]
|
|
| [\u3021-\u3029]
|
|
| [\u3031-\u3035]
|
|
| [\u3038-\u303C]
|
|
| [\u3041-\u3096]
|
|
| [\u309D-\u309F]
|
|
| [\u30A1-\u30FA]
|
|
| [\u30FC-\u30FF]
|
|
| [\u3105-\u312E]
|
|
| [\u3131-\u318E]
|
|
| [\u31A0-\u31BA]
|
|
| [\u31F0-\u31FF]
|
|
| [\u3400-\u4DB5]
|
|
| [\u4E00-\u9FEA]
|
|
| [\uA000-\uA48C]
|
|
| [\uA4D0-\uA4FD]
|
|
| [\uA500-\uA60C]
|
|
| [\uA610-\uA61F]
|
|
| [\uA62A-\uA62B]
|
|
| [\uA640-\uA66E]
|
|
| [\uA67F-\uA69D]
|
|
| [\uA6A0-\uA6EF]
|
|
| [\uA717-\uA71F]
|
|
| [\uA722-\uA788]
|
|
| [\uA78B-\uA7AE]
|
|
| [\uA7B0-\uA7B7]
|
|
| [\uA7F7-\uA801]
|
|
| [\uA803-\uA805]
|
|
| [\uA807-\uA80A]
|
|
| [\uA80C-\uA822]
|
|
| [\uA838]
|
|
| [\uA840-\uA873]
|
|
| [\uA882-\uA8B3]
|
|
| [\uA8F2-\uA8F7]
|
|
| [\uA8FB]
|
|
| [\uA8FD]
|
|
| [\uA90A-\uA925]
|
|
| [\uA930-\uA946]
|
|
| [\uA960-\uA97C]
|
|
| [\uA984-\uA9B2]
|
|
| [\uA9CF]
|
|
| [\uA9E0-\uA9E4]
|
|
| [\uA9E6-\uA9EF]
|
|
| [\uA9FA-\uA9FE]
|
|
| [\uAA00-\uAA28]
|
|
| [\uAA40-\uAA42]
|
|
| [\uAA44-\uAA4B]
|
|
| [\uAA60-\uAA76]
|
|
| [\uAA7A]
|
|
| [\uAA7E-\uAAAF]
|
|
| [\uAAB1]
|
|
| [\uAAB5-\uAAB6]
|
|
| [\uAAB9-\uAABD]
|
|
| [\uAAC0]
|
|
| [\uAAC2]
|
|
| [\uAADB-\uAADD]
|
|
| [\uAAE0-\uAAEA]
|
|
| [\uAAF2-\uAAF4]
|
|
| [\uAB01-\uAB06]
|
|
| [\uAB09-\uAB0E]
|
|
| [\uAB11-\uAB16]
|
|
| [\uAB20-\uAB26]
|
|
| [\uAB28-\uAB2E]
|
|
| [\uAB30-\uAB5A]
|
|
| [\uAB5C-\uAB65]
|
|
| [\uAB70-\uABE2]
|
|
| [\uAC00-\uD7A3]
|
|
| [\uD7B0-\uD7C6]
|
|
| [\uD7CB-\uD7FB]
|
|
| [\uF900-\uFA6D]
|
|
| [\uFA70-\uFAD9]
|
|
| [\uFB00-\uFB06]
|
|
| [\uFB13-\uFB17]
|
|
| [\uFB1D]
|
|
| [\uFB1F-\uFB28]
|
|
| [\uFB2A-\uFB36]
|
|
| [\uFB38-\uFB3C]
|
|
| [\uFB3E]
|
|
| [\uFB40-\uFB41]
|
|
| [\uFB43-\uFB44]
|
|
| [\uFB46-\uFBB1]
|
|
| [\uFBD3-\uFD3D]
|
|
| [\uFD50-\uFD8F]
|
|
| [\uFD92-\uFDC7]
|
|
| [\uFDF0-\uFDFC]
|
|
| [\uFE33-\uFE34]
|
|
| [\uFE4D-\uFE4F]
|
|
| [\uFE69]
|
|
| [\uFE70-\uFE74]
|
|
| [\uFE76-\uFEFC]
|
|
| [\uFF04]
|
|
| [\uFF21-\uFF3A]
|
|
| [\uFF3F]
|
|
| [\uFF41-\uFF5A]
|
|
| [\uFF66-\uFFBE]
|
|
| [\uFFC2-\uFFC7]
|
|
| [\uFFCA-\uFFCF]
|
|
| [\uFFD2-\uFFD7]
|
|
| [\uFFDA-\uFFDC]
|
|
| [\uFFE0-\uFFE1]
|
|
| [\uFFE5-\uFFE6]
|
|
;
|
|
|
|
fragment IdentifierPart:
|
|
IdentifierStart
|
|
| [\u0030-\u0039]
|
|
| [\u007F-\u009F]
|
|
| [\u00AD]
|
|
| [\u0300-\u036F]
|
|
| [\u0483-\u0487]
|
|
| [\u0591-\u05BD]
|
|
| [\u05BF]
|
|
| [\u05C1-\u05C2]
|
|
| [\u05C4-\u05C5]
|
|
| [\u05C7]
|
|
| [\u0600-\u0605]
|
|
| [\u0610-\u061A]
|
|
| [\u061C]
|
|
| [\u064B-\u0669]
|
|
| [\u0670]
|
|
| [\u06D6-\u06DD]
|
|
| [\u06DF-\u06E4]
|
|
| [\u06E7-\u06E8]
|
|
| [\u06EA-\u06ED]
|
|
| [\u06F0-\u06F9]
|
|
| [\u070F]
|
|
| [\u0711]
|
|
| [\u0730-\u074A]
|
|
| [\u07A6-\u07B0]
|
|
| [\u07C0-\u07C9]
|
|
| [\u07EB-\u07F3]
|
|
| [\u0816-\u0819]
|
|
| [\u081B-\u0823]
|
|
| [\u0825-\u0827]
|
|
| [\u0829-\u082D]
|
|
| [\u0859-\u085B]
|
|
| [\u08D4-\u0903]
|
|
| [\u093A-\u093C]
|
|
| [\u093E-\u094F]
|
|
| [\u0951-\u0957]
|
|
| [\u0962-\u0963]
|
|
| [\u0966-\u096F]
|
|
| [\u0981-\u0983]
|
|
| [\u09BC]
|
|
| [\u09BE-\u09C4]
|
|
| [\u09C7-\u09C8]
|
|
| [\u09CB-\u09CD]
|
|
| [\u09D7]
|
|
| [\u09E2-\u09E3]
|
|
| [\u09E6-\u09EF]
|
|
| [\u0A01-\u0A03]
|
|
| [\u0A3C]
|
|
| [\u0A3E-\u0A42]
|
|
| [\u0A47-\u0A48]
|
|
| [\u0A4B-\u0A4D]
|
|
| [\u0A51]
|
|
| [\u0A66-\u0A71]
|
|
| [\u0A75]
|
|
| [\u0A81-\u0A83]
|
|
| [\u0ABC]
|
|
| [\u0ABE-\u0AC5]
|
|
| [\u0AC7-\u0AC9]
|
|
| [\u0ACB-\u0ACD]
|
|
| [\u0AE2-\u0AE3]
|
|
| [\u0AE6-\u0AEF]
|
|
| [\u0AFA-\u0AFF]
|
|
| [\u0B01-\u0B03]
|
|
| [\u0B3C]
|
|
| [\u0B3E-\u0B44]
|
|
| [\u0B47-\u0B48]
|
|
| [\u0B4B-\u0B4D]
|
|
| [\u0B56-\u0B57]
|
|
| [\u0B62-\u0B63]
|
|
| [\u0B66-\u0B6F]
|
|
| [\u0B82]
|
|
| [\u0BBE-\u0BC2]
|
|
| [\u0BC6-\u0BC8]
|
|
| [\u0BCA-\u0BCD]
|
|
| [\u0BD7]
|
|
| [\u0BE6-\u0BEF]
|
|
| [\u0C00-\u0C03]
|
|
| [\u0C3E-\u0C44]
|
|
| [\u0C46-\u0C48]
|
|
| [\u0C4A-\u0C4D]
|
|
| [\u0C55-\u0C56]
|
|
| [\u0C62-\u0C63]
|
|
| [\u0C66-\u0C6F]
|
|
| [\u0C81-\u0C83]
|
|
| [\u0CBC]
|
|
| [\u0CBE-\u0CC4]
|
|
| [\u0CC6-\u0CC8]
|
|
| [\u0CCA-\u0CCD]
|
|
| [\u0CD5-\u0CD6]
|
|
| [\u0CE2-\u0CE3]
|
|
| [\u0CE6-\u0CEF]
|
|
| [\u0D00-\u0D03]
|
|
| [\u0D3B-\u0D3C]
|
|
| [\u0D3E-\u0D44]
|
|
| [\u0D46-\u0D48]
|
|
| [\u0D4A-\u0D4D]
|
|
| [\u0D57]
|
|
| [\u0D62-\u0D63]
|
|
| [\u0D66-\u0D6F]
|
|
| [\u0D82-\u0D83]
|
|
| [\u0DCA]
|
|
| [\u0DCF-\u0DD4]
|
|
| [\u0DD6]
|
|
| [\u0DD8-\u0DDF]
|
|
| [\u0DE6-\u0DEF]
|
|
| [\u0DF2-\u0DF3]
|
|
| [\u0E31]
|
|
| [\u0E34-\u0E3A]
|
|
| [\u0E47-\u0E4E]
|
|
| [\u0E50-\u0E59]
|
|
| [\u0EB1]
|
|
| [\u0EB4-\u0EB9]
|
|
| [\u0EBB-\u0EBC]
|
|
| [\u0EC8-\u0ECD]
|
|
| [\u0ED0-\u0ED9]
|
|
| [\u0F18-\u0F19]
|
|
| [\u0F20-\u0F29]
|
|
| [\u0F35]
|
|
| [\u0F37]
|
|
| [\u0F39]
|
|
| [\u0F3E-\u0F3F]
|
|
| [\u0F71-\u0F84]
|
|
| [\u0F86-\u0F87]
|
|
| [\u0F8D-\u0F97]
|
|
| [\u0F99-\u0FBC]
|
|
| [\u0FC6]
|
|
| [\u102B-\u103E]
|
|
| [\u1040-\u1049]
|
|
| [\u1056-\u1059]
|
|
| [\u105E-\u1060]
|
|
| [\u1062-\u1064]
|
|
| [\u1067-\u106D]
|
|
| [\u1071-\u1074]
|
|
| [\u1082-\u108D]
|
|
| [\u108F-\u109D]
|
|
| [\u135D-\u135F]
|
|
| [\u1712-\u1714]
|
|
| [\u1732-\u1734]
|
|
| [\u1752-\u1753]
|
|
| [\u1772-\u1773]
|
|
| [\u17B4-\u17D3]
|
|
| [\u17DD]
|
|
| [\u17E0-\u17E9]
|
|
| [\u180B-\u180E]
|
|
| [\u1810-\u1819]
|
|
| [\u1885-\u1886]
|
|
| [\u18A9]
|
|
| [\u1920-\u192B]
|
|
| [\u1930-\u193B]
|
|
| [\u1946-\u194F]
|
|
| [\u19D0-\u19D9]
|
|
| [\u1A17-\u1A1B]
|
|
| [\u1A55-\u1A5E]
|
|
| [\u1A60-\u1A7C]
|
|
| [\u1A7F-\u1A89]
|
|
| [\u1A90-\u1A99]
|
|
| [\u1AB0-\u1ABD]
|
|
| [\u1B00-\u1B04]
|
|
| [\u1B34-\u1B44]
|
|
| [\u1B50-\u1B59]
|
|
| [\u1B6B-\u1B73]
|
|
| [\u1B80-\u1B82]
|
|
| [\u1BA1-\u1BAD]
|
|
| [\u1BB0-\u1BB9]
|
|
| [\u1BE6-\u1BF3]
|
|
| [\u1C24-\u1C37]
|
|
| [\u1C40-\u1C49]
|
|
| [\u1C50-\u1C59]
|
|
| [\u1CD0-\u1CD2]
|
|
| [\u1CD4-\u1CE8]
|
|
| [\u1CED]
|
|
| [\u1CF2-\u1CF4]
|
|
| [\u1CF7-\u1CF9]
|
|
| [\u1DC0-\u1DF9]
|
|
| [\u1DFB-\u1DFF]
|
|
| [\u200B-\u200F]
|
|
| [\u202A-\u202E]
|
|
| [\u2060-\u2064]
|
|
| [\u2066-\u206F]
|
|
| [\u20D0-\u20DC]
|
|
| [\u20E1]
|
|
| [\u20E5-\u20F0]
|
|
| [\u2CEF-\u2CF1]
|
|
| [\u2D7F]
|
|
| [\u2DE0-\u2DFF]
|
|
| [\u302A-\u302F]
|
|
| [\u3099-\u309A]
|
|
| [\uA620-\uA629]
|
|
| [\uA66F]
|
|
| [\uA674-\uA67D]
|
|
| [\uA69E-\uA69F]
|
|
| [\uA6F0-\uA6F1]
|
|
| [\uA802]
|
|
| [\uA806]
|
|
| [\uA80B]
|
|
| [\uA823-\uA827]
|
|
| [\uA880-\uA881]
|
|
| [\uA8B4-\uA8C5]
|
|
| [\uA8D0-\uA8D9]
|
|
| [\uA8E0-\uA8F1]
|
|
| [\uA900-\uA909]
|
|
| [\uA926-\uA92D]
|
|
| [\uA947-\uA953]
|
|
| [\uA980-\uA983]
|
|
| [\uA9B3-\uA9C0]
|
|
| [\uA9D0-\uA9D9]
|
|
| [\uA9E5]
|
|
| [\uA9F0-\uA9F9]
|
|
| [\uAA29-\uAA36]
|
|
| [\uAA43]
|
|
| [\uAA4C-\uAA4D]
|
|
| [\uAA50-\uAA59]
|
|
| [\uAA7B-\uAA7D]
|
|
| [\uAAB0]
|
|
| [\uAAB2-\uAAB4]
|
|
| [\uAAB7-\uAAB8]
|
|
| [\uAABE-\uAABF]
|
|
| [\uAAC1]
|
|
| [\uAAEB-\uAAEF]
|
|
| [\uAAF5-\uAAF6]
|
|
| [\uABE3-\uABEA]
|
|
| [\uABEC-\uABED]
|
|
| [\uABF0-\uABF9]
|
|
| [\uFB1E]
|
|
| [\uFE00-\uFE0F]
|
|
| [\uFE20-\uFE2F]
|
|
| [\uFEFF]
|
|
| [\uFF10-\uFF19]
|
|
| [\uFFF9-\uFFFB]
|
|
;
|
|
|
|
//
|
|
// Additional symbols not defined in the lexical specification
|
|
//
|
|
|
|
AT : '@';
|
|
ELLIPSIS : '...';
|
|
|
|
//
|
|
// Whitespace and comments
|
|
//
|
|
|
|
WS: [ \t\r\n\u000C]+ -> skip;
|
|
|
|
COMMENT: '/*' .*? '*/' -> skip;
|
|
|
|
LINE_COMMENT: '//' ~[\r\n]* -> skip; |