⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java1.5.jj

📁 javacc源码
💻 JJ
📖 第 1 页 / 共 3 页
字号:
/* * Copyright © 2002 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * California 95054, U.S.A. All rights reserved.  Sun Microsystems, Inc. has * intellectual property rights relating to technology embodied in the product * that is described in this document. In particular, and without limitation, * these intellectual property rights may include one or more of the U.S. * patents listed at http://www.sun.com/patents and one or more additional * patents or pending patent applications in the U.S. and in other countries. * U.S. Government Rights - Commercial software. Government users are subject * to the Sun Microsystems, Inc. standard license agreement and applicable * provisions of the FAR and its supplements.  Use is subject to license terms. * Sun,  Sun Microsystems,  the Sun logo and  Java are trademarks or registered * trademarks of Sun Microsystems, Inc. in the U.S. and other countries.  This * product is covered and controlled by U.S. Export Control laws and may be * subject to the export or import laws in other countries.  Nuclear, missile, * chemical biological weapons or nuclear maritime end uses or end users, * whether direct or indirect, are strictly prohibited.  Export or reexport * to countries subject to U.S. embargo or to entities identified on U.S. * export exclusion lists, including, but not limited to, the denied persons * and specially designated nationals lists is strictly prohibited. */options {  JAVA_UNICODE_ESCAPE = true;  ERROR_REPORTING = false;  STATIC = false;  JDK_VERSION = "1.5";}PARSER_BEGIN(JavaParser)import java.io.*;/** * Grammar to parse Java version 1.5 * @author Sreenivasa Viswanadha - Simplified and enhanced for 1.5 */public class JavaParser{   /**    * Class to hold modifiers.    */   static public final class ModifierSet   {     /* Definitions of the bits in the modifiers field.  */     public static final int PUBLIC = 0x0001;     public static final int PROTECTED = 0x0002;     public static final int PRIVATE = 0x0004;     public static final int ABSTRACT = 0x0008;     public static final int STATIC = 0x0010;     public static final int FINAL = 0x0020;     public static final int SYNCHRONIZED = 0x0040;     public static final int NATIVE = 0x0080;     public static final int TRANSIENT = 0x0100;     public static final int VOLATILE = 0x0200;     public static final int STRICTFP = 0x1000;     /** A set of accessors that indicate whether the specified modifier         is in the set. */     public boolean isPublic(int modifiers)     {       return (modifiers & PUBLIC) != 0;     }     public boolean isProtected(int modifiers)     {       return (modifiers & PROTECTED) != 0;     }     public boolean isPrivate(int modifiers)     {       return (modifiers & PRIVATE) != 0;     }     public boolean isStatic(int modifiers)     {       return (modifiers & STATIC) != 0;     }     public boolean isAbstract(int modifiers)     {       return (modifiers & ABSTRACT) != 0;     }     public boolean isFinal(int modifiers)     {       return (modifiers & FINAL) != 0;     }     public boolean isNative(int modifiers)     {       return (modifiers & NATIVE) != 0;     }     public boolean isStrictfp(int modifiers)     {       return (modifiers & STRICTFP) != 0;     }     public boolean isSynchronized(int modifiers)     {       return (modifiers & SYNCHRONIZED) != 0;     }     public boolean isTransient(int modifiers)      {       return (modifiers & TRANSIENT) != 0;     }     public boolean isVolatile(int modifiers)     {       return (modifiers & VOLATILE) != 0;     }     /**      * Removes the given modifier.      */     static int removeModifier(int modifiers, int mod)     {        return modifiers & ~mod;     }   }   public JavaParser(String fileName)   {      this(System.in);      try { ReInit(new FileInputStream(new File(fileName))); }      catch(Exception e) { e.printStackTrace(); }   }  public static void main(String args[]) {    JavaParser parser;    if (args.length == 0) {      System.out.println("Java Parser Version 1.1:  Reading from standard input . . .");      parser = new JavaParser(System.in);    } else if (args.length == 1) {      System.out.println("Java Parser Version 1.1:  Reading from file " + args[0] + " . . .");      try {        parser = new JavaParser(new java.io.FileInputStream(args[0]));      } catch (java.io.FileNotFoundException e) {        System.out.println("Java Parser Version 1.1:  File " + args[0] + " not found.");        return;      }    } else {      System.out.println("Java Parser Version 1.1:  Usage is one of:");      System.out.println("         java JavaParser < inputfile");      System.out.println("OR");      System.out.println("         java JavaParser inputfile");      return;    }    try {      parser.CompilationUnit();      System.out.println("Java Parser Version 1.1:  Java program parsed successfully.");    } catch (ParseException e) {      System.out.println(e.getMessage());      System.out.println("Java Parser Version 1.1:  Encountered errors during parse.");    }  }}PARSER_END(JavaParser)/* WHITE SPACE */SKIP :{  " "| "\t"| "\n"| "\r"| "\f"}/* COMMENTS */MORE :{  <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT|  "/*" : IN_MULTI_LINE_COMMENT}SPECIAL_TOKEN :{  <SINGLE_LINE_COMMENT: "//" (~["\n", "\r"])* ("\n" | "\r" | "\r\n")?>}<IN_FORMAL_COMMENT>SPECIAL_TOKEN :{  <FORMAL_COMMENT: "*/" > : DEFAULT}<IN_MULTI_LINE_COMMENT>SPECIAL_TOKEN :{  <MULTI_LINE_COMMENT: "*/" > : DEFAULT}<IN_FORMAL_COMMENT,IN_MULTI_LINE_COMMENT>MORE :{  < ~[] >}/* 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" >}/* LITERALS */TOKEN :{  < INTEGER_LITERAL:        <DECIMAL_LITERAL> (["l","L"])?      | <HEX_LITERAL> (["l","L"])?      | <OCTAL_LITERAL> (["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>      | <HEXADECIMAL_FLOATING_POINT_LITERAL>  >|  < #DECIMAL_FLOATING_POINT_LITERAL:        (["0"-"9"])+ "." (["0"-"9"])* (<DECIMAL_EXPONENT>)? (["f","F","d","D"])?      | "." (["0"-"9"])+ (<DECIMAL_EXPONENT>)? (["f","F","d","D"])?      | (["0"-"9"])+ <DECIMAL_EXPONENT> (["f","F","d","D"])?      | (["0"-"9"])+ (<DECIMAL_EXPONENT>)? ["f","F","d","D"]  >|  < #DECIMAL_EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ >|  < #HEXADECIMAL_FLOATING_POINT_LITERAL:        "0" ["x", "X"] (["0"-"9","a"-"f","A"-"F"])+ (".")? <HEXADECIMAL_EXPONENT> (["f","F","d","D"])?      | "0" ["x", "X"] (["0"-"9","a"-"f","A"-"F"])* "." (["0"-"9","a"-"f","A"-"F"])+ <HEXADECIMAL_EXPONENT> (["f","F","d","D"])?  >|  < #HEXADECIMAL_EXPONENT: ["p","P"] (["+","-"])? (["0"-"9"])+ >|  < CHARACTER_LITERAL:      "'"      (   (~["'","\\","\n","\r"])        | ("\\"            ( ["n","t","b","r","f","\\","'","\""]            | ["0"-"7"] ( ["0"-"7"] )?            | ["0"-"3"] ["0"-"7"] ["0"-"7"]            )          )      )      "'"  >|  < STRING_LITERAL:      "\""      (   (~["\"","\\","\n","\r"])        | ("\\"            ( ["n","t","b","r","f","\\","'","\""]            | ["0"-"7"] ( ["0"-"7"] )?            | ["0"-"3"] ["0"-"7"] ["0"-"7"]            )          )      )*      "\""  >}/* IDENTIFIERS */TOKEN :{  < IDENTIFIER: <LETTER> (<PART_LETTER>)* >|  < #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",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -