forked from phoedos/pmd
55d91791c3
See #4065
793 lines
20 KiB
Plaintext
793 lines
20 KiB
Plaintext
//Copied from https://github.com/DigiArea/es5-model/blob/master/com.digiarea.es5/src/com/digiarea/es5/parser/es5.jj
|
|
//Revision: 920ad7d073f2a158fe15553fdd695c846dc19996
|
|
//Date: 02-06-2016
|
|
|
|
options {
|
|
BUILD_PARSER=false;
|
|
STATIC = false;
|
|
DEBUG_PARSER = false;
|
|
DEBUG_TOKEN_MANAGER = false;
|
|
JAVA_UNICODE_ESCAPE = false;
|
|
UNICODE_INPUT = true;
|
|
// JDK_VERSION = "1.5";
|
|
}
|
|
|
|
PARSER_BEGIN(Ecmascript5ParserImpl)
|
|
package net.sourceforge.pmd.lang.ecmascript5.ast;
|
|
|
|
public class Ecmascript5ParserImpl {
|
|
|
|
}
|
|
|
|
PARSER_END(Ecmascript5ParserImpl)
|
|
|
|
/* WHITE SPACE - 7.2 */
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
SKIP :
|
|
{
|
|
< TAB: "\u0009" >
|
|
| < VT: "\u000B" >
|
|
| < FF: "\u000C" >
|
|
| < SP: "\u0020" >
|
|
| < NBSP: "\u00A0" >
|
|
| < BOM: "\uFEFF" >
|
|
| < USP:
|
|
[
|
|
"\u1680", /* OGHAM SPACE MARK */
|
|
"\u180E", /* MONGOLIAN VOWEL SEPARATOR */
|
|
"\u2000", /* EN QUAD */
|
|
"\u2001", /* EM QUAD */
|
|
"\u2002", /* EN SPACE */
|
|
"\u2003", /* EM SPACE */
|
|
"\u2004", /* THREE-PER-EM SPACE */
|
|
"\u2005", /* FOUR-PER-EM SPACE */
|
|
"\u2006", /* SIX-PER-EM SPACE */
|
|
"\u2007", /* FIGURE SPACE */
|
|
"\u2008", /* PUNCTUATION SPACE */
|
|
"\u2009", /* THIN SPACE */
|
|
"\u200A", /* HAIR SPACE */
|
|
"\u202F", /* NARROW NO-BREAK SPACE */
|
|
"\u205F", /* MEDIUM MATHEMATICAL SPACE */
|
|
"\u3000" /* IDEOGRAPHIC SPACE */
|
|
]
|
|
>
|
|
}
|
|
TOKEN : {
|
|
< #LF: "\n" >
|
|
| < #CR: "\r" >
|
|
| < #LS: "\u2028" >
|
|
| < #PS: "\u2029" >
|
|
}
|
|
|
|
/* 7.3 - LINE TERMINATORS */
|
|
<DEFAULT,NOREGEXP>
|
|
SPECIAL_TOKEN :
|
|
{
|
|
< EOL: <CR>(<LF>)?|<LF>|<LS>|<PS> >
|
|
}
|
|
|
|
<NOEOL>
|
|
TOKEN :
|
|
{
|
|
< NO_SKIP_EOL: <CR>(<LF>)?|<LF>|<LS>|<PS> >
|
|
}
|
|
|
|
/* COMMENTS */
|
|
|
|
/* 7.4 - COMMENTS */
|
|
<DEFAULT,NOREGEXP, NOEOL>
|
|
SPECIAL_TOKEN : {
|
|
< SINGLE_LINE_COMMENT: "//" (~["\n", "\r", "\u2028", "\u2029"])* (<EOL>)* >
|
|
}
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
MORE :
|
|
{
|
|
< "/**" ~[ "/" ] >
|
|
{
|
|
input_stream.backup(1);
|
|
}
|
|
: IN_JS_DOC_COMMENT
|
|
| < "/*" > : IN_MULTI_LINE_COMMENT
|
|
}
|
|
|
|
< IN_JS_DOC_COMMENT >
|
|
SPECIAL_TOKEN :
|
|
{
|
|
< JS_DOC_COMMENT : "*/" (<EOL>)* > : DEFAULT
|
|
}
|
|
|
|
< IN_MULTI_LINE_COMMENT >
|
|
SPECIAL_TOKEN :
|
|
{
|
|
< MULTI_LINE_COMMENT : "*/" (<EOL>)* > : DEFAULT
|
|
}
|
|
|
|
< IN_JS_DOC_COMMENT, IN_MULTI_LINE_COMMENT>
|
|
MORE :
|
|
{
|
|
<~[]>
|
|
}
|
|
|
|
/* RESERVED WORDS AND LITERALS EcmaScript 7.4 */
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< BREAK: "break" > : NOEOL
|
|
| < CONTINUE: "continue" > : NOEOL
|
|
| < DELETE: "delete" > : DEFAULT
|
|
| < ELSE: "else" > : DEFAULT
|
|
| < FOR: "for" > : DEFAULT
|
|
| < FUNCTION: "function" > : DEFAULT
|
|
| < IF: "if" > : DEFAULT
|
|
| < IN: "in" > : DEFAULT
|
|
| < NEW: "new" > : DEFAULT
|
|
| < RETURN: "return" > : NOEOL
|
|
| < THIS: "this" > : DEFAULT
|
|
| < TYPEOF: "typeof" > : DEFAULT
|
|
| < VAR: "var" > : DEFAULT
|
|
| < VOID: "void" > : DEFAULT
|
|
| < WHILE: "while" > : DEFAULT
|
|
| < WITH: "with" > : DEFAULT
|
|
|
|
|
|
| < CASE: "case" > : DEFAULT
|
|
| < CATCH: "catch" > : DEFAULT
|
|
| < CLASS: "class" > : DEFAULT
|
|
| < CONST: "const" > : DEFAULT
|
|
| < DEBUGGER: "debugger" > : DEFAULT
|
|
| < _DEFAULT: "default" > : DEFAULT
|
|
| < DO: "do" > : DEFAULT
|
|
| < ENUM: "enum" > : DEFAULT
|
|
| < EXPORT: "export" > : DEFAULT
|
|
| < EXTENDS: "extends" > : DEFAULT
|
|
| < FINALLY: "finally" > : DEFAULT
|
|
| < IMPORT: "import" > : DEFAULT
|
|
| < SUPER: "super" > : DEFAULT
|
|
| < SWITCH: "switch" > : DEFAULT
|
|
| < THROW: "throw" > : NOEOL
|
|
| < TRY: "try" > : DEFAULT
|
|
| < INSTANCEOF: "instanceof" > : DEFAULT
|
|
|
|
// They are not supposed to be keywords
|
|
| < TRUE: "true" > : DEFAULT
|
|
| < FALSE: "false" > : DEFAULT
|
|
| < NULL: "null" > : DEFAULT
|
|
| < GET: "get" > : DEFAULT
|
|
| < SET: "set" > : DEFAULT
|
|
}
|
|
|
|
/* RESERVED WORDS AND LITERALS Introduced in JavaScript 1.7
|
|
* https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/let
|
|
*/
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< LET: "let" > : NOEOL
|
|
}
|
|
|
|
/* LITERALS EcmaScript 7.7
|
|
* Decimal and floating point literals are recognized separately (to ease storing?)
|
|
* FLoating points literals are too permissive (ONLY ONE LEADING ZERO ALLOWED)
|
|
*/
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > : NOREGEXP
|
|
|
|
|
< HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > : NOREGEXP
|
|
|
|
|
< OCTAL_LITERAL: "0" (["0"-"7"])* > : NOREGEXP
|
|
|
|
|
< FLOATING_POINT_LITERAL:
|
|
(["0"-"9"])+ "." (["0"-"9"])* (<EXPONENT>)?
|
|
| "." (["0"-"9"])+ (<EXPONENT>)?
|
|
| (["0"-"9"])+ (<EXPONENT>)?
|
|
> : NOREGEXP
|
|
|
|
|
< #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >
|
|
|
|
|
< STRING_LITERAL:
|
|
"\""
|
|
<DOUBLE_STRING_LITERAL_BODY>
|
|
"\""
|
|
| "'"
|
|
<SINGLE_STRING_LITERAL_BODY>
|
|
"'"
|
|
| "`"
|
|
<BACKTICK_STRING_LITERAL_BODY>
|
|
"`"
|
|
> : NOREGEXP
|
|
|
|
|
< #BACKTICK_STRING_LITERAL_BODY:(
|
|
("\\" ~[] )
|
|
| (~["`", "\\"])
|
|
)*
|
|
>
|
|
|
|
|
< #SINGLE_STRING_LITERAL_BODY:(
|
|
( "\\" ~[ "\r" , "\n" , "\u2028" , "\u2029"] )
|
|
| ("\\" ( "\r\n" | "\r" | "\n" | "\u2028" | "\u2029") )
|
|
| (~["\'","\n","\r","\u2028","\u2029","\\"])
|
|
)*
|
|
>
|
|
|
|
|
< #DOUBLE_STRING_LITERAL_BODY:(
|
|
( "\\" ~[ "\r" , "\n" , "\u2028" , "\u2029"] )
|
|
| ("\\" ( "\r\n" | "\r" | "\n" | "\u2028" | "\u2029") )
|
|
| (~["\"","\n","\r","\u2028","\u2029", "\\"])
|
|
)*
|
|
>
|
|
|
|
|
< UNTERMINATED_STRING_LITERAL:
|
|
"\""
|
|
<DOUBLE_STRING_LITERAL_BODY>
|
|
(["\n","\r","\u2028","\u2029"])
|
|
| "'"
|
|
<SINGLE_STRING_LITERAL_BODY>
|
|
(["\n","\r","\u2028","\u2029"])
|
|
>
|
|
}
|
|
|
|
<DEFAULT,NOEOL>
|
|
TOKEN: {
|
|
< REGULAR_EXPRESSION_LITERAL:
|
|
"/"
|
|
<REGULAR_EXPRESSION_BODY>
|
|
"/"
|
|
(<IDENTIFIER_PART>)*
|
|
>
|
|
|
|
|
<# REGULAR_EXPRESSION_BODY:
|
|
<REGULAR_EXPRESSION_FIRST_CHAR> (<REGULAR_EXPRESSION_CHAR>)*
|
|
>
|
|
| <# REGULAR_EXPRESSION_CHAR:
|
|
~[ "\r" , "\n" , "\u2028" , "\u2029", "\\", "/", "[" ]
|
|
| <REGULAR_EXPRESSION_BACKSLASH_SEQUENCE>
|
|
| <REGULAR_EXPRESSION_CLASS>
|
|
>
|
|
| <# REGULAR_EXPRESSION_FIRST_CHAR:
|
|
~[ "\r" , "\n" , "\u2028" , "\u2029", "*", "\\", "/", "[" ]
|
|
| <REGULAR_EXPRESSION_BACKSLASH_SEQUENCE>
|
|
| <REGULAR_EXPRESSION_CLASS>
|
|
>
|
|
| <# REGULAR_EXPRESSION_BACKSLASH_SEQUENCE:
|
|
"\\" ~[ "\r" , "\n" , "\u2028" , "\u2029" ]
|
|
>
|
|
| <# REGULAR_EXPRESSION_CLASS:
|
|
"[" (<REGULAR_EXPRESSION_CLASS_CHAR>)* "]"
|
|
>
|
|
| <# REGULAR_EXPRESSION_CLASS_CHAR:
|
|
~[ "\r" , "\n" , "\u2028" , "\u2029", "\\", "]" ]
|
|
| <REGULAR_EXPRESSION_BACKSLASH_SEQUENCE>
|
|
>
|
|
}
|
|
|
|
/* IDENTIFIERS */
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< IDENTIFIER: <IDENTIFIER_START> (<IDENTIFIER_PART>)* > : NOREGEXP
|
|
|
|
|
< #IDENTIFIER_START:
|
|
<UNICODE_LETTER>
|
|
|
|
|
[
|
|
"$",
|
|
"_"
|
|
]
|
|
|
|
|
<UNICODE_ESCAPE_SEQUENCE>
|
|
>
|
|
|
|
|
< #IDENTIFIER_PART:
|
|
<IDENTIFIER_START>
|
|
|
|
|
<UNICODE_COMBINING_MARK>
|
|
|
|
|
<UNICODE_DIGIT>
|
|
|
|
|
<UNICODE_CONNECTOR_PUNCTUATION>
|
|
|
|
|
<ZWNJ>
|
|
|
|
|
<ZWJ>
|
|
>
|
|
|
|
|
< #UNICODE_LETTER: /* Unicode categories: Lu, Ll, Lt, Lm, Lo, Ni */
|
|
[
|
|
"\u0041"-"\u005A",
|
|
"\u0061"-"\u007A",
|
|
"\u00AA",
|
|
"\u00B5",
|
|
"\u00BA",
|
|
"\u00C0"-"\u00D6",
|
|
"\u00D8"-"\u00F6",
|
|
"\u00F8"-"\u021F",
|
|
"\u0222"-"\u0233",
|
|
"\u0250"-"\u02AD",
|
|
"\u02B0"-"\u02B8",
|
|
"\u02BB"-"\u02C1",
|
|
"\u02D0"-"\u02D1",
|
|
"\u02E0"-"\u02E4",
|
|
"\u02EE",
|
|
"\u037A",
|
|
"\u0386",
|
|
"\u0388"-"\u038A",
|
|
"\u038C",
|
|
"\u038E"-"\u03A1",
|
|
"\u03A3"-"\u03CE",
|
|
"\u03D0"-"\u03D7",
|
|
"\u03DA"-"\u03F3",
|
|
"\u0400"-"\u0481",
|
|
"\u048C"-"\u04C4",
|
|
"\u04C7"-"\u04C8",
|
|
"\u04CB"-"\u04CC",
|
|
"\u04D0"-"\u04F5",
|
|
"\u04F8"-"\u04F9",
|
|
"\u0531"-"\u0556",
|
|
"\u0559",
|
|
"\u0561"-"\u0587",
|
|
"\u05D0"-"\u05EA",
|
|
"\u05F0"-"\u05F2",
|
|
"\u0621"-"\u063A",
|
|
"\u0640"-"\u064A",
|
|
"\u0671"-"\u06D3",
|
|
"\u06D5",
|
|
"\u06E5"-"\u06E6",
|
|
"\u06FA"-"\u06FC",
|
|
"\u0710",
|
|
"\u0712"-"\u072C",
|
|
"\u0780"-"\u07A5",
|
|
"\u0905"-"\u0939",
|
|
"\u093D",
|
|
"\u0950",
|
|
"\u0958"-"\u0961",
|
|
"\u0985"-"\u098C",
|
|
"\u098F"-"\u0990",
|
|
"\u0993"-"\u09A8",
|
|
"\u09AA"-"\u09B0",
|
|
"\u09B2",
|
|
"\u09B6"-"\u09B9",
|
|
"\u09DC"-"\u09DD",
|
|
"\u09DF"-"\u09E1",
|
|
"\u09F0"-"\u09F1",
|
|
"\u0A05"-"\u0A0A",
|
|
"\u0A0F"-"\u0A10",
|
|
"\u0A13"-"\u0A28",
|
|
"\u0A2A"-"\u0A30",
|
|
"\u0A32"-"\u0A33",
|
|
"\u0A35"-"\u0A36",
|
|
"\u0A38"-"\u0A39",
|
|
"\u0A59"-"\u0A5C",
|
|
"\u0A5E",
|
|
"\u0A72"-"\u0A74",
|
|
"\u0A85"-"\u0A8B",
|
|
"\u0A8D",
|
|
"\u0A8F"-"\u0A91",
|
|
"\u0A93"-"\u0AA8",
|
|
"\u0AAA"-"\u0AB0",
|
|
"\u0AB2"-"\u0AB3",
|
|
"\u0AB5"-"\u0AB9",
|
|
"\u0ABD",
|
|
"\u0AD0",
|
|
"\u0AE0",
|
|
"\u0B05"-"\u0B0C",
|
|
"\u0B0F"-"\u0B10",
|
|
"\u0B13"-"\u0B28",
|
|
"\u0B2A"-"\u0B30",
|
|
"\u0B32"-"\u0B33",
|
|
"\u0B36"-"\u0B39",
|
|
"\u0B3D",
|
|
"\u0B5C"-"\u0B5D",
|
|
"\u0B5F"-"\u0B61",
|
|
"\u0B85"-"\u0B8A",
|
|
"\u0B8E"-"\u0B90",
|
|
"\u0B92"-"\u0B95",
|
|
"\u0B99"-"\u0B9A",
|
|
"\u0B9C",
|
|
"\u0B9E"-"\u0B9F",
|
|
"\u0BA3"-"\u0BA4",
|
|
"\u0BA8"-"\u0BAA",
|
|
"\u0BAE"-"\u0BB5",
|
|
"\u0BB7"-"\u0BB9",
|
|
"\u0C05"-"\u0C0C",
|
|
"\u0C0E"-"\u0C10",
|
|
"\u0C12"-"\u0C28",
|
|
"\u0C2A"-"\u0C33",
|
|
"\u0C35"-"\u0C39",
|
|
"\u0C60"-"\u0C61",
|
|
"\u0C85"-"\u0C8C",
|
|
"\u0C8E"-"\u0C90",
|
|
"\u0C92"-"\u0CA8",
|
|
"\u0CAA"-"\u0CB3",
|
|
"\u0CB5"-"\u0CB9",
|
|
"\u0CDE",
|
|
"\u0CE0"-"\u0CE1",
|
|
"\u0D05"-"\u0D0C",
|
|
"\u0D0E"-"\u0D10",
|
|
"\u0D12"-"\u0D28",
|
|
"\u0D2A"-"\u0D39",
|
|
"\u0D60"-"\u0D61",
|
|
"\u0D85"-"\u0D96",
|
|
"\u0D9A"-"\u0DB1",
|
|
"\u0DB3"-"\u0DBB",
|
|
"\u0DBD",
|
|
"\u0DC0"-"\u0DC6",
|
|
"\u0E01"-"\u0E30",
|
|
"\u0E32"-"\u0E33",
|
|
"\u0E40"-"\u0E46",
|
|
"\u0E81"-"\u0E82",
|
|
"\u0E84",
|
|
"\u0E87"-"\u0E88",
|
|
"\u0E8A",
|
|
"\u0E8D",
|
|
"\u0E94"-"\u0E97",
|
|
"\u0E99"-"\u0E9F",
|
|
"\u0EA1"-"\u0EA3",
|
|
"\u0EA5",
|
|
"\u0EA7",
|
|
"\u0EAA"-"\u0EAB",
|
|
"\u0EAD"-"\u0EB0",
|
|
"\u0EB2"-"\u0EB3",
|
|
"\u0EBD"-"\u0EC4",
|
|
"\u0EC6",
|
|
"\u0EDC"-"\u0EDD",
|
|
"\u0F00",
|
|
"\u0F40"-"\u0F6A",
|
|
"\u0F88"-"\u0F8B",
|
|
"\u1000"-"\u1021",
|
|
"\u1023"-"\u1027",
|
|
"\u1029"-"\u102A",
|
|
"\u1050"-"\u1055",
|
|
"\u10A0"-"\u10C5",
|
|
"\u10D0"-"\u10F6",
|
|
"\u1100"-"\u1159",
|
|
"\u115F"-"\u11A2",
|
|
"\u11A8"-"\u11F9",
|
|
"\u1200"-"\u1206",
|
|
"\u1208"-"\u1246",
|
|
"\u1248",
|
|
"\u124A"-"\u124D",
|
|
"\u1250"-"\u1256",
|
|
"\u1258",
|
|
"\u125A"-"\u125D",
|
|
"\u1260"-"\u1286",
|
|
"\u1288",
|
|
"\u128A"-"\u128D",
|
|
"\u1290"-"\u12AE",
|
|
"\u12B0",
|
|
"\u12B2"-"\u12B5",
|
|
"\u12B8"-"\u12BE",
|
|
"\u12C0",
|
|
"\u12C2"-"\u12C5",
|
|
"\u12C8"-"\u12CE",
|
|
"\u12D0"-"\u12D6",
|
|
"\u12D8"-"\u12EE",
|
|
"\u12F0"-"\u130E",
|
|
"\u1310",
|
|
"\u1312"-"\u1315",
|
|
"\u1318"-"\u131E",
|
|
"\u1320"-"\u1346",
|
|
"\u1348"-"\u135A",
|
|
"\u13A0"-"\u13B0",
|
|
"\u13B1"-"\u13F4",
|
|
"\u1401"-"\u1676",
|
|
"\u1681"-"\u169A",
|
|
"\u16A0"-"\u16EA",
|
|
"\u1780"-"\u17B3",
|
|
"\u1820"-"\u1877",
|
|
"\u1880"-"\u18A8",
|
|
"\u1E00"-"\u1E9B",
|
|
"\u1EA0"-"\u1EE0",
|
|
"\u1EE1"-"\u1EF9",
|
|
"\u1EE1"-"\u1EEF",
|
|
"\u1F00"-"\u1F15",
|
|
"\u1F18"-"\u1F1D",
|
|
"\u1F20"-"\u1F39",
|
|
"\u1F3A"-"\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",
|
|
"\u207F",
|
|
"\u2102",
|
|
"\u2107",
|
|
"\u210A"-"\u2113",
|
|
"\u2115",
|
|
"\u2119"-"\u211D",
|
|
"\u2124",
|
|
"\u2126",
|
|
"\u2128",
|
|
"\u212A"-"\u212D",
|
|
"\u212F"-"\u2131",
|
|
"\u2133"-"\u2139",
|
|
"\u2160"-"\u2183",
|
|
"\u3005"-"\u3007",
|
|
"\u3021"-"\u3029",
|
|
"\u3031"-"\u3035",
|
|
"\u3038"-"\u303A",
|
|
"\u3041"-"\u3094",
|
|
"\u309D"-"\u309E",
|
|
"\u30A1"-"\u30FA",
|
|
"\u30FC"-"\u30FE",
|
|
"\u3105"-"\u312C",
|
|
"\u3131"-"\u318E",
|
|
"\u31A0"-"\u31B7",
|
|
"\u3400",
|
|
"\u4DB5",
|
|
"\u4E00"-"\u9EA5",
|
|
"\uA000"-"\uA48C",
|
|
"\uA490"-"\uABFF",
|
|
"\uAC00"-"\ud7AF",
|
|
"\uF900"-"\uFA2D",
|
|
"\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"-"\uFDFB",
|
|
"\uFE70"-"\uFE72",
|
|
"\uFE74",
|
|
"\uFE76"-"\uFEFC",
|
|
"\uFF21"-"\uFF3A",
|
|
"\uFF41"-"\uFF5A",
|
|
"\uFF66"-"\uFFBE",
|
|
"\uFFC2"-"\uFFC7",
|
|
"\uFFCA"-"\uFFCF",
|
|
"\uFFD2"-"\uFFD7",
|
|
"\uFFDA"-"\uFFDC"
|
|
]
|
|
>
|
|
|
|
|
< #UNICODE_ESCAPE_SEQUENCE: "\\" "u" <HEX_DIGIT> <HEX_DIGIT> <HEX_DIGIT> <HEX_DIGIT> >
|
|
|
|
|
< #UNICODE_COMBINING_MARK: /* Unicode categories: Mn, Mc */
|
|
[
|
|
"\u0300"-"\u034E",
|
|
"\u0360"-"\u0362",
|
|
"\u0483"-"\u0486",
|
|
"\u0591"-"\u05A1",
|
|
"\u05A3"-"\u05B9",
|
|
"\u05BB"-"\u05BD",
|
|
"\u05BF",
|
|
"\u05C1"-"\u05C2",
|
|
"\u05C4",
|
|
"\u064B"-"\u0655",
|
|
"\u0670",
|
|
"\u06D6"-"\u06DC",
|
|
"\u06DF"-"\u06E4",
|
|
"\u06E7"-"\u06E8",
|
|
"\u06EA"-"\u06ED",
|
|
"\u0711",
|
|
"\u0730"-"\u074A",
|
|
"\u07A6"-"\u07B0",
|
|
"\u0901"-"\u0903",
|
|
"\u093C",
|
|
"\u093E"-"\u094D",
|
|
"\u0951"-"\u0954",
|
|
"\u0962"-"\u0963",
|
|
"\u0981"-"\u0983",
|
|
"\u09BC"-"\u09C4",
|
|
"\u09C7"-"\u09C8",
|
|
"\u09CB"-"\u09CD",
|
|
"\u09D7",
|
|
"\u09E2"-"\u09E3",
|
|
"\u0A02",
|
|
"\u0A3C",
|
|
"\u0A3E"-"\u0A42",
|
|
"\u0A47"-"\u0A48",
|
|
"\u0A4B"-"\u0A4D",
|
|
"\u0A70"-"\u0A71",
|
|
"\u0A81"-"\u0A83",
|
|
"\u0ABC",
|
|
"\u0ABE"-"\u0AC5",
|
|
"\u0AC7"-"\u0AC9",
|
|
"\u0ACB"-"\u0ACD",
|
|
"\u0B01"-"\u0B03",
|
|
"\u0B3C",
|
|
"\u0B3E"-"\u0B43",
|
|
"\u0B47"-"\u0B48",
|
|
"\u0B4B"-"\u0B4D",
|
|
"\u0B56"-"\u0B57",
|
|
"\u0B82"-"\u0B83",
|
|
"\u0BBE"-"\u0BC2",
|
|
"\u0BC6"-"\u0BC8",
|
|
"\u0BCA"-"\u0BCD",
|
|
"\u0BD7",
|
|
"\u0C01"-"\u0C03",
|
|
"\u0C3E"-"\u0C44",
|
|
"\u0C46"-"\u0C48",
|
|
"\u0C4A"-"\u0C4D",
|
|
"\u0C55"-"\u0C56",
|
|
"\u0C82"-"\u0C83",
|
|
"\u0CBE"-"\u0CC4",
|
|
"\u0CC6"-"\u0CC8",
|
|
"\u0CCA"-"\u0CCD",
|
|
"\u0CD5"-"\u0CD6",
|
|
"\u0D02"-"\u0D03",
|
|
"\u0D3E"-"\u0D43",
|
|
"\u0D46"-"\u0D48",
|
|
"\u0D4A"-"\u0D4D",
|
|
"\u0D57",
|
|
"\u0D82"-"\u0D83",
|
|
"\u0DCA",
|
|
"\u0DCF"-"\u0DD4",
|
|
"\u0DD6",
|
|
"\u0DD8"-"\u0DDF",
|
|
"\u0DF2"-"\u0DF3",
|
|
"\u0E31",
|
|
"\u0E34"-"\u0E3A",
|
|
"\u0E47"-"\u0E4E",
|
|
"\u0EB1",
|
|
"\u0EB4"-"\u0EB9",
|
|
"\u0EBB"-"\u0EBC",
|
|
"\u0EC8"-"\u0ECD",
|
|
"\u0F18"-"\u0F19",
|
|
"\u0F35",
|
|
"\u0F37",
|
|
"\u0F39",
|
|
"\u0F3E"-"\u0F3F",
|
|
"\u0F71"-"\u0F84",
|
|
"\u0F86"-"\u0F87",
|
|
"\u0F90"-"\u0F97",
|
|
"\u0F99"-"\u0FBC",
|
|
"\u0FC6",
|
|
"\u102C"-"\u1032",
|
|
"\u1036"-"\u1039",
|
|
"\u1056"-"\u1059",
|
|
"\u17B4"-"\u17D3",
|
|
"\u18A9",
|
|
"\u20D0"-"\u20DC",
|
|
"\u20E1",
|
|
"\u302A"-"\u302F",
|
|
"\u3099"-"\u309A",
|
|
"\uFB1E",
|
|
"\uFE20"-"\uFE23"
|
|
]
|
|
>
|
|
|
|
|
< #UNICODE_DIGIT: /* Unicode categories: Nd */
|
|
[
|
|
"\u0030"-"\u0039",
|
|
"\u0660"-"\u0669",
|
|
"\u06F0"-"\u06F9",
|
|
"\u0966"-"\u096F",
|
|
"\u09E6"-"\u09EF",
|
|
"\u0A66"-"\u0A6F",
|
|
"\u0AE6"-"\u0AEF",
|
|
"\u0B66"-"\u0B6F",
|
|
"\u0BE7"-"\u0BEF",
|
|
"\u0C66"-"\u0C6F",
|
|
"\u0CE6"-"\u0CEF",
|
|
"\u0D66"-"\u0D6F",
|
|
"\u0E50"-"\u0E59",
|
|
"\u0ED0"-"\u0ED9",
|
|
"\u0F20"-"\u0F29",
|
|
"\u1040"-"\u1049",
|
|
"\u1369"-"\u1371",
|
|
"\u17E0"-"\u17E9",
|
|
"\u1810"-"\u1819",
|
|
"\uFF10"-"\uFF19"
|
|
]
|
|
>
|
|
|
|
|
< #UNICODE_CONNECTOR_PUNCTUATION: /* Unicode categories: Pc */
|
|
[
|
|
"\u005F",
|
|
"\u203F"-"\u2040",
|
|
"\u30FB",
|
|
"\uFE33"-"\uFE34",
|
|
"\uFE4D"-"\uFE4F",
|
|
"\uFF3F",
|
|
"\uFF65"
|
|
]
|
|
>
|
|
|
|
|
< #ZWNJ: "\u200D"> /* Zero width joiner (ZWJ) */
|
|
|
|
|
< #ZWJ: "\u200C"> /* Zero width non-joiner (ZWNJ) */
|
|
}
|
|
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< HEX_DIGIT: ["0"-"9"] | ["a"-"f"] | ["A"-"F"] >
|
|
}
|
|
|
|
/* SEPARATORS */
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< LPAREN: "(" > : DEFAULT
|
|
| < RPAREN: ")" > : NOREGEXP
|
|
| < LBRACE: "{" > : DEFAULT
|
|
| < RBRACE: "}" > : DEFAULT
|
|
| < LBRACKET: "[" > : DEFAULT
|
|
| < RBRACKET: "]" > : NOREGEXP
|
|
| < SEMICOLON: ";" > : DEFAULT
|
|
| < COMMA: "," > : DEFAULT
|
|
| < DOT: "." > : DEFAULT
|
|
}
|
|
|
|
/* OPERATORS */
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< ASSIGN: "=" > : DEFAULT
|
|
| < GT: ">" > : DEFAULT
|
|
| < LT: "<" > : DEFAULT
|
|
| < BANG: "!" > : DEFAULT
|
|
| < TILDE: "~" > : DEFAULT
|
|
| < HOOK: "?" > : DEFAULT
|
|
| < COLON: ":" > : DEFAULT
|
|
| < STRICT_EQ: "===" > : DEFAULT
|
|
| < STRICT_NEQ: "!==" > : DEFAULT
|
|
| < EQ: "==" > : DEFAULT
|
|
| < LE: "<=" > : DEFAULT
|
|
| < GE: ">=" > : DEFAULT
|
|
| < NE: "!=" > : DEFAULT
|
|
| < SC_OR: "||" > : DEFAULT
|
|
| < SC_AND: "&&" > : DEFAULT
|
|
| < INCR: "++" > { if (matchedToken.specialToken != null && matchedToken.specialToken.kind == EOL) { matchedToken = matchedToken.withKind(NL_INCR); } } : DEFAULT
|
|
| < NL_INCR: [ "\r" , "\n" , "\u2028" , "\u2029"] "++" > : DEFAULT
|
|
| < DECR: "--" > { if (matchedToken.specialToken != null && matchedToken.specialToken.kind == EOL) { matchedToken = matchedToken.withKind(NL_DECR); } } : DEFAULT
|
|
| < NL_DECR: [ "\r" , "\n" , "\u2028" , "\u2029"] "--" > : DEFAULT
|
|
| < PLUS: "+" > : DEFAULT
|
|
| < MINUS: "-" > : DEFAULT
|
|
| < STAR: "*" > : DEFAULT
|
|
| < SLASH: "/" > : DEFAULT
|
|
| < BIT_AND: "&" > : DEFAULT
|
|
| < BIT_OR: "|" > : DEFAULT
|
|
| < XOR: "^" > : DEFAULT
|
|
| < REM: "%" > : DEFAULT
|
|
| < LSHIFT: "<<" > : DEFAULT
|
|
| < RSIGNEDSHIFT: ">>" > : DEFAULT
|
|
| < RUNSIGNEDSHIFT: ">>>" > : DEFAULT
|
|
| < PLUSASSIGN: "+=" > : DEFAULT
|
|
| < MINUSASSIGN: "-=" > : DEFAULT
|
|
| < STARASSIGN: "*=" > : DEFAULT
|
|
| < SLASHASSIGN: "/=" > : DEFAULT
|
|
| < ANDASSIGN: "&=" > : DEFAULT
|
|
| < ORASSIGN: "|=" > : DEFAULT
|
|
| < XORASSIGN: "^=" > : DEFAULT
|
|
| < REMASSIGN: "%=" > : DEFAULT
|
|
| < LSHIFTASSIGN: "<<=" > : DEFAULT
|
|
| < RSIGNEDSHIFTASSIGN: ">>=" > : DEFAULT
|
|
| < RUNSIGNEDSHIFTASSIGN: ">>>=" > : DEFAULT
|
|
}
|
|
|
|
/*
|
|
* Decorators
|
|
* See https://github.com/tc39/proposal-decorators
|
|
*/
|
|
<DEFAULT,NOREGEXP,NOEOL>
|
|
TOKEN :
|
|
{
|
|
< AT: "@" > : DEFAULT
|
|
}
|