/* Copyright (c) 2004-2005, The Dojo Foundation All Rights Reserved. Licensed under the Academic Free License version 2.1 or above OR the modified BSD license. For more information on Dojo licensing, see: http://dojotoolkit.org/community/licensing.shtml Code donated to the Dojo Foundation by AOL LLC under the terms of the Dojo CCLA (http://dojotoolkit.org/ccla.txt). */ options { /* * Default value is false. When set to true, the generated parser * uses an input stream object that processes Java Unicode escapes before * sending characters to the token manager. */ JAVA_UNICODE_ESCAPE = true; /* * Default value is false. When set to true, the generated parser * uses uses an input stream object that reads Unicode files. By default, ASCII files * are assumed. */ UNICODE_INPUT = true; /* * JDK Version */ JDK_VERSION = "1.5"; } PARSER_BEGIN(EcmaScriptParser) package tmp.generated_ecmascript; import java.io.*; import java.util.*; import cide.gast.*; import cide.gparser.*; public class EcmaScriptParser { // void jjtreeOpenNodeScope(Node n){ // Token t = getToken(1); // if(t != null){ // ((SimpleNode) n).setBeginToken(t); // } // } // // void jjtreeCloseNodeScope(Node n){ // Token t = getToken(0); // if(t != null){ // ((SimpleNode) n).setEndToken(t); // } // } } PARSER_END(EcmaScriptParser) TOKEN_MGR_DECLS : { public int htmlTokenNestingLevel = 0; public boolean expectActionScript = false; } /***************************************** * LEXICAL & REGEXP GRAMMARS STARTS HERE * *****************************************/ /* /* Section 7 : Lexical Conventions */ /* TOKEN: { < SOURCE_CHAR: ["\u0000"-"\uFFFE"] > } MORE : { < INPUT_ELEMENT_DIV: | | | <_TOKEN> | > } MORE: { < INPUTELEMENTREGEXP: | | | <_TOKEN> | > } */ /* Section 7.2 : White Space */ SPECIAL_TOKEN : { | | | | > | < #TAB: "\u0009" | "\t" > /* TAB */ | < #VT: "\u000B" > /* Vertical Tab */ | < #FF: "\u000C" | "\f"> /* Form Feed */ | < #SP: "\u0020" | " " > /* Space */ | < #NBSP: "\u00A0" > /* No-break space */ | < #USP: /* Other Unicode space seperator */ ["\u2000"] | ["\u2001"] | ["\u2002"] | ["\u2003"] | ["\u2004"] | ["\u2005"] | ["\u2006"] | ["\u2007"] | ["\u2008"] | ["\u2009"] | ["\u200A"] | ["\u200B"] | ["\u3000"] > } /* Section 7.3 : Line Terminators */ SPECIAL_TOKEN : { | | | > | < #LF: "\n" > /* Line Feed */ | < #CR: "\r" > /* Carriage Return */ | < #LS: "\u2028" > /* Line separator */ | < #PS: "\u2029" > /* Paragraph separator */ } /* Comments */ MORE : { "//" : IN_SINGLE_LINE_COMMENT | "/*" : IN_MULTI_LINE_COMMENT } SPECIAL_TOKEN : { : DEFAULT } SPECIAL_TOKEN : { : DEFAULT } MORE : { < ~[] > } /* Section 7.5.1: Reserved Words */ TOKEN : { < BREAK: "break" > : DEFAULT | < CONTINUE: "continue" > : DEFAULT | < DELETE: "delete" > : DEFAULT | < ELSE: "else" > : DEFAULT | < FOR: "for" > : DEFAULT | < FUNCTION: "function" > : DEFAULT | < IF: "if" > : DEFAULT | < IN: "in" > : DEFAULT | < NEW: "new" > : DEFAULT | < RETURN: "return" > : DEFAULT | < THIS: "this" > : IN_REGEX | < 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" > : DEFAULT | < TRY: "try" > : DEFAULT } /* JScript .NET Tokens TOKEN : { < BYTE: "byte" > | < SBYTE: "sbyte" > | < SHORT: "short" > | < USHORT: "ushort" > | < UINT: "uint" > | < LONG: "long" > | < ULONG: "ulong" > | < FLOAT: "float" > | < NUMBER: "Number" > | < DOUBLE: "double" > | < DECIMAL: "decimal" > | < BOOLEAN: "boolean" > | < STRING: "String" > | < CHAR: "char" > } */ /* Section 7.7: Punctuators */ TOKEN : { < LBRACE: "{" > : DEFAULT | < RBRACE: "}" > : IN_REGEX | < LPAREN: "(" > : DEFAULT | < RPAREN: ")" > : IN_REGEX | < LBRACKET: "[" > : DEFAULT | < RBRACKET: "]" > : IN_REGEX | < DOT: "." > : DEFAULT | < SEMICOLON: ";" > : DEFAULT | < COMMA: "," > : DEFAULT | < LT: "<" > : DEFAULT | < GT: ">" > : DEFAULT | < LE: "<=" > : DEFAULT | < GE: ">=" > : DEFAULT | < EQ: "==" > : DEFAULT | < NE: "!=" > : DEFAULT | < SEQ: "===" > : DEFAULT /* Strict Equals Operator */ | < SNEQ: "!==" > : DEFAULT /* Strict Does-not-equal Operator */ | < PLUS: "+" > : DEFAULT | < MINUS: "-" > : DEFAULT | < STAR: "*" > : DEFAULT | < REM: "%" > : DEFAULT | < INCR: "++" > : IN_REGEX | < DECR: "--" > : IN_REGEX | < LSHIFT: "<<" > : DEFAULT | < RSHIFT: ">>" > : DEFAULT | < RUNSHIFT: ">>>" > : DEFAULT /* Unsigned Right Shift Operator */ | < BIT_AND: "&" > : DEFAULT | < BIT_OR: "|" > : DEFAULT | < XOR: "^" > : DEFAULT | < BANG: "!" > : DEFAULT | < TILDE: "~" > : IN_REGEX | < SC_AND: "&&" > : DEFAULT | < SC_OR: "||" > : DEFAULT | < HOOK: "?" > : DEFAULT | < COLON: ":" > : DEFAULT | < ASSIGN: "=" > : DEFAULT | < PLUSASSIGN: "+=" > : DEFAULT | < MINUSASSIGN: "-=" > : DEFAULT | < STARASSIGN: "*=" > : DEFAULT | < REMASSIGN: "%=" > : DEFAULT | < LSHIFTASSIGN: "<<=" > : DEFAULT | < RSIGNEDSHIFTASSIGN: ">>=" > : DEFAULT | < RUNSIGNEDSHIFTASSIGN: ">>>=" > : DEFAULT | < ANDASSIGN: "&=" > : DEFAULT | < ORASSIGN: "|=" > : DEFAULT | < XORASSIGN: "^=" > : DEFAULT | < INTANCE_OF: "instanceof" > : DEFAULT } /* Section 7.8.3: Numeric Literals */ TOKEN: { < DECIMAL_LITERAL : "." ()? ()? | "." ()? | ()? > : IN_REGEX | < #NON_ZERO_DIGIT: ["1"-"9"] > | < #EXPONENT_PART: ("e" | "E") (["+","-"])? > } TOKEN: { < DECIMAL_INTEGER_LITERAL: "0" | ()? > : IN_REGEX } TOKEN: { < HEX_INTEGER_LITERAL: "0" ["x","X"] ()+ > : IN_REGEX } TOKEN: { < DECIMAL_DIGITS: ()+ > : IN_REGEX } TOKEN: { < DECIMAL_DIGIT: ["0"-"9"] > } /* Section 7.8: Literals */ /* MORE: { < LITERAL: | | | > } */ /* Section 7.8.1: NULL Literals */ TOKEN: { < NULL_LITERAL: "null" > : IN_REGEX } /* Section 7.8.2: Boolean Literals */ TOKEN: { < BOOLEAN_LITERAL: "true" | "false" > : IN_REGEX } /* Section 7.8.4: String Literals */ TOKEN: { < STRING_LITERAL: "\"" ()? "\"" | "'" ()? "'" > : IN_REGEX | < #DOUBLE_STRING_CHARACTERS: ()* > | < #SINGLE_STRING_CHARACTERS: ()* > | < #DOUBLE_STRING_CHARACTER: (~["\"","\\","\n","\r","\u2028","\u2029"])* | "\\" > | < #SINGLE_STRING_CHARACTER: (~["'","\\","\n","\r","\u2028","\u2029"]) | "\\" > | < #ESCAPE_SEQUENCE: | "0" | | > | < #CHARACTER_ESCAPE_SEQUENCE: | > | < #SINGLE_ESCAPE_CHARACTER: ["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v"] > | < #NON_ESCAPE_CHARACTER: ~["\n","\r","\u2028","\u2029"] | ~["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v", "x", "u"] | ~["0"-"9"] > } TOKEN: { < HEX_ESCAPE_SEQUENCE: "x" > } /* TOKEN: { < ESCAPE_CHARACTER: ["'" , "\"" , "\\" , "b" , "f" , "n" , "r" , "t" , "v"] | ["0"-"9"] | "x" | "u" > } */ /* Section 7.6: Identifiers */ TOKEN: { < IDENTIFIER_NAME: ()* > : IN_REGEX | < #IDENTIFIER_START: | | | > | < #IDENTIFIER_PART: | | | | > | < #DOLLAR_SIGN: "$" > | < #UNDER_SCORE: "_" > | < #UNICODE_LETTER: ["A"-"Z"] | ["a"-"z"] | ["\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"] | ["\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"] | ["\u9FA5"] | ["\uA000"-"\uA48C"] | ["\uAC00"] | ["\uD7A3"] | ["\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 categories Non-spacing mark (MN) OR Combining spacing mark (MC) */ MORE: { < UNICODE_COMBINING_MARK: | > } TOKEN: { < MC: ["\u0903"] | ["\u093E"] | ["\u093F"] | ["\u0940"] | ["\u0949"] | ["\u094A"] | ["\u094B"] | ["\u094C"] | ["\u0982"] | ["\u0983"] | ["\u09BE"] | ["\u09BF"] | ["\u09C0"] | ["\u09C7"] | ["\u09C8"] | ["\u09CB"] | ["\u09CC"] | ["\u09D7"] | ["\u0A03"] | ["\u0A3E"] | ["\u0A3F"] | ["\u0A40"] | ["\u0A83"] | ["\u0ABE"] | ["\u0ABF"] | ["\u0AC0"] | ["\u0AC9"] | ["\u0ACB"] | ["\u0ACC"] | ["\u0B02"] | ["\u0B03"] | ["\u0B3E"] | ["\u0B40"] | ["\u0B47"] | ["\u0B48"] | ["\u0B4B"] | ["\u0B4C"] | ["\u0B57"] | ["\u0BBE"] | ["\u0BBF"] | ["\u0BC1"] | ["\u0BC2"] | ["\u0BC6"] | ["\u0BC7"] | ["\u0BC8"] | ["\u0BCA"] | ["\u0BCB"] | ["\u0BCC"] | ["\u0BD7"] | ["\u0C01"] | ["\u0C02"] | ["\u0C03"] | ["\u0C41"] | ["\u0C42"] | ["\u0C43"] | ["\u0C44"] | ["\u0C82"] | ["\u0C83"] | ["\u0CBE"] | ["\u0CC0"] | ["\u0CC1"] | ["\u0CC2"] | ["\u0CC3"] | ["\u0CC4"] | ["\u0CC7"] | ["\u0CC8"] | ["\u0CCA"] | ["\u0CCB"] | ["\u0CD5"] | ["\u0CD6"] | ["\u0D02"] | ["\u0D03"] | ["\u0D3E"] | ["\u0D3F"] | ["\u0D40"] | ["\u0D46"] | ["\u0D47"] | ["\u0D48"] | ["\u0D4A"] | ["\u0D4B"] | ["\u0D4C"] | ["\u0D57"] | ["\u0D82"] | ["\u0D83"] | ["\u0DCF"] | ["\u0DD0"] | ["\u0DD1"] | ["\u0DD8"] | ["\u0DD9"] | ["\u0DDA"] | ["\u0DDB"] | ["\u0DDC"] | ["\u0DDD"] | ["\u0DDE"] | ["\u0DDF"] | ["\u0DF2"] | ["\u0DF3"] | ["\u0F3E"] | ["\u0F3F"] | ["\u0F7F"] | ["\u102C"] | ["\u1031"] | ["\u1038"] | ["\u1056"] | ["\u1057"] | ["\u17B6"] | ["\u17BE"] | ["\u17BF"] | ["\u17C0"] | ["\u17C1"] | ["\u17C2"] | ["\u17C3"] | ["\u17C4"] | ["\u17C5"] | ["\u17C7"] | ["\u17C8"] | ["\u1923"] | ["\u1924"] | ["\u1925"] | ["\u1926"] | ["\u1929"] | ["\u192A"] | ["\u192B"] | ["\u1930"] | ["\u1931"] | ["\u1933"] | ["\u1934"] | ["\u1935"] | ["\u1936"] | ["\u1937"] | ["\u1938"] | ["\u19B0"] | ["\u19B1"] | ["\u19B2"] | ["\u19B3"] | ["\u19B4"] | ["\u19B5"] | ["\u19B6"] | ["\u19B7"] | ["\u19B8"] | ["\u19B9"] | ["\u19BA"] | ["\u19BB"] | ["\u19BC"] | ["\u19BD"] | ["\u19BE"] | ["\u19BF"] | ["\u19C0"] | ["\u19C8"] | ["\u19C9"] | ["\u1A19"] | ["\u1A1A"] | ["\u1A1B"] | ["\uA802"] | ["\uA823"] | ["\uA824"] | ["\uA827"] | ["\u1D16"] | ["\u1D16"] | ["\u1D16"] | ["\u1D16"] | ["\u1D16"] | ["\u1D17"] | ["\u1D17"] | ["\u1D17"] > | < MN: ["\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"] > } TOKEN: { < UNICODE_DIGIT: ["\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"] > } TOKEN: { < UNICODE_CONNECTOR_PUNCTUATION: ["\u005F"] | ["\u203F"-"\u2040"] | ["\u30FB"] | ["\uFE33"-"\uFE34"] | ["\uFE4D"-"\uFE4F"] | ["\uFF3F"] | ["\uFF65"] > } TOKEN: { < UNICODE_ESCAPE_SEQUENCE: "u" > } TOKEN: { < HEX_DIGIT: ["0"-"9"] | ["a"-"f"] | ["A"-"F"] > } TOKEN : { < SLASHASSIGN: "/=" > : DEFAULT | < SLASH: "/" > : DEFAULT } /* Section 7.8.5: Regular Expression Literals */ TOKEN : { < REGULAR_EXPRESSION_LITERAL: "/" ( (~["\n","\r","\\","/","*"]) | ) ( (~["\n","\r","\\","/"]) | )* "/" ()* > : IN_REGEX | < #BACKSLASH_SEQUENCE: "\\" (~["\n","\r"]) > } /* TOKEN: { < REGULAR_EXPRESSION_LITERAL: "/" "/" > : IN_REGEX | < #REGULAR_EXPRESSION_BODY: > | < #REGULAR_EXPRESSION_CHARS: ()* > | < #REGULAR_EXPRESSION_FIRSTCHAR: // ~["*","\\","/"] | > | < #REGULAR_EXPRESSION_CHAR: //~["\\","/"] | > | < #BACKSLASH_SEQUENCE: "\\" > | < #NON_TERMINATOR_FIRSTCHAR: ~["\n","\r","\u2028","\u2029","*","\\","/"] > | < #NON_TERMINATOR_CHAR: ~["\n","\r","\u2028","\u2029","\\","/"] > | < #NON_TERMINATOR: ~["\n","\r","\u2028","\u2029"] > | < #REGULAR_EXPRESSION_FLAGS: ()* > } */ /***************************************** * NUMERIC STRING GRAMMAR STARTS HERE * *****************************************/ /* Section 9.3: String-to-Number Conversion */ /* MORE: { )? ( ()?)? > } MORE: { < STR_WHITESPACE: ()+ > } MORE: { < STR_WHITESPACE_CHAR: | | | | | | | | | > } MORE: { < STR_NUMERIC_LITERAL: | > } MORE: { ("+" | "-") > } MORE: { < STR_UNSIGNED_DECIMAL_LITERAL: "Infinity" | "." ()* ()* > } */ /* A.6 Universal Resource Identifier Character Classes */ /* TOKEN: { < URIRESERVED : [";" , "/" , "?" , ":" , "@" , "&" , "=" , "+" , "$" , ","] > } TOKEN: { < URI_ALPHA : ["a"-"z","A"-"Z"] > } TOKEN: { < URI_MARK : ["-" , "_" , "." , "!" , "~" , "*" , "'" , "(" , ")"] > } void uri() : {} { (uriCharacters())? } void uriCharacters() : {} { (uriCharacter())+ } void uriCharacter() : {} { | uriUnescaped() | uriEscaped() } void uriUnescaped() : {} { | | } void uriEscaped() : {} { "%" } */ /* A.7 Regular Expressions */ /* MORE : { "/^" : INSIDE_PATTERN } TOKEN: { < PATTERN : > : DEFAULT | < #DISJUNCTION : ()+ > | < #ALTERNATIVE : ()* > | < #TERM : | ()? > | < #ASSERTION : "^" | "$" | "\\" ("b" | "B") > | < #QUANTIFIER : ("?")? > | < #QUANTIFIERPREFIX : "*" | "+" | "?" | ( "{" ("," ()?)? "}" ) > | < #ATOM : | "." | "\\" | //| "(" ("?" (":" | "=" | "!"))? ")" | "(" ("?" (":" | "=" | "!"))? ")" > | < #PATTERN_CHARACTER : ~["^", "$", "\\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", "|"] > | < #ATOMESCAPE : | | > | < #CHARACTER_CLASS_ESCAPE : ["d", "D", "s", "S", "w", "W"] > | < #CHARACTERESCAPE : | "c" | | | > | < #CONTROL_ESCAPE : ["f" , "n" , "r" , "t" , "v"] > | < #CONTROL_LETTER : ["a"-"z","A"-"Z"] > | < #IDENTITY_ESCAPE : ~["0"-"9", "A"-"Z", "a"-"z","-"] > | < #DECIMALESCAPE : > | < #CHARACTERCLASS : "[" ("^")? "]" > | < #CLASSRANGES : ()? > | //< #NONEMPTYCLASSRANGES : ( | "-" ) > < #NONEMPTYCLASSRANGES : ( | "-" ) > | //< #NONEMPTYCLASSRANGESNODASH : | ( | "-" ) > < #NONEMPTYCLASSRANGESNODASH : | ( | "-" ) > | < #CLASSATOM : "-" > | < #CLASSATOMNODASH : | "\\" > | < #CLASS_ATOM_NODASH_TOKEN : ~["\\", "]", "-"] > | < #CLASSESCAPE : | "b" | | > } */ /***************************************** * ECMA SYNTACTIC GRAMMARS STARTS HERE * *****************************************/ GRAMMARSTART Program : [SourceElements] ; PrimaryExpression : "this" | ObjectLiteral | "(" Expression ")" | Identifier | ArrayLiteral | Literal ; Literal : | | | | | ; Identifier : ; ArrayLiteral : LOOK_AHEAD(2) "[" [Elision] "]" | LOOK_AHEAD("ElementList() Elision()") "[" ElementList Elision "]" | "[" [ElementList] "]" ; ElementList : [Elision] AssignmentExpression (LOOK_AHEAD("Elision() AssignmentExpression()") ElementListEnd)* ; ElementListEnd : Elision AssignmentExpression ; Elision : ("," )+ ; ObjectLiteral : "{" [PropertyNameAndValueList] "}" ; PropertyNameAndValueList : PropertyNameAndValue (PropertyNameAndValueListEnd)* ; PropertyNameAndValueListEnd : LOOK_AHEAD( 2) "," PropertyNameAndValue | "," ; PropertyNameAndValue : PropertyName ":" AssignmentExpression ; PropertyName : Identifier | | ; MemberExpression : MemberExpressionPre (LOOK_AHEAD(2) MemberExpressionPart)* | AllocationExpression ; MemberExpressionPre : FunctionExpression | PrimaryExpression ; MemberExpressionForIn : MemberExpressionPre (LOOK_AHEAD(2) MemberExpressionPart)* ; AllocationExpression : "new" MemberExpression (LOOK_AHEAD("Arguments()") AllocationExpressionEnd)* ; AllocationExpressionEnd : Arguments (LOOK_AHEAD(2) MemberExpressionPart)* ; MemberExpressionPart : "[" Expression "]" | "." Identifier ; CallExpression : MemberExpression Arguments (LOOK_AHEAD(2)CallExpressionPart)* ; CallExpressionForIn : MemberExpressionForIn Arguments (LOOK_AHEAD(2)CallExpressionPart)* ; CallExpressionPart : Arguments | "[" Expression "]" | "." Identifier ; Arguments : "(" [ArgumentList] ")" ; ArgumentList : AssignmentExpression ("," AssignmentExpression)* ; LeftHandSideExpression : LOOK_AHEAD("MemberExpression() \"(\"") CallExpression | MemberExpression ; LeftHandSideExpressionForIn : LOOK_AHEAD("CallExpression()") CallExpressionForIn | MemberExpressionForIn ; PostfixExpression : LeftHandSideExpression [LOOK_AHEAD(1) PostfixOperator] ; PostfixOperator : "++" | "--" ; UnaryExpression : PostfixExpression | (LOOK_AHEAD(1) UnaryExpressionOp)+ ; UnaryExpressionOp : UnaryOperator UnaryExpression ; UnaryOperator : "delete" | "void" | "typeof" | "++" | "--" | "+" | "-" | "~" | "!" ; MultiplicativeExpression : UnaryExpression (MultiplicativeExpressionEnd)* ; MultiplicativeExpressionEnd : MultiplicativeOperator UnaryExpression ; MultiplicativeOperator : "*" | | "%" ; AdditiveExpression : MultiplicativeExpression (LOOK_AHEAD(1) AdditiveExpressionEnd)* ; AdditiveExpressionEnd : AdditiveOperator MultiplicativeExpression ; AdditiveOperator : "+" | "-" ; ShiftExpression : AdditiveExpression (ShiftExpressionEnd)* ; ShiftExpressionEnd : ShiftOperator AdditiveExpression ; ShiftOperator : "<<" | ">>" | ">>>" ; RelationalExpression : ShiftExpression (RelationalExpressionEnd)* ; RelationalExpressionEnd : RelationalOperator ShiftExpression ; RelationalOperator : "<" | ">" | "<=" | ">=" | "instanceof" | "in" ; RelationalExpressionNoIn : ShiftExpression (RelationalExpressionNoInEnd)* ; RelationalExpressionNoInEnd : RelationalNoInOperator ShiftExpression ; RelationalNoInOperator : "<" | ">" | "<=" | ">=" | "instanceof" ; EqualityExpression : RelationalExpression (EqualityExpressionEnd)* ; EqualityExpressionEnd : EqualityOperator RelationalExpression ; EqualityExpressionNoIn : RelationalExpressionNoIn (EqualityExpressionNoInEnd)* ; EqualityExpressionNoInEnd : EqualityOperator RelationalExpressionNoIn ; EqualityOperator : "==" | "!=" | "===" | "!==" ; BitwiseANDExpression : EqualityExpression ("&" EqualityExpression)* ; BitwiseANDExpressionNoIn : EqualityExpressionNoIn ("&" EqualityExpressionNoIn)* ; BitwiseXORExpression : BitwiseANDExpression ("^" BitwiseANDExpression)* ; BitwiseXORExpressionNoIn : BitwiseANDExpressionNoIn ("^" BitwiseANDExpressionNoIn)* ; BitwiseORExpression : BitwiseXORExpression ("|" BitwiseXORExpression)* ; BitwiseORExpressionNoIn : BitwiseXORExpressionNoIn ("|" BitwiseXORExpressionNoIn)* ; LogicalANDExpression : BitwiseORExpression ("&&" BitwiseORExpression)* ; LogicalANDExpressionNoIn : BitwiseORExpressionNoIn ("&&" BitwiseORExpressionNoIn)* ; LogicalORExpression : LogicalANDExpression ("||" LogicalANDExpression)* ; LogicalORExpressionNoIn : LogicalANDExpressionNoIn ("||" LogicalANDExpressionNoIn)* ; ConditionalExpression : LogicalORExpression [ConditionalExpressionEnd] ; ConditionalExpressionEnd : "?" AssignmentExpression ":" AssignmentExpression ; ConditionalExpressionNoIn : LogicalORExpressionNoIn [ConditionalExpressionNoInEnd] ; ConditionalExpressionNoInEnd : "?" AssignmentExpression ":" AssignmentExpressionNoIn ; AssignmentExpression : LOOK_AHEAD("LeftHandSideExpression() AssignmentOperator()") LeftHandSideExpression AssignmentOperator AssignmentExpression | ConditionalExpression ; AssignmentExpressionNoIn : LOOK_AHEAD("LeftHandSideExpression() AssignmentOperator()") LeftHandSideExpression AssignmentOperator AssignmentExpressionNoIn | ConditionalExpressionNoIn ; AssignmentOperator : "=" | "*=" | | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|=" ; Expression : AssignmentExpression ("," AssignmentExpression)* ; ExpressionNoIn : AssignmentExpressionNoIn ("," AssignmentExpressionNoIn)* ; Statement : LOOK_AHEAD("Block()") Block | LOOK_AHEAD("\"var\" Identifier() \":\"") JScriptVarStatement | LOOK_AHEAD("\"var\" Identifier()") VariableStatement | EmptyStatement | LOOK_AHEAD("Identifier() \":\"") LabelledStatement | LOOK_AHEAD("ExpressionStatement()")ExpressionStatement | IfStatement | IterationStatement | ContinueStatement | BreakStatement | ImportStatement | ReturnStatement | WithStatement | SwitchStatement | ThrowStatement | TryStatement ; Block : "{" [StatementList] "}" ; StatementList : (Statement)+ ; VariableStatement : "var" VariableDeclarationList [LOOK_AHEAD(2)";" ] ; VariableDeclarationList : VariableDeclaration ("," VariableDeclaration)* ; VariableDeclarationListNoIn : VariableDeclarationNoIn ("," VariableDeclarationNoIn)* ; VariableDeclaration : Identifier [Initialiser] ; VariableDeclarationNoIn : Identifier [InitialiserNoIn] ; Initialiser : "=" AssignmentExpression ; InitialiserNoIn : "=" AssignmentExpressionNoIn ; EmptyStatement : ";" ; ExpressionStatement : Expression [LOOK_AHEAD(2)";" ] ; IfStatement : "if" "(" Expression ")" Statement [LOOK_AHEAD(1) "else" Statement] ; IterationStatement : "do" Statement "while" "(" Expression ")" [LOOK_AHEAD(2)";" ] | "while" "(" Expression ")" Statement | LOOK_AHEAD("\"for\" \"(\" (ExpressionNoIn())? \";\"") "for" "(" [ExpressionNoIn] ";" [Expression] ";" [Expression] ")" Statement | LOOK_AHEAD("\"for\" \"(\" \"var\" VariableDeclarationList() \";\"") "for" "(" "var" VariableDeclarationList ";" [Expression] ";" [Expression] ")" Statement | LOOK_AHEAD("\"for\" \"(\" \"var\" VariableDeclarationNoIn() \"in\"")"for" "(" "var" VariableDeclarationNoIn "in" Expression ")" Statement | "for" "(" LeftHandSideExpressionForIn "in" Expression ")" Statement ; ContinueStatement : "continue" [LOOK_AHEAD(1)Identifier] [LOOK_AHEAD(1)";" ] ; BreakStatement : "break" [LOOK_AHEAD(1)Identifier] [LOOK_AHEAD(1)";" ] ; ReturnStatement : "return" [LOOK_AHEAD(1)Expression] [LOOK_AHEAD(1)";" ] ; WithStatement : "with" "(" Expression ")" Statement ; SwitchStatement : "switch" "(" Expression ")" CaseBlock ; CaseBlock : "{" [CaseClauses] CaseBlockEnd ; CaseBlockEnd : "}" | DefaultClause [CaseClauses] "}" ; CaseClauses : (CaseClause)+ ; CaseClause : "case" Expression ":" [StatementList] ; DefaultClause : "default" ":" [StatementList] ; LabelledStatement : Identifier ":" Statement ; ThrowStatement : "throw" Expression [LOOK_AHEAD(1) ";" ] ; TryStatement : "try" Block TryStatementEnd ; TryStatementEnd : Finally | Catch [Finally] ; Catch : "catch" "(" Identifier ")" Block ; Finally : "finally" Block ; FunctionDeclaration : "function" Identifier "(" [FormalParameterList] ")" FunctionBody ; FunctionExpression : "function" [Identifier] "(" [FormalParameterList] ")" FunctionBody ; FormalParameterList : Identifier ("," Identifier)* ; FunctionBody : "{" [SourceElements] "}" ; SourceElements : (SourceElement)+ ; SourceElement : LOOK_AHEAD("FunctionDeclaration()") FunctionDeclaration | Statement ; ImportStatement : "import" Name ["." "*" ] ";" ; Name : (LOOK_AHEAD(2) "." )* ; JScriptVarStatement : "var" JScriptVarDeclarationList [LOOK_AHEAD(2)";" ] ; JScriptVarDeclarationList : JScriptVarDeclaration ("," JScriptVarDeclaration)* ; JScriptVarDeclaration : Identifier ":" [Initialiser] ;