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

📄 parsegen.java

📁 java 编译器java复杂编译器,可以编译java文件的类库
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
      ostr.println("");      if (!Options.B("CACHE_TOKENS")) {	ostr.println("  " + staticOpt() + "final private int jj_ntk() {");	ostr.println("    if ((jj_nt=token.next) == null)");	ostr.println("      return (jj_ntk = (token.next=token_source.getNextToken()).kind);");	ostr.println("    else");	ostr.println("      return (jj_ntk = jj_nt.kind);");	ostr.println("  }");	ostr.println("");      }      if (Options.B("ERROR_REPORTING")) {        ostr.println("  " + staticOpt() + "private java.util.Vector jj_expentries = new java.util.Vector();");        ostr.println("  " + staticOpt() + "private int[] jj_expentry;");        ostr.println("  " + staticOpt() + "private int jj_kind = -1;");        if (jj2index != 0) {          ostr.println("  " + staticOpt() + "private int[] jj_lasttokens = new int[100];");          ostr.println("  " + staticOpt() + "private int jj_endpos;");          ostr.println("");          ostr.println("  " + staticOpt() + "private void jj_add_error_token(int kind, int pos) {");          ostr.println("    if (pos >= 100) return;");          ostr.println("    if (pos == jj_endpos + 1) {");          ostr.println("      jj_lasttokens[jj_endpos++] = kind;");          ostr.println("    } else if (jj_endpos != 0) {");          ostr.println("      jj_expentry = new int[jj_endpos];");          ostr.println("      for (int i = 0; i < jj_endpos; i++) {");          ostr.println("        jj_expentry[i] = jj_lasttokens[i];");          ostr.println("      }");          ostr.println("      boolean exists = false;");          ostr.println("      for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {");          ostr.println("        int[] oldentry = (int[])(e.nextElement());");          ostr.println("        if (oldentry.length == jj_expentry.length) {");          ostr.println("          exists = true;");          ostr.println("          for (int i = 0; i < jj_expentry.length; i++) {");          ostr.println("            if (oldentry[i] != jj_expentry[i]) {");          ostr.println("              exists = false;");          ostr.println("              break;");          ostr.println("            }");          ostr.println("          }");          ostr.println("          if (exists) break;");          ostr.println("        }");          ostr.println("      }");          ostr.println("      if (!exists) jj_expentries.addElement(jj_expentry);");          ostr.println("      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;");          ostr.println("    }");          ostr.println("  }");        }        ostr.println("");        ostr.println("  " + staticOpt() + "public ParseException generateParseException() {");        ostr.println("    jj_expentries.removeAllElements();");        ostr.println("    boolean[] la1tokens = new boolean[" + tokenCount + "];");        ostr.println("    for (int i = 0; i < " + tokenCount + "; i++) {");        ostr.println("      la1tokens[i] = false;");        ostr.println("    }");        ostr.println("    if (jj_kind >= 0) {");        ostr.println("      la1tokens[jj_kind] = true;");        ostr.println("      jj_kind = -1;");        ostr.println("    }");        ostr.println("    for (int i = 0; i < " + maskindex + "; i++) {");        ostr.println("      if (jj_la1[i] == jj_gen) {");        ostr.println("        for (int j = 0; j < 32; j++) {");	for (int i = 0; i < (tokenCount-1)/32 + 1; i++) {	  ostr.println("          if ((jj_la1_" + i + "[i] & (1<<j)) != 0) {");	  ostr.print("            la1tokens[");	  if (i != 0) {	    ostr.print((32*i) + "+");	  }	  ostr.println("j] = true;");	  ostr.println("          }");	}        ostr.println("        }");        ostr.println("      }");        ostr.println("    }");        ostr.println("    for (int i = 0; i < " + tokenCount + "; i++) {");        ostr.println("      if (la1tokens[i]) {");        ostr.println("        jj_expentry = new int[1];");        ostr.println("        jj_expentry[0] = i;");        ostr.println("        jj_expentries.addElement(jj_expentry);");        ostr.println("      }");        ostr.println("    }");        if (jj2index != 0) {          ostr.println("    jj_endpos = 0;");          ostr.println("    jj_rescan_token();");          ostr.println("    jj_add_error_token(0, 0);");        }        ostr.println("    int[][] exptokseq = new int[jj_expentries.size()][];");        ostr.println("    for (int i = 0; i < jj_expentries.size(); i++) {");        ostr.println("      exptokseq[i] = (int[])jj_expentries.elementAt(i);");        ostr.println("    }");        ostr.println("    return new ParseException(token, exptokseq, tokenImage);");        ostr.println("  }");      } else {        ostr.println("  " + staticOpt() + "public ParseException generateParseException() {");        ostr.println("    Token errortok = token.next;");        if (Options.B("KEEP_LINE_COLUMN"))           ostr.println("    int line = errortok.beginLine, column = errortok.beginColumn;");        ostr.println("    String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;");        if (Options.B("KEEP_LINE_COLUMN"))           ostr.println("    return new ParseException(\"Parse error at line \" + line + \", column \" + column + \".  Encountered: \" + mess);");        else           ostr.println("    return new ParseException(\"Parse error at <unknown location>.  Encountered: \" + mess);");        ostr.println("  }");      }      ostr.println("");      if (Options.B("DEBUG_PARSER")) {        ostr.println("  " + staticOpt() + "private int trace_indent = 0;");        ostr.println("  " + staticOpt() + "private boolean trace_enabled = true;");        ostr.println("");        ostr.println("  " + staticOpt() + "final public void enable_tracing() {");        ostr.println("    trace_enabled = true;");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final public void disable_tracing() {");        ostr.println("    trace_enabled = false;");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final private void trace_call(String s) {");        ostr.println("    if (trace_enabled) {");        ostr.println("      for (int i = 0; i < trace_indent; i++) { System.out.print(\" \"); }");        ostr.println("      System.out.println(\"Call:   \" + s);");        ostr.println("    }");        ostr.println("    trace_indent = trace_indent + 2;");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final private void trace_return(String s) {");        ostr.println("    trace_indent = trace_indent - 2;");        ostr.println("    if (trace_enabled) {");        ostr.println("      for (int i = 0; i < trace_indent; i++) { System.out.print(\" \"); }");        ostr.println("      System.out.println(\"Return: \" + s);");        ostr.println("    }");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final private void trace_token(Token t, String where) {");        ostr.println("    if (trace_enabled) {");        ostr.println("      for (int i = 0; i < trace_indent; i++) { System.out.print(\" \"); }");        ostr.println("      System.out.print(\"Consumed token: <\" + tokenImage[t.kind]);");        ostr.println("      if (t.kind != 0 && !tokenImage[t.kind].equals(\"\\\"\" + t.image + \"\\\"\")) {");        ostr.println("        System.out.print(\": \\\"\" + t.image + \"\\\"\");");        ostr.println("      }");        ostr.println("      System.out.println(\">\" + where);");        ostr.println("    }");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final private void trace_scan(Token t1, int t2) {");        ostr.println("    if (trace_enabled) {");        ostr.println("      for (int i = 0; i < trace_indent; i++) { System.out.print(\" \"); }");        ostr.println("      System.out.print(\"Visited token: <\" + tokenImage[t1.kind]);");        ostr.println("      if (t1.kind != 0 && !tokenImage[t1.kind].equals(\"\\\"\" + t1.image + \"\\\"\")) {");        ostr.println("        System.out.print(\": \\\"\" + t1.image + \"\\\"\");");        ostr.println("      }");        ostr.println("      System.out.println(\">; Expected token: <\" + tokenImage[t2] + \">\");");        ostr.println("    }");        ostr.println("  }");        ostr.println("");      } else {        ostr.println("  " + staticOpt() + "final public void enable_tracing() {");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final public void disable_tracing() {");        ostr.println("  }");        ostr.println("");      }      if (jj2index != 0 && Options.B("ERROR_REPORTING")) {        ostr.println("  " + staticOpt() + "final private void jj_rescan_token() {");        ostr.println("    jj_rescan = true;");        ostr.println("    for (int i = 0; i < " + jj2index + "; i++) {");        ostr.println("      JJCalls p = jj_2_rtns[i];");        ostr.println("      do {");        ostr.println("        if (p.gen > jj_gen) {");        ostr.println("          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;");        ostr.println("          switch (i) {");        for (int i = 0; i < jj2index; i++) {          ostr.println("            case " + i + ": jj_3_" + (i+1) + "(); break;");        }        ostr.println("          }");        ostr.println("        }");        ostr.println("        p = p.next;");        ostr.println("      } while (p != null);");        ostr.println("    }");        ostr.println("    jj_rescan = false;");        ostr.println("  }");        ostr.println("");        ostr.println("  " + staticOpt() + "final private void jj_save(int index, int xla) {");        ostr.println("    JJCalls p = jj_2_rtns[index];");        ostr.println("    while (p.gen > jj_gen) {");        ostr.println("      if (p.next == null) { p = p.next = new JJCalls(); break; }");        ostr.println("      p = p.next;");        ostr.println("    }");        ostr.println("    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;");        ostr.println("  }");        ostr.println("");      }      if (jj2index != 0 && Options.B("ERROR_REPORTING")) {        ostr.println("  static final class JJCalls {");        ostr.println("    int gen;");        ostr.println("    Token first;");        ostr.println("    int arg;");        ostr.println("    JJCalls next;");        ostr.println("  }");        ostr.println("");      }      if (cu_from_insertion_point_2.size() != 0) {        printTokenSetup((Token)(cu_from_insertion_point_2.elementAt(0))); ccol = 1;        for (Enumeration enum = cu_from_insertion_point_2.elements(); enum.hasMoreElements();) {          t = (Token)enum.nextElement();          printToken(t, ostr);        }        printTrailingComments(t, ostr);      }      ostr.println("");      ostr.close();    } // matches "if (Options.B("BUILD_PARSER"))"  }  static private PrintWriter ostr;   public static void reInit()   {      ostr = null;   }}

⌨️ 快捷键说明

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