options { JAVA_UNICODE_ESCAPE = true; STATIC=false; } PARSER_BEGIN(JavaCCParser) package tmp.generated_javacc; import java.io.*; import java.util.*; import cide.gast.*; import cide.gparser.*; public class JavaCCParser { /* * Returns true if the next token is not in the FOLLOW list of "expansion". * It is used to decide when the end of an "expansion" has been reached. */ private boolean notTailOfExpansionUnit() { Token t; t = getToken(1); if (t.kind == BIT_OR || t.kind == COMMA || t.kind == RPAREN || t.kind == RBRACE || t.kind == RBRACKET) return false; return true; } } PARSER_END(JavaCCParser) /********************************************** * THE JAVACC TOKEN SPECIFICATION STARTS HERE * **********************************************/ /* JAVACC RESERVED WORDS: These are the only tokens in JavaCC but not in Java */ TOKEN : { < _OPTIONS: "options" > | < _LOOKAHEAD: "LOOKAHEAD" > | < _IGNORE_CASE: "IGNORE_CASE" > | < _PARSER_BEGIN: "PARSER_BEGIN" > | < _PARSER_END: "PARSER_END" > | < _JAVACODE: "JAVACODE" > | < _TOKEN: "TOKEN" > | < _SPECIAL_TOKEN: "SPECIAL_TOKEN" > | < _MORE: "MORE" > | < _SKIP: "SKIP" > | < _TOKEN_MGR_DECLS: "TOKEN_MGR_DECLS" > | < _EOF: "EOF" > } /* * The remainder of the tokens are exactly (except for the removal of tokens * containing ">>" and "<<") as in the Java grammar and must be diff equivalent * (again with the exceptions above) to it. */ /* WHITE SPACE */ SKIP : { " " | "\t" | "\n" | "\r" | "\f" | "/*@egen*/" : AFTER_EGEN } SKIP : { <~[]> : DEFAULT } /* COMMENTS */ MORE : { "//" : IN_SINGLE_LINE_COMMENT | <"/**" ~["/"]> : IN_FORMAL_COMMENT | "/*" : IN_MULTI_LINE_COMMENT | "/*@bgen(jjtree" : IN_MULTI_LINE_COMMENT } SPECIAL_TOKEN : { : DEFAULT } SPECIAL_TOKEN : { : DEFAULT } SPECIAL_TOKEN : { : DEFAULT } MORE : { < ~[] > } /* JAVA RESERVED WORDS AND LITERALS */ TOKEN : { < 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" > | < FALSE: "false" > | < FINAL: "final" > | < FINALLY: "finally" > | < FLOAT: "float" > | < FOR: "for" > | < GOTO: "goto" > | < IF: "if" > | < IMPLEMENTS: "implements" > | < IMPORT: "import" > | < INSTANCEOF: "instanceof" > | < INT: "int" > | < INTERFACE: "interface" > | < LONG: "long" > | < NATIVE: "native" > | < NEW: "new" > | < NULL: "null" > | < 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" > | < TRUE: "true" > | < TRY: "try" > | < VOID: "void" > | < VOLATILE: "volatile" > | < WHILE: "while" > } /* JAVA LITERALS */ TOKEN : { < INTEGER_LITERAL: (["l","L"])? | (["l","L"])? | (["l","L"])? > | < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > | < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > | < #OCTAL_LITERAL: "0" (["0"-"7"])* > | < FLOATING_POINT_LITERAL: | > | < #DECIMAL_FLOATING_POINT_LITERAL: (["0"-"9"])+ "." (["0"-"9"])* ()? (["f","F","d","D"])? | "." (["0"-"9"])+ ()? (["f","F","d","D"])? | (["0"-"9"])+ (["f","F","d","D"])? | (["0"-"9"])+ ()? ["f","F","d","D"] > | < #DECIMAL_EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > | < #HEXADECIMAL_FLOATING_POINT_LITERAL: "0" ["x", "X"] (["0"-"9","a"-"f","A"-"F"])+ (".")? (["f","F","d","D"])? | "0" ["x", "X"] (["0"-"9","a"-"f","A"-"F"])* "." (["0"-"9","a"-"f","A"-"F"])+ (["f","F","d","D"])? > | < #HEXADECIMAL_EXPONENT: ["p","P"] (["+","-"])? (["0"-"9"])+ > | < CHARACTER_LITERAL: "'" ( (~["'","\\","\n","\r"]) | ("\\" ( ["n","t","b","r","f","u","\\","'","\""] | ["0"-"7"] ( ["0"-"7"] )? | ["0"-"3"] ["0"-"7"] ["0"-"7"] ) ) ) "'" > | < STRING_LITERAL: "\"" ( (~["\"","\\","\n","\r"]) | ("\\" ( ["n","t","b","r","f","u","\\","'","\""] | ["0"-"7"] ( ["0"-"7"] )? | ["0"-"3"] ["0"-"7"] ["0"-"7"] ) ) )* "\"" > } /* SEPARATORS */ TOKEN : { < LPAREN: "(" > | < RPAREN: ")" > | < LBRACE: "{" > | < RBRACE: "}" > | < LBRACKET: "[" > | < RBRACKET: "]" > | < SEMICOLON: ";" > | < COMMA: "," > | < DOT: "." > } /* OPERATORS */ TOKEN : { < ASSIGN: "=" > //| < GT: ">" > | < LT: "<" > | < BANG: "!" > | < TILDE: "~" > | < HOOK: "?" > | < COLON: ":" > | < EQ: "==" > | < LE: "<=" > | < GE: ">=" > | < NE: "!=" > | < SC_OR: "||" > | < SC_AND: "&&" > | < INCR: "++" > | < DECR: "--" > | < PLUS: "+" > | < MINUS: "-" > | < STAR: "*" > | < SLASH: "/" > | < BIT_AND: "&" > | < BIT_OR: "|" > | < XOR: "^" > | < REM: "%" > // | < LSHIFT: "<<" > // | < RSIGNEDSHIFT: ">>" > // | < RUNSIGNEDSHIFT: ">>>" > | < PLUSASSIGN: "+=" > | < MINUSASSIGN: "-=" > | < STARASSIGN: "*=" > | < SLASHASSIGN: "/=" > | < ANDASSIGN: "&=" > | < ORASSIGN: "|=" > | < XORASSIGN: "^=" > | < REMASSIGN: "%=" > // | < LSHIFTASSIGN: "<<=" > // | < RSIGNEDSHIFTASSIGN: ">>=" > // | < RUNSIGNEDSHIFTASSIGN: ">>>=" > } /* >'s need special attention due to generics syntax. */ TOKEN : { < RUNSIGNEDSHIFT: ">>>" > | < RSIGNEDSHIFT: ">>" > | < GT: ">" > } /* IDENTIFIERS */ TOKEN : { < IDENTIFIER: ()* > | < #LETTER: [ // all chars for which Character.isIdentifierStart is true "$", "A"-"Z", "_", "a"-"z", "\u00a2"-"\u00a5", "\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"-"\u09f3", "\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", "\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"-"\u0edd", "\u0f00", "\u0f40"-"\u0f47", "\u0f49"-"\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"-"\u13f4", "\u1401"-"\u166c", "\u166f"-"\u1676", "\u1681"-"\u169a", "\u16a0"-"\u16ea", "\u1780"-"\u17b3", "\u17db", "\u1820"-"\u1877", "\u1880"-"\u18a8", "\u1e00"-"\u1e9b", "\u1ea0"-"\u1ef9", "\u1f00"-"\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", "\u207f", "\u20a0"-"\u20af", "\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"-"\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", "\ufe33"-"\ufe34", "\ufe4d"-"\ufe4f", "\ufe69", "\ufe70"-"\ufe72", "\ufe74", "\ufe76"-"\ufefc", "\uff04", "\uff21"-"\uff3a", "\uff3f", "\uff41"-"\uff5a", "\uff65"-"\uffbe", "\uffc2"-"\uffc7", "\uffca"-"\uffcf", "\uffd2"-"\uffd7", "\uffda"-"\uffdc", "\uffe0"-"\uffe1", "\uffe5"-"\uffe6" ] > | < #PART_LETTER: [ // all chars for which Character.isIdentifierPart is true "\u0000"-"\u0008", "\u000e"-"\u001b", "$", "0"-"9", "A"-"Z", "_", "a"-"z", "\u007f"-"\u009f", "\u00a2"-"\u00a5", "\u00aa", "\u00b5", "\u00ba", "\u00c0"-"\u00d6", "\u00d8"-"\u00f6", "\u00f8"-"\u021f", "\u0222"-"\u0233", "\u0250"-"\u02ad", "\u02b0"-"\u02b8", "\u02bb"-"\u02c1", "\u02d0"-"\u02d1", "\u02e0"-"\u02e4", "\u02ee", "\u0300"-"\u034e", "\u0360"-"\u0362", "\u037a", "\u0386", "\u0388"-"\u038a", "\u038c", "\u038e"-"\u03a1", "\u03a3"-"\u03ce", "\u03d0"-"\u03d7", "\u03da"-"\u03f3", "\u0400"-"\u0481", "\u0483"-"\u0486", "\u048c"-"\u04c4", "\u04c7"-"\u04c8", "\u04cb"-"\u04cc", "\u04d0"-"\u04f5", "\u04f8"-"\u04f9", "\u0531"-"\u0556", "\u0559", "\u0561"-"\u0587", "\u0591"-"\u05a1", "\u05a3"-"\u05b9", "\u05bb"-"\u05bd", "\u05bf", "\u05c1"-"\u05c2", "\u05c4", "\u05d0"-"\u05ea", "\u05f0"-"\u05f2", "\u0621"-"\u063a", "\u0640"-"\u0655", "\u0660"-"\u0669", "\u0670"-"\u06d3", "\u06d5"-"\u06dc", "\u06df"-"\u06e8", "\u06ea"-"\u06ed", "\u06f0"-"\u06fc", "\u070f"-"\u072c", "\u0730"-"\u074a", "\u0780"-"\u07b0", "\u0901"-"\u0903", "\u0905"-"\u0939", "\u093c"-"\u094d", "\u0950"-"\u0954", "\u0958"-"\u0963", "\u0966"-"\u096f", "\u0981"-"\u0983", "\u0985"-"\u098c", "\u098f"-"\u0990", "\u0993"-"\u09a8", "\u09aa"-"\u09b0", "\u09b2", "\u09b6"-"\u09b9", "\u09bc", "\u09be"-"\u09c4", "\u09c7"-"\u09c8", "\u09cb"-"\u09cd", "\u09d7", "\u09dc"-"\u09dd", "\u09df"-"\u09e3", "\u09e6"-"\u09f3", "\u0a02", "\u0a05"-"\u0a0a", "\u0a0f"-"\u0a10", "\u0a13"-"\u0a28", "\u0a2a"-"\u0a30", "\u0a32"-"\u0a33", "\u0a35"-"\u0a36", "\u0a38"-"\u0a39", "\u0a3c", "\u0a3e"-"\u0a42", "\u0a47"-"\u0a48", "\u0a4b"-"\u0a4d", "\u0a59"-"\u0a5c", "\u0a5e", "\u0a66"-"\u0a74", "\u0a81"-"\u0a83", "\u0a85"-"\u0a8b", "\u0a8d", "\u0a8f"-"\u0a91", "\u0a93"-"\u0aa8", "\u0aaa"-"\u0ab0", "\u0ab2"-"\u0ab3", "\u0ab5"-"\u0ab9", "\u0abc"-"\u0ac5", "\u0ac7"-"\u0ac9", "\u0acb"-"\u0acd", "\u0ad0", "\u0ae0", "\u0ae6"-"\u0aef", "\u0b01"-"\u0b03", "\u0b05"-"\u0b0c", "\u0b0f"-"\u0b10", "\u0b13"-"\u0b28", "\u0b2a"-"\u0b30", "\u0b32"-"\u0b33", "\u0b36"-"\u0b39", "\u0b3c"-"\u0b43", "\u0b47"-"\u0b48", "\u0b4b"-"\u0b4d", "\u0b56"-"\u0b57", "\u0b5c"-"\u0b5d", "\u0b5f"-"\u0b61", "\u0b66"-"\u0b6f", "\u0b82"-"\u0b83", "\u0b85"-"\u0b8a", "\u0b8e"-"\u0b90", "\u0b92"-"\u0b95", "\u0b99"-"\u0b9a", "\u0b9c", "\u0b9e"-"\u0b9f", "\u0ba3"-"\u0ba4", "\u0ba8"-"\u0baa", "\u0bae"-"\u0bb5", "\u0bb7"-"\u0bb9", "\u0bbe"-"\u0bc2", "\u0bc6"-"\u0bc8", "\u0bca"-"\u0bcd", "\u0bd7", "\u0be7"-"\u0bef", "\u0c01"-"\u0c03", "\u0c05"-"\u0c0c", "\u0c0e"-"\u0c10", "\u0c12"-"\u0c28", "\u0c2a"-"\u0c33", "\u0c35"-"\u0c39", "\u0c3e"-"\u0c44", "\u0c46"-"\u0c48", "\u0c4a"-"\u0c4d", "\u0c55"-"\u0c56", "\u0c60"-"\u0c61", "\u0c66"-"\u0c6f", "\u0c82"-"\u0c83", "\u0c85"-"\u0c8c", "\u0c8e"-"\u0c90", "\u0c92"-"\u0ca8", "\u0caa"-"\u0cb3", "\u0cb5"-"\u0cb9", "\u0cbe"-"\u0cc4", "\u0cc6"-"\u0cc8", "\u0cca"-"\u0ccd", "\u0cd5"-"\u0cd6", "\u0cde", "\u0ce0"-"\u0ce1", "\u0ce6"-"\u0cef", "\u0d02"-"\u0d03", "\u0d05"-"\u0d0c", "\u0d0e"-"\u0d10", "\u0d12"-"\u0d28", "\u0d2a"-"\u0d39", "\u0d3e"-"\u0d43", "\u0d46"-"\u0d48", "\u0d4a"-"\u0d4d", "\u0d57", "\u0d60"-"\u0d61", "\u0d66"-"\u0d6f", "\u0d82"-"\u0d83", "\u0d85"-"\u0d96", "\u0d9a"-"\u0db1", "\u0db3"-"\u0dbb", "\u0dbd", "\u0dc0"-"\u0dc6", "\u0dca", "\u0dcf"-"\u0dd4", "\u0dd6", "\u0dd8"-"\u0ddf", "\u0df2"-"\u0df3", "\u0e01"-"\u0e3a", "\u0e3f"-"\u0e4e", "\u0e50"-"\u0e59", "\u0e81"-"\u0e82", "\u0e84", "\u0e87"-"\u0e88", "\u0e8a", "\u0e8d", "\u0e94"-"\u0e97", "\u0e99"-"\u0e9f", "\u0ea1"-"\u0ea3", "\u0ea5", "\u0ea7", "\u0eaa"-"\u0eab", "\u0ead"-"\u0eb9", "\u0ebb"-"\u0ebd", "\u0ec0"-"\u0ec4", "\u0ec6", "\u0ec8"-"\u0ecd", "\u0ed0"-"\u0ed9", "\u0edc"-"\u0edd", "\u0f00", "\u0f18"-"\u0f19", "\u0f20"-"\u0f29", "\u0f35", "\u0f37", "\u0f39", "\u0f3e"-"\u0f47", "\u0f49"-"\u0f6a", "\u0f71"-"\u0f84", "\u0f86"-"\u0f8b", "\u0f90"-"\u0f97", "\u0f99"-"\u0fbc", "\u0fc6", "\u1000"-"\u1021", "\u1023"-"\u1027", "\u1029"-"\u102a", "\u102c"-"\u1032", "\u1036"-"\u1039", "\u1040"-"\u1049", "\u1050"-"\u1059", "\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", "\u1369"-"\u1371", "\u13a0"-"\u13f4", "\u1401"-"\u166c", "\u166f"-"\u1676", "\u1681"-"\u169a", "\u16a0"-"\u16ea", "\u1780"-"\u17d3", "\u17db", "\u17e0"-"\u17e9", "\u180b"-"\u180e", "\u1810"-"\u1819", "\u1820"-"\u1877", "\u1880"-"\u18a9", "\u1e00"-"\u1e9b", "\u1ea0"-"\u1ef9", "\u1f00"-"\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", "\u200c"-"\u200f", "\u202a"-"\u202e", "\u203f"-"\u2040", "\u206a"-"\u206f", "\u207f", "\u20a0"-"\u20af", "\u20d0"-"\u20dc", "\u20e1", "\u2102", "\u2107", "\u210a"-"\u2113", "\u2115", "\u2119"-"\u211d", "\u2124", "\u2126", "\u2128", "\u212a"-"\u212d", "\u212f"-"\u2131", "\u2133"-"\u2139", "\u2160"-"\u2183", "\u3005"-"\u3007", "\u3021"-"\u302f", "\u3031"-"\u3035", "\u3038"-"\u303a", "\u3041"-"\u3094", "\u3099"-"\u309a", "\u309d"-"\u309e", "\u30a1"-"\u30fe", "\u3105"-"\u312c", "\u3131"-"\u318e", "\u31a0"-"\u31b7", "\u3400"-"\u4db5", "\u4e00"-"\u9fa5", "\ua000"-"\ua48c", "\uac00"-"\ud7a3", "\uf900"-"\ufa2d", "\ufb00"-"\ufb06", "\ufb13"-"\ufb17", "\ufb1d"-"\ufb28", "\ufb2a"-"\ufb36", "\ufb38"-"\ufb3c", "\ufb3e", "\ufb40"-"\ufb41", "\ufb43"-"\ufb44", "\ufb46"-"\ufbb1", "\ufbd3"-"\ufd3d", "\ufd50"-"\ufd8f", "\ufd92"-"\ufdc7", "\ufdf0"-"\ufdfb", "\ufe20"-"\ufe23", "\ufe33"-"\ufe34", "\ufe4d"-"\ufe4f", "\ufe69", "\ufe70"-"\ufe72", "\ufe74", "\ufe76"-"\ufefc", "\ufeff", "\uff04", "\uff10"-"\uff19", "\uff21"-"\uff3a", "\uff3f", "\uff41"-"\uff5a", "\uff65"-"\uffbe", "\uffc2"-"\uffc7", "\uffca"-"\uffcf", "\uffd2"-"\uffd7", "\uffda"-"\uffdc", "\uffe0"-"\uffe1", "\uffe5"-"\uffe6", "\ufff9"-"\ufffb" ] > } /************************************************ * THE JAVACC GRAMMAR SPECIFICATION STARTS HERE * ************************************************/ GRAMMARSTART javacc_input: [javacc_options] "PARSER_BEGIN" "(" ")" CompilationUnit "PARSER_END" "(" ")" ( production )+ ; javacc_options: "options" "{" ( option_binding )+ "}"; option_binding : OptionName "=" OptionValue ";"@!; OptionName: | "LOOKAHEAD" | "IGNORE_CASE" | "static" ; OptionValue: |BooleanLiteral|; production : LL(1) javacode_production @!@! | LL(1) regular_expr_production @!@! | LL(1) token_manager_decls @!@! | bnf_production @!@!; javacode_production: "JAVACODE" [AccessModifier] ResultType FormalParameters [ ThrowsClause ] Block; ThrowsClause: "throws" &LI Name ( "," &LI Name )*; bnf_production: [AccessModifier] ResultType FormalParameters [ ThrowsClause ] ":" Block "{" @+ expansion_choices @- "}"; AccessModifier : "public" | "protected" | "private"; regular_expr_production: [ regular_expr_productionPrefix ] regexpr_kind [ "[" "IGNORE_CASE" "]" ] ":" "{" @+ &LI regexpr_spec ( @! "|" &LI regexpr_spec )* @- "}"; regular_expr_productionPrefix: LL(2) "<" "*" ">" | "<" &LI ( "," &LI )* ">"; token_manager_decls : "TOKEN_MGR_DECLS" ":" ClassOrInterfaceBody; regexpr_kind: "TOKEN" | "SPECIAL_TOKEN"| "SKIP"| "MORE"; regexpr_spec: regular_expression [ Block ] [ ":" ]; expansion_choices: &LI expansion ( @! "|" &LI expansion )*; expansion : ( LL(1) "LOOKAHEAD" "(" local_lookahead ")" )? ( LL("0, { notTailOfExpansionUnit() } ") expansion_unit )+; local_lookahead : [ LL(1) ] [ LL(1) "," ] [ LL("0, { getToken(1).kind != RPAREN && getToken(1).kind != LBRACE } ") expansion_choices ] [ LL(1) "," ] [ "{" Expression "}" ] ; expansion_unit: LL(1) "LOOKAHEAD" "(" local_lookahead ")" | Block | "[" expansion_choices "]" | "try" "{" expansion_choices "}" ( CatchPart )* [ "finally" Block ] | LL(" | | \"<\" | PrimaryExpression() \"=\"") [ LL("PrimaryExpression() \"=\"") PrimaryExpression "=" ] expansion_unitMain | "(" expansion_choices ")" [ExpModifier]; CatchPart: "catch" "(" Name ")" Block; expansion_unitMain: LL(" \"(\"") Arguments | regular_expression [ "." ]; ExpModifier: "+" | "*" | "?"; regular_expression: | LL(3) "<" [ RegId ] complex_regular_expression_choices ">" | LL(2) "<" ">" | "<" "EOF" ">"::EOFExpr; RegId: [ "#" ] ":"; complex_regular_expression_choices: &LI complex_regular_expression ( "|" &LI complex_regular_expression )*; complex_regular_expression: ( complex_regular_expression_unit )+; complex_regular_expression_unit: | "<" ">" | character_list | "(" complex_regular_expression_choices ")" [CREUPostfix]; CREUPostfix:"+"|"*"|"?"|"{" [ CREUPostfixPP ] "}"; CREUPostfixPP: "," [ ]; character_list: ["~"] "[" [ character_descriptorList ] "]"; character_descriptorList: &LI character_descriptor ( "," &LI character_descriptor )*; character_descriptor: [ "-" ]; /////////////////////////////////////////////////////////// //copied from java15.gcide CompilationUnit: [ PackageDeclaration ] ( ImportDeclaration )* ( TypeDeclaration )* ; PackageDeclaration: "package" Name ";" @! ; ImportDeclaration: "import" [ "static" ] Name [ "." "*" ] ";" @! ; Modifiers: (LL(1) Modifier)* ; Modifier: "public" | "static" | "protected" | "private" | "final" | "abstract" | "synchronized" | "native" | "transient" | "volatile" | "strictfp" | Annotation ; TypeDeclaration: ";" | LOOK_AHEAD(2) Modifiers ClassOrInterfaceDeclaration | LOOK_AHEAD(2) Modifiers EnumDeclaration | LOOK_AHEAD(2) Modifiers AnnotationTypeDeclaration ; ClassOrInterfaceDeclaration: ClassOrInterface JavaIdentifier [ TypeParameters ] [ ExtendsList ] [ ImplementsList ] ClassOrInterfaceBody ; ClassOrInterface: "class" | "interface"; ExtendsList: "extends" &LI ClassOrInterfaceType ( "," &LI ClassOrInterfaceType )* ; ImplementsList: "implements" &LI ClassOrInterfaceType ( "," &LI ClassOrInterfaceType )* ; EnumDeclaration: "enum" JavaIdentifier [ ImplementsList ] EnumBody ; EnumBody: "{" &LI EnumConstant ( "," &LI EnumConstant )* [ EnumBodyInternal ] "}" ; EnumBodyInternal: ";" ( ClassOrInterfaceBodyDeclaration )* ; EnumConstant: JavaIdentifier [ Arguments ] [ ClassOrInterfaceBody ] ; TypeParameters: "<" &LI TypeParameter ( "," &LI TypeParameter )* ">" ; TypeParameter: JavaIdentifier [ TypeBound ] ; TypeBound: "extends" ClassOrInterfaceType ( "&" ClassOrInterfaceType )* ; ClassOrInterfaceBody: "{" @+ @! ( ClassOrInterfaceBodyDeclaration @! @! )* @- @! "}" ; ClassOrInterfaceBodyDeclaration: LOOK_AHEAD(2) Initializer | LOOK_AHEAD("Modifiers() ClassOrInterface()") Modifiers ClassOrInterfaceDeclaration | LOOK_AHEAD("Modifiers() \"enum\"") Modifiers EnumDeclaration | LOOK_AHEAD(" Modifiers() [ TypeParameters() ] JavaIdentifier() \"(\"" ) Modifiers ConstructorDeclaration | LOOK_AHEAD( "Modifiers() Type() JavaIdentifier() ( \"[\" \"]\" )* ( \",\" | \"=\" | \";\" ) " ) Modifiers FieldDeclaration | LOOK_AHEAD(2) Modifiers MethodDeclaration | ";" ; FieldDeclaration: Type VariableDeclarator ( "," VariableDeclarator )* ";" ; VariableDeclarator: VariableDeclaratorId [ "=" VariableInitializer ] ; VariableDeclaratorId: JavaIdentifier ( "[" "]" )* ; VariableInitializer: ArrayInitializer | Expression ; ArrayInitializer: "{" [ ArrayInitializerInternal ] [ "," ] "}" ; ArrayInitializerInternal: VariableInitializer ( LOOK_AHEAD(2) "," VariableInitializer )*; MethodDeclaration: [ TypeParameters ] ResultType MethodDeclarator [ "throws" NameList ] MethodDeclarationBody ; MethodDeclarationBody: Block | ";"; MethodDeclarator: JavaIdentifier FormalParameters ( "[" "]" )* ; FormalParameters: "(" [ FormalParametersInternal ] ")" ; FormalParametersInternal: &LI FormalParameter ( "," &LI FormalParameter )*; FormalParameter: [ "final" ] Type [ "..." ] VariableDeclaratorId ; ConstructorDeclaration: [ TypeParameters ] JavaIdentifier FormalParameters [ "throws" NameList ] "{" [ LOOK_AHEAD("ExplicitConstructorInvocation()") ExplicitConstructorInvocation ] ( BlockStatement )* "}" ; ExplicitConstructorInvocation: LOOK_AHEAD("\"this\" Arguments() \";\"") "this" Arguments ";" @! | [ LOOK_AHEAD(2) PrimaryExpression "." ] "super" Arguments ";" @! ; Initializer: [ "static" ] Block ; /* * Type, name and expression syntax follows. */ Type: LOOK_AHEAD(2) ReferenceTypeP | PrimitiveType ; ReferenceTypeP: PrimitiveType ( LOOK_AHEAD(2) "[" "]" )+ | ClassOrInterfaceType ( LOOK_AHEAD(2) "[" "]" )* ; ClassOrInterfaceType: JavaIdentifier [ LOOK_AHEAD(2) TypeArguments ] ( LOOK_AHEAD(2) ClassOrInterfaceTypeIntern )* ; ClassOrInterfaceTypeIntern: "." JavaIdentifier [ LOOK_AHEAD(2) TypeArguments ] ; TypeArguments: "<" TypeArgument ( "," TypeArgument )* ">" ; TypeArgument: ReferenceTypeP | "?" [ WildcardBounds ] ; WildcardBounds: "extends" ReferenceTypeP | "super" ReferenceTypeP ; PrimitiveType: "boolean" | "char" | "byte" | "short" | "int" | "long" | "float" | "double" ; ResultType: "void" | Type ; Name: JavaIdentifier ( LOOK_AHEAD(2) "." JavaIdentifier )* ; NameList: &LI Name ( "," &LI Name )* ; /* * Expression syntax follows. */ /* * This expansion has been written this way instead of: * Assignment | ConditionalExpression * for performance reasons. * However, it is a weakening of the grammar for it allows the LHS of * assignments to be any conditional expression whereas it can only be * a primary expression. Consider adding a semantic predicate to work * around this. */ Expression: ConditionalExpression [ LOOK_AHEAD(2) AssignExp ] ; AssignExp : AssignmentOperator Expression ; AssignmentOperator: "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>="| ">>>=" | "&=" | "^=" | "|=" ; ConditionalExpression: LOOK_AHEAD("ConditionalOrExpression() \"?\"") ConditionalExpressionFull{Expression} | ConditionalOrExpression ; ConditionalExpressionFull: ConditionalOrExpression "?" Expression! ":" Expression ; ConditionalOrExpression: ConditionalAndExpression ( "||" ConditionalAndExpression )* ; ConditionalAndExpression: InclusiveOrExpression ( "&&" InclusiveOrExpression )* ; InclusiveOrExpression: ExclusiveOrExpression ( "|" ExclusiveOrExpression )* ; ExclusiveOrExpression: AndExpression ( "^" AndExpression )* ; AndExpression: EqualityExpression ( "&" EqualityExpression )* ; EqualityExpression: InstanceOfExpression ( EqualityExpressionIntern )* ; EqualityExpressionIntern: EqualityOp InstanceOfExpression; EqualityOp: "==" | "!="; InstanceOfExpression: RelationalExpression [ "instanceof" Type ] ; RelationalExpression: ShiftExpression ( RelationalExpressionIntern )* ; RelationalExpressionIntern:RelationalOp ShiftExpression; RelationalOp: "<" | ">" | "<=" | ">=" ; ShiftExpression: AdditiveExpression ( LL(2) ShiftExpressionRight )* ; ShiftExpressionRight: ShiftOp AdditiveExpression ; ShiftOp: "<<" | LOOK_AHEAD(3) ">" ">" ">" | LL(2) ">" ">" ; AdditiveExpression: MultiplicativeExpression (AdditiveExpressionIntern )* ; AdditiveExpressionIntern:AdditiveOp MultiplicativeExpression ; AdditiveOp: "+" | "-"; MultiplicativeExpression: UnaryExpression (MultiplicativeExpressionIntern)* ; MultiplicativeExpressionIntern: MultiplicativeOp UnaryExpression ; MultiplicativeOp: "*" | "/" | "%"; UnaryExpression: AdditiveOp UnaryExpression | PreIncrementExpression | PreDecrementExpression | UnaryExpressionNotPlusMinus ; PreIncrementExpression: "++" PrimaryExpression ; PreDecrementExpression: "--" PrimaryExpression ; UnaryExpressionNotPlusMinus: UnaryOp UnaryExpression | LOOK_AHEAD( "CastLookahead()" ) CastExpression | PostfixExpression ; UnaryOp: "~" | "!"; // This production is to determine LOOK_AHEAD only. The LOOK_AHEAD specifications // below are not used, but they are there just to indicate that we know about // this. CastLookahead: LOOK_AHEAD(2) "(" PrimitiveType | LOOK_AHEAD("\"(\" Type() \"[\"") "(" Type "[" "]" | "(" Type ")" CastLAOp ; CastLAOp: "~" | "!" | "(" | "this" | "super" | "new" | JavaIdentifier | Literal; PostfixExpression: PrimaryExpression [ PostfixOp ] ; PostfixOp: "++" | "--"; CastExpression: LOOK_AHEAD("\"(\" PrimitiveType()") "(" Type ")" UnaryExpression | "(" Type ")" UnaryExpressionNotPlusMinus ; PrimaryExpression: PrimaryPrefix ( LOOK_AHEAD(2) PrimarySuffix )* ; MemberSelector: "." TypeArguments JavaIdentifier ; PrimaryPrefix: Literal | "this" | "super" "." JavaIdentifier | "(" Expression ")" | AllocationExpression | LOOK_AHEAD(" ResultType() \".\" \"class\"" ) ResultType "." "class" | Name ; PrimarySuffix: LOOK_AHEAD(2) "." "this" | LOOK_AHEAD(2) "." AllocationExpression | LOOK_AHEAD(3) MemberSelector | "[" Expression "]" | "." JavaIdentifier | Arguments ; Literal: | | | | BooleanLiteral | NullLiteral ; BooleanLiteral: "true" | "false" ; NullLiteral: "null" ; Arguments: "(" [ ArgumentList ] ")" ; ArgumentList: Expression ( "," Expression )* ; AllocationExpression: LOOK_AHEAD(2) "new" PrimitiveType ArrayDimsAndInits | "new" ClassOrInterfaceType [ TypeArguments ] AllocationExpressionInit ; AllocationExpressionInit: ArrayDimsAndInits | Arguments [ ClassOrInterfaceBody ] ; /* * The third LOOK_AHEAD specification below is to parse to PrimarySuffix * if there is an expression between the "[...]". */ ArrayDimsAndInits: LOOK_AHEAD(2) "[" Expression "]" ( LOOK_AHEAD(2) "[" Expression "]" )* ( LOOK_AHEAD(2) "[" "]" )* | ( "[" "]" )+ ArrayInitializer ; /* * Statement syntax follows. */ Statement: LOOK_AHEAD(2) LabeledStatement | AssertStatement @! | Block | EmptyStatement | StatementExpression ";" @! | SwitchStatement @! | IfStatement{Statement} @! | WhileStatement{Statement} @! | DoStatement{Statement} @! | ForStatement{Statement} @! | BreakStatement @! | ContinueStatement @! | ReturnStatement @! | ThrowStatement @! | SynchronizedStatement{Statement} @! | TryStatement{Statement} @! ; AssertStatement: "assert" Expression [ ":" Expression ] ";" ; LabeledStatement: JavaIdentifier ":" Statement ; Block: "{" @+ @! ( BlockStatement )* @- "}" @! ; BlockStatement: LOOK_AHEAD("[ \"final\" ] Type() JavaIdentifier()") LocalVariableDeclaration ";" | Statement | ClassOrInterfaceDeclaration ; LocalVariableDeclaration: [ "final" ] Type VariableDeclarator ( "," VariableDeclarator )* ; EmptyStatement: ";" ; StatementExpression :/* * The last expansion of this production accepts more than the legal * Java expansions for StatementExpression. This expansion does not * use PostfixExpression for performance reasons. */ PreIncrementExpression | PreDecrementExpression | PrimaryExpression [ StatementExpressionAssignment ] ; StatementExpressionAssignment: "++" | "--" | AssignmentOperator Expression ; SwitchStatement: "switch" "(" Expression ")" "{" @+ @! ( SwitchStatementLabel )* @- "}" @! ; SwitchStatementLabel :SwitchLabel ( BlockStatement )*; SwitchLabel: "case" Expression ":" | "default" ":" ; IfStatement: /* * The disambiguating algorithm of JavaCC automatically binds dangling * else's to the innermost if statement. The LOOK_AHEAD specification * is to tell JavaCC that we know what we are doing. */ "if" "(" Expression ")" @! @+ Statement! @- [ LOOK_AHEAD(1) "else" @! @+ Statement @- ] ; WhileStatement: "while" "(" Expression ")" @! @+ Statement! @- ; DoStatement: "do" @! @+ Statement! @- "while" "(" Expression ")" ";" ; ForStatement: "for" "(" ForStatementInternal ")" @! @+ Statement! @- ; ForStatementInternal: LOOK_AHEAD("Type() JavaIdentifier() \":\"") Type JavaIdentifier ":" Expression | [ ForInit ] ";" [ Expression ] ";" [ ForUpdate ] ; ForInit: LOOK_AHEAD( "[ \"final\" ] Type() JavaIdentifier()" ) LocalVariableDeclaration | StatementExpressionList ; StatementExpressionList: StatementExpression ( "," StatementExpression )* ; ForUpdate: StatementExpressionList ; BreakStatement: "break" [ JavaIdentifier ] ";" ; ContinueStatement: "continue" [ JavaIdentifier ] ";" ; ReturnStatement: "return" [ Expression ] ";" ; ThrowStatement: "throw" Expression ";" ; SynchronizedStatement: "synchronized" "(" Expression ")" Block! ; TryStatement: /* * Semantic check required here to make sure that at least one * finally/catch is present. */ "try" Block! TryStatementEnd ; TryStatementEnd: (CatchBlock )+ | "finally" Block ::FinallyBlock ; CatchBlock: "catch" "(" FormalParameter ")" Block ; /* We use productions to match >>>, >> and > so that we can keep the * type declaration syntax with generics clean */ /* Annotation syntax follows. */ Annotation: LOOK_AHEAD( "\"@\" Name() \"(\" ( JavaIdentifier() \"=\" | \")\" )") NormalAnnotation | LOOK_AHEAD( "\"@\" Name() \"(\"" ) SingleMemberAnnotation | MarkerAnnotation ; NormalAnnotation: "@" Name "(" [ MemberValuePairs ] ")" @! ; MarkerAnnotation: "@" Name @! ; SingleMemberAnnotation: "@" Name "(" MemberValue ")" @! ; MemberValuePairs: MemberValuePair ( "," MemberValuePair )* ; MemberValuePair: JavaIdentifier "=" MemberValue ; MemberValue: Annotation | MemberValueArrayInitializer | ConditionalExpression ; MemberValueArrayInitializer: "{" MemberValue ( LOOK_AHEAD(2) "," MemberValue )* [ "," ] "}" ; /* Annotation Types. */ AnnotationTypeDeclaration: "@" "interface" JavaIdentifier AnnotationTypeBody ; AnnotationTypeBody: "{" ( AnnotationTypeMemberDeclaration )* "}" ; AnnotationTypeMemberDeclaration: LOOK_AHEAD("Modifiers() Type() JavaIdentifier() \"(\"") Modifiers Type JavaIdentifier "(" ")" [ DefaultValue ] ";" | LOOK_AHEAD(1) Modifiers ClassOrInterfaceDeclaration | LOOK_AHEAD(2) Modifiers EnumDeclaration | LOOK_AHEAD(2) Modifiers AnnotationTypeDeclaration | LOOK_AHEAD(1) Modifiers FieldDeclaration | ";" ; DefaultValue: "default" MemberValue ; JavaIdentifier: | "options" | "LOOKAHEAD" | "IGNORE_CASE" | "PARSER_BEGIN" | "PARSER_END" | "JAVACODE" | "TOKEN" | "SPECIAL_TOKEN" | "MORE" | "SKIP" | "TOKEN_MGR_DECLS" | "EOF";