📄 parsegen.java
字号:
ostr.println(" jj_ntk = -1;"); } if (jjtreeGenerated) { ostr.println(" jjtree.reset();"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen = 0;"); ostr.println(" for (int i = 0; i < " + maskindex + "; i++) jj_la1[i] = -1;"); if (jj2index != 0) { ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();"); } } ostr.println(" }"); ostr.println(""); ostr.println(" public " + cu_name + "(java.io.Reader stream) {"); if (Options.B("STATIC")) { ostr.println(" if (jj_initialized_once) {"); ostr.println(" System.out.println(\"ERROR: Second call to constructor of static parser. You must\");"); ostr.println(" System.out.println(\" either use ReInit() or set the JavaCC option STATIC to false\");"); ostr.println(" System.out.println(\" during parser generation.\");"); ostr.println(" throw new Error();"); ostr.println(" }"); ostr.println(" jj_initialized_once = true;"); } if (Options.B("JAVA_UNICODE_ESCAPE")) { ostr.println(" jj_input_stream = new JavaCharStream(stream, 1, 1);"); } else { ostr.println(" jj_input_stream = new SimpleCharStream(stream, 1, 1);"); } ostr.println(" token_source = new " + cu_name + "TokenManager(jj_input_stream);"); ostr.println(" token = new Token();"); if (Options.B("CACHE_TOKENS")) { ostr.println(" token.next = jj_nt = token_source.getNextToken();"); } else { ostr.println(" jj_ntk = -1;"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen = 0;"); ostr.println(" for (int i = 0; i < " + maskindex + "; i++) jj_la1[i] = -1;"); if (jj2index != 0) { ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();"); } } ostr.println(" }"); ostr.println(""); ostr.println(" " + staticOpt() + "public void ReInit(java.io.Reader stream) {"); if (Options.B("JAVA_UNICODE_ESCAPE")) { ostr.println(" jj_input_stream.ReInit(stream, 1, 1);"); } else { ostr.println(" jj_input_stream.ReInit(stream, 1, 1);"); } ostr.println(" token_source.ReInit(jj_input_stream);"); ostr.println(" token = new Token();"); if (Options.B("CACHE_TOKENS")) { ostr.println(" token.next = jj_nt = token_source.getNextToken();"); } else { ostr.println(" jj_ntk = -1;"); } if (jjtreeGenerated) { ostr.println(" jjtree.reset();"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen = 0;"); ostr.println(" for (int i = 0; i < " + maskindex + "; i++) jj_la1[i] = -1;"); if (jj2index != 0) { ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();"); } } ostr.println(" }"); } } ostr.println(""); if (Options.B("USER_TOKEN_MANAGER")) { ostr.println(" public " + cu_name + "(TokenManager tm) {"); } else { ostr.println(" public " + cu_name + "(" + cu_name + "TokenManager tm) {"); } if (Options.B("STATIC")) { ostr.println(" if (jj_initialized_once) {"); ostr.println(" System.out.println(\"ERROR: Second call to constructor of static parser. You must\");"); ostr.println(" System.out.println(\" either use ReInit() or set the JavaCC option STATIC to false\");"); ostr.println(" System.out.println(\" during parser generation.\");"); ostr.println(" throw new Error();"); ostr.println(" }"); ostr.println(" jj_initialized_once = true;"); } ostr.println(" token_source = tm;"); ostr.println(" token = new Token();"); if (Options.B("CACHE_TOKENS")) { ostr.println(" token.next = jj_nt = token_source.getNextToken();"); } else { ostr.println(" jj_ntk = -1;"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen = 0;"); ostr.println(" for (int i = 0; i < " + maskindex + "; i++) jj_la1[i] = -1;"); if (jj2index != 0) { ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();"); } } ostr.println(" }"); ostr.println(""); if (Options.B("USER_TOKEN_MANAGER")) { ostr.println(" public void ReInit(TokenManager tm) {"); } else { ostr.println(" public void ReInit(" + cu_name + "TokenManager tm) {"); } ostr.println(" token_source = tm;"); ostr.println(" token = new Token();"); if (Options.B("CACHE_TOKENS")) { ostr.println(" token.next = jj_nt = token_source.getNextToken();"); } else { ostr.println(" jj_ntk = -1;"); } if (jjtreeGenerated) { ostr.println(" jjtree.reset();"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen = 0;"); ostr.println(" for (int i = 0; i < " + maskindex + "; i++) jj_la1[i] = -1;"); if (jj2index != 0) { ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();"); } } ostr.println(" }"); ostr.println(""); ostr.println(" " + staticOpt() + "final private Token jj_consume_token(int kind) throws ParseException {"); if (Options.B("CACHE_TOKENS")) { ostr.println(" Token oldToken = token;"); ostr.println(" if ((token = jj_nt).next != null) jj_nt = jj_nt.next;"); ostr.println(" else jj_nt = jj_nt.next = token_source.getNextToken();"); } else { ostr.println(" Token oldToken;"); ostr.println(" if ((oldToken = token).next != null) token = token.next;"); ostr.println(" else token = token.next = token_source.getNextToken();"); ostr.println(" jj_ntk = -1;"); } ostr.println(" if (token.kind == kind) {"); if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen++;"); if (jj2index != 0) { ostr.println(" if (++jj_gc > 100) {"); ostr.println(" jj_gc = 0;"); ostr.println(" for (int i = 0; i < jj_2_rtns.length; i++) {"); ostr.println(" JJCalls c = jj_2_rtns[i];"); ostr.println(" while (c != null) {"); ostr.println(" if (c.gen < jj_gen) c.first = null;"); ostr.println(" c = c.next;"); ostr.println(" }"); ostr.println(" }"); ostr.println(" }"); } } if (Options.B("DEBUG_PARSER")) { ostr.println(" trace_token(token, \"\");"); } ostr.println(" return token;"); ostr.println(" }"); if (Options.B("CACHE_TOKENS")) { ostr.println(" jj_nt = token;"); } ostr.println(" token = oldToken;"); if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_kind = kind;"); } ostr.println(" throw generateParseException();"); ostr.println(" }"); ostr.println(""); if (jj2index != 0) { ostr.println(" static private final class LookaheadSuccess extends java.lang.Error { }"); ostr.println(" " + staticOpt() + "final private LookaheadSuccess jj_ls = new LookaheadSuccess();"); ostr.println(" " + staticOpt() + "final private boolean jj_scan_token(int kind) {"); ostr.println(" if (jj_scanpos == jj_lastpos) {"); ostr.println(" jj_la--;"); ostr.println(" if (jj_scanpos.next == null) {"); ostr.println(" jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();"); ostr.println(" } else {"); ostr.println(" jj_lastpos = jj_scanpos = jj_scanpos.next;"); ostr.println(" }"); ostr.println(" } else {"); ostr.println(" jj_scanpos = jj_scanpos.next;"); ostr.println(" }"); if (Options.B("ERROR_REPORTING")) { ostr.println(" if (jj_rescan) {"); ostr.println(" int i = 0; Token tok = token;"); ostr.println(" while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }"); ostr.println(" if (tok != null) jj_add_error_token(kind, i);"); if (Options.B("DEBUG_LOOKAHEAD")) { ostr.println(" } else {"); ostr.println(" trace_scan(jj_scanpos, kind);"); } ostr.println(" }"); } else if (Options.B("DEBUG_LOOKAHEAD")) { ostr.println(" trace_scan(jj_scanpos, kind);"); } ostr.println(" if (jj_scanpos.kind != kind) return true;"); ostr.println(" if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;"); ostr.println(" return false;"); ostr.println(" }"); ostr.println(""); } ostr.println(" " + staticOpt() + "final public Token getNextToken() {"); if (Options.B("CACHE_TOKENS")) { ostr.println(" if ((token = jj_nt).next != null) jj_nt = jj_nt.next;"); ostr.println(" else jj_nt = jj_nt.next = token_source.getNextToken();"); } else { ostr.println(" if (token.next != null) token = token.next;"); ostr.println(" else token = token.next = token_source.getNextToken();"); ostr.println(" jj_ntk = -1;"); } if (Options.B("ERROR_REPORTING")) { ostr.println(" jj_gen++;"); } if (Options.B("DEBUG_PARSER")) { ostr.println(" trace_token(token, \" (in getNextToken)\");"); } ostr.println(" return token;"); ostr.println(" }"); ostr.println(""); ostr.println(" " + staticOpt() + "final public Token getToken(int index) {"); if (jj2index != 0) { ostr.println(" Token t = lookingAhead ? jj_scanpos : token;"); } else { ostr.println(" Token t = token;"); } ostr.println(" for (int i = 0; i < index; i++) {"); ostr.println(" if (t.next != null) t = t.next;"); ostr.println(" else t = t.next = token_source.getNextToken();"); ostr.println(" }"); ostr.println(" return t;"); ostr.println(" }");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -