00001
00002 package plp.imperative1.parser;
00003
00004 import plp.expressions1.util.*;
00005 import plp.expressions2.expression.*;
00006 import plp.imperative1.command.*;
00007 import plp.imperative1.declaration.*;
00008 import plp.imperative1.memory.*;
00009 import plp.imperative1.*;
00010 import java.util.*;
00011
00012 public class Imp1Parser implements Imp1ParserConstants {
00013
00014 public static void main(String args[]) {
00015 ListaValor entrada = new ListaValor();
00016 Imp1Parser parser;
00017 if (args.length == 0) {
00018 System.out.println("Imperativa 1 PLP Parser Version 0.0.2: Reading from standard input . . .");
00019 parser = new Imp1Parser(System.in);
00020 } else {
00021 System.out.println("Imperativa 1 PLP Parser Version 0.0.2: Reading from file " + args[0] + " . . .");
00022 try {
00023 parser = new Imp1Parser(new java.io.FileInputStream(args[0]));
00024 } catch (java.io.FileNotFoundException e) {
00025 System.out.println("Java Parser Version 1.0.2: File " + args[0] + " not found.");
00026 return;
00027 }
00028
00029 List valores = new LinkedList();
00030 for(int i=1;i<args.length;i++)
00031 {
00032 String parametro = args[i];
00033
00034 try {
00035 Integer inteiro = Integer.valueOf(parametro);
00036 valores.add(new ValorInteiro(inteiro.intValue()));
00037 continue;
00038 } catch(NumberFormatException e) {
00039
00040 }
00041
00042 if(parametro.equalsIgnoreCase("true")
00043 || parametro.equalsIgnoreCase("false")) {
00044 Boolean booleano = Boolean.valueOf(parametro);
00045 valores.add(new ValorBooleano(booleano.booleanValue()));
00046 } else {
00047 valores.add(new ValorString(parametro));
00048 }
00049 }
00050
00051 entrada = criaListaValor(valores);
00052 }
00053
00054 try {
00055 Programa programa = parser.Input();
00056 System.out.println("Imperativa 1 PLP Parser Version 0.0.2: Imperativa2 program parsed successfully.");
00057 if(programa.checaTipo(new ContextoCompilacaoImperativa(entrada))) {
00058 ListaValor saida = programa.executar(new ContextoExecucaoImperativa(entrada));
00059 System.out.println(saida);
00060 }
00061 else {
00062 System.out.println("Erro de tipo");
00063 }
00064 } catch (Exception e) {
00065 System.out.println("Imperativa 1 PLP Parser Version 0.0.2: Encountered errors during parse.");
00066 e.printStackTrace();
00067 }
00068 }
00069
00070 public static ListaValor criaListaValor(List valores) {
00071 if(valores.size() == 0) {
00072 return new ListaValor();
00073 }
00074
00075 Valor primeiro = (Valor) valores.get(0);
00076 valores.remove(0);
00077 return new ListaValor(primeiro, criaListaValor(valores));
00078
00079 }
00080
00081 static final public Programa Input() throws ParseException {
00082 Programa retorno;
00083 retorno = PPrograma();
00084 jj_consume_token(0);
00085 {if (true) return retorno;}
00086 throw new Error("Missing return statement in function");
00087 }
00088
00089 static final public Programa PPrograma() throws ParseException {
00090 Comando retorno;
00091 retorno = PComando();
00092 {if (true) return new Programa(retorno);}
00093 throw new Error("Missing return statement in function");
00094 }
00095
00096 static final public Comando PComando() throws ParseException {
00097 Comando retorno;
00098 if (jj_2_1(2147483647)) {
00099 retorno = PSequenciaComando();
00100 } else {
00101 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00102 case COMAND_SKIP:
00103 case WHILE:
00104 case READ:
00105 case WRITE:
00106 case IF:
00107 case IDENTIFIER:
00108 case LPAREN:
00109 case LBRACE:
00110 retorno = PComandoSimples();
00111 break;
00112 default:
00113 jj_la1[0] = jj_gen;
00114 jj_consume_token(-1);
00115 throw new ParseException();
00116 }
00117 }
00118 {if (true) return retorno;}
00119 throw new Error("Missing return statement in function");
00120 }
00121
00122 static final public SequenciaComando PSequenciaComando() throws ParseException {
00123 Comando c1;
00124 Comando c2;
00125 c1 = PComandoSimples();
00126 jj_consume_token(SEMICOLON);
00127 c2 = PComando();
00128 {if (true) return new SequenciaComando(c1, c2);}
00129 throw new Error("Missing return statement in function");
00130 }
00131
00132 static final public IO PIO() throws ParseException {
00133 IO retorno;
00134 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00135 case READ:
00136 retorno = PRead();
00137 break;
00138 case WRITE:
00139 retorno = PWrite();
00140 break;
00141 default:
00142 jj_la1[1] = jj_gen;
00143 jj_consume_token(-1);
00144 throw new ParseException();
00145 }
00146 {if (true) return retorno;}
00147 throw new Error("Missing return statement in function");
00148 }
00149
00150 static final public Read PRead() throws ParseException {
00151 Id id;
00152 jj_consume_token(READ);
00153 jj_consume_token(LPAREN);
00154 id = PId();
00155 jj_consume_token(RPAREN);
00156 {if (true) return new Read (id);}
00157 throw new Error("Missing return statement in function");
00158 }
00159
00160 static final public Write PWrite() throws ParseException {
00161 Expressao exp;
00162 jj_consume_token(WRITE);
00163 jj_consume_token(LPAREN);
00164 exp = PExpressao();
00165 jj_consume_token(RPAREN);
00166 {if (true) return new Write(exp);}
00167 throw new Error("Missing return statement in function");
00168 }
00169
00170 static final public IfThenElse PIfThenElse() throws ParseException {
00171 Expressao expressao;
00172 Comando comandoThen;
00173 Comando comandoElse;
00174 jj_consume_token(IF);
00175 expressao = PExpressao();
00176 jj_consume_token(THEN);
00177 comandoThen = PComando();
00178 jj_consume_token(ELSE);
00179 comandoElse = PComando();
00180 {if (true) return new IfThenElse (expressao, comandoThen, comandoElse);}
00181 throw new Error("Missing return statement in function");
00182 }
00183
00184 static final public While PWhile() throws ParseException {
00185 Expressao expressao;
00186 Comando comando;
00187 jj_consume_token(WHILE);
00188 expressao = PExpressao();
00189 jj_consume_token(DO);
00190 comando = PComando();
00191 {if (true) return new While(expressao, comando);}
00192 throw new Error("Missing return statement in function");
00193 }
00194
00195 static final public Skip PSkip() throws ParseException {
00196 jj_consume_token(COMAND_SKIP);
00197 {if (true) return new Skip();}
00198 throw new Error("Missing return statement in function");
00199 }
00200
00201 static final public Atribuicao PAtribuicao() throws ParseException {
00202 Id id;
00203 Expressao exp;
00204 id = PId();
00205 jj_consume_token(ATTRIB);
00206 exp = PExpressao();
00207 {if (true) return new Atribuicao(id, exp);}
00208 throw new Error("Missing return statement in function");
00209 }
00210
00211 static final public Id PId() throws ParseException {
00212 Token token;
00213 token = jj_consume_token(IDENTIFIER);
00214 {if (true) return new Id(token.toString());}
00215 throw new Error("Missing return statement in function");
00216 }
00217
00218 static final public Valor PValorInteiro() throws ParseException {
00219 Token token;
00220 token = jj_consume_token(INTEGER_LITERAL);
00221 {if (true) return new ValorInteiro(Integer.parseInt(token.toString()));}
00222 throw new Error("Missing return statement in function");
00223 }
00224
00225 static final public Valor PValorBooleano() throws ParseException {
00226 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00227 case FALSE:
00228 jj_consume_token(FALSE);
00229 {if (true) return new ValorBooleano(false);}
00230 break;
00231 case TRUE:
00232 jj_consume_token(TRUE);
00233 {if (true) return new ValorBooleano(true);}
00234 break;
00235 default:
00236 jj_la1[2] = jj_gen;
00237 jj_consume_token(-1);
00238 throw new ParseException();
00239 }
00240 throw new Error("Missing return statement in function");
00241 }
00242
00243 static final public Valor PValorString() throws ParseException {
00244 Token token;
00245 token = jj_consume_token(STRING_LITERAL);
00246 String tokenStr = token.toString();
00247 tokenStr = tokenStr.substring(1,tokenStr.length()-1);
00248 {if (true) return new ValorString(tokenStr);}
00249 throw new Error("Missing return statement in function");
00250 }
00251
00252 static final public Valor PValor() throws ParseException {
00253 Valor retorno;
00254 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00255 case INTEGER_LITERAL:
00256 retorno = PValorInteiro();
00257 break;
00258 case TRUE:
00259 case FALSE:
00260 retorno = PValorBooleano();
00261 break;
00262 case STRING_LITERAL:
00263 retorno = PValorString();
00264 break;
00265 default:
00266 jj_la1[3] = jj_gen;
00267 jj_consume_token(-1);
00268 throw new ParseException();
00269 }
00270 {if (true) return retorno;}
00271 throw new Error("Missing return statement in function");
00272 }
00273
00274 static final public Expressao PExpMenos() throws ParseException {
00275 Expressao retorno;
00276 jj_consume_token(MINUS);
00277 retorno = PExpressao();
00278 {if (true) return new ExpMenos(retorno);}
00279 throw new Error("Missing return statement in function");
00280 }
00281
00282 static final public Expressao PExpNot() throws ParseException {
00283 Expressao retorno;
00284 jj_consume_token(NOT);
00285 retorno = PExpressao();
00286 {if (true) return new ExpNot(retorno);}
00287 throw new Error("Missing return statement in function");
00288 }
00289
00290 static final public Expressao PExpLength() throws ParseException {
00291 Expressao retorno;
00292 jj_consume_token(LENGTH);
00293 retorno = PExpressao();
00294 {if (true) return new ExpLength(retorno);}
00295 throw new Error("Missing return statement in function");
00296 }
00297
00298 static final public Expressao PExpPrimaria() throws ParseException {
00299 Expressao retorno;
00300 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00301 case IDENTIFIER:
00302 retorno = PId();
00303 break;
00304 case TRUE:
00305 case FALSE:
00306 case INTEGER_LITERAL:
00307 case STRING_LITERAL:
00308 retorno = PValor();
00309 break;
00310 case LPAREN:
00311 jj_consume_token(LPAREN);
00312 retorno = PExpressao();
00313 jj_consume_token(RPAREN);
00314 break;
00315 default:
00316 jj_la1[4] = jj_gen;
00317 jj_consume_token(-1);
00318 throw new ParseException();
00319 }
00320 {if (true) return retorno;}
00321 throw new Error("Missing return statement in function");
00322 }
00323
00324 static final public Expressao PExpUnaria() throws ParseException {
00325 Expressao retorno;
00326 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00327 case MINUS:
00328 retorno = PExpMenos();
00329 break;
00330 case NOT:
00331 retorno = PExpNot();
00332 break;
00333 case LENGTH:
00334 retorno = PExpLength();
00335 break;
00336 default:
00337 jj_la1[5] = jj_gen;
00338 jj_consume_token(-1);
00339 throw new ParseException();
00340 }
00341 {if (true) return retorno;}
00342 throw new Error("Missing return statement in function");
00343 }
00344
00345 static final public Expressao PExpBinaria() throws ParseException {
00346 Expressao retorno, param2;
00347 if (jj_2_2(2147483647)) {
00348 retorno = PExpConcat();
00349 } else if (jj_2_3(2147483647)) {
00350 retorno = PExpSub();
00351 } else if (jj_2_4(2147483647)) {
00352 retorno = PExpAnd();
00353 } else if (jj_2_5(2147483647)) {
00354 retorno = PExpOr();
00355 } else if (jj_2_6(2147483647)) {
00356 retorno = PExpEquals();
00357 } else {
00358 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00359 case TRUE:
00360 case FALSE:
00361 case INTEGER_LITERAL:
00362 case STRING_LITERAL:
00363 case IDENTIFIER:
00364 case LPAREN:
00365 retorno = PExpSoma();
00366 break;
00367 default:
00368 jj_la1[6] = jj_gen;
00369 jj_consume_token(-1);
00370 throw new ParseException();
00371 }
00372 }
00373 {if (true) return retorno;}
00374 throw new Error("Missing return statement in function");
00375 }
00376
00377 static final public ExpSoma PExpSoma() throws ParseException {
00378 Expressao esq;
00379 Expressao dir;
00380 esq = PExpPrimaria();
00381 jj_consume_token(PLUS);
00382 dir = PExpressao();
00383 {if (true) return new ExpSoma(esq, dir);}
00384 throw new Error("Missing return statement in function");
00385 }
00386
00387 static final public ExpSub PExpSub() throws ParseException {
00388 Expressao esq;
00389 Expressao dir;
00390 esq = PExpPrimaria();
00391 jj_consume_token(MINUS);
00392 dir = PExpressao();
00393 {if (true) return new ExpSub(esq, dir);}
00394 throw new Error("Missing return statement in function");
00395 }
00396
00397 static final public ExpAnd PExpAnd() throws ParseException {
00398 Expressao esq;
00399 Expressao dir;
00400 esq = PExpPrimaria();
00401 jj_consume_token(AND);
00402 dir = PExpressao();
00403 {if (true) return new ExpAnd(esq, dir);}
00404 throw new Error("Missing return statement in function");
00405 }
00406
00407 static final public ExpOr PExpOr() throws ParseException {
00408 Expressao esq;
00409 Expressao dir;
00410 esq = PExpPrimaria();
00411 jj_consume_token(OR);
00412 dir = PExpressao();
00413 {if (true) return new ExpOr(esq, dir);}
00414 throw new Error("Missing return statement in function");
00415 }
00416
00417 static final public ExpEquals PExpEquals() throws ParseException {
00418 Expressao esq;
00419 Expressao dir;
00420 esq = PExpPrimaria();
00421 jj_consume_token(EQ);
00422 dir = PExpressao();
00423 {if (true) return new ExpEquals(esq, dir);}
00424 throw new Error("Missing return statement in function");
00425 }
00426
00427 static final public ExpConcat PExpConcat() throws ParseException {
00428 Expressao esq;
00429 Expressao dir;
00430 esq = PExpPrimaria();
00431 jj_consume_token(CONCAT);
00432 dir = PExpressao();
00433 {if (true) return new ExpConcat(esq, dir);}
00434 throw new Error("Missing return statement in function");
00435 }
00436
00437 static final public Expressao PExpressao() throws ParseException {
00438 Expressao retorno;
00439 if (jj_2_7(2)) {
00440 retorno = PExpUnaria();
00441 } else if (jj_2_8(2147483647)) {
00442 retorno = PExpBinaria();
00443 } else {
00444 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00445 case TRUE:
00446 case FALSE:
00447 case INTEGER_LITERAL:
00448 case STRING_LITERAL:
00449 case IDENTIFIER:
00450 case LPAREN:
00451 retorno = PExpPrimaria();
00452 break;
00453 default:
00454 jj_la1[7] = jj_gen;
00455 jj_consume_token(-1);
00456 throw new ParseException();
00457 }
00458 }
00459 {if (true) return retorno;}
00460 throw new Error("Missing return statement in function");
00461 }
00462
00463
00464 static final public Comando PComandoSimples() throws ParseException {
00465 Comando retorno;
00466 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00467 case COMAND_SKIP:
00468 retorno = PSkip();
00469 break;
00470 case IDENTIFIER:
00471 retorno = PAtribuicao();
00472 break;
00473 case LBRACE:
00474 retorno = PComandoDeclaracao();
00475 break;
00476 case WHILE:
00477 retorno = PWhile();
00478 break;
00479 case IF:
00480 retorno = PIfThenElse();
00481 break;
00482 case READ:
00483 case WRITE:
00484 retorno = PIO();
00485 break;
00486 case LPAREN:
00487 jj_consume_token(LPAREN);
00488 retorno = PComando();
00489 jj_consume_token(RPAREN);
00490 break;
00491 default:
00492 jj_la1[8] = jj_gen;
00493 jj_consume_token(-1);
00494 throw new ParseException();
00495 }
00496 {if (true) return retorno;}
00497 throw new Error("Missing return statement in function");
00498 }
00499
00500 static final public ComandoDeclaracao PComandoDeclaracao() throws ParseException {
00501 Declaracao dec;
00502 Comando comando;
00503 jj_consume_token(LBRACE);
00504 dec = PDeclaracao();
00505 jj_consume_token(SEMICOLON);
00506 comando = PComando();
00507 jj_consume_token(RBRACE);
00508 {if (true) return new ComandoDeclaracao(dec, comando);}
00509 throw new Error("Missing return statement in function");
00510 }
00511
00512 static final public Declaracao PDeclaracao() throws ParseException {
00513 Declaracao retorno;
00514 if (jj_2_9(2147483647)) {
00515 retorno = PDeclaracaoComposta();
00516 } else {
00517 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00518 case VAR:
00519 retorno = PDeclaracaoVariavel();
00520 break;
00521 case LPAREN:
00522 jj_consume_token(LPAREN);
00523 retorno = PDeclaracao();
00524 jj_consume_token(RPAREN);
00525 break;
00526 default:
00527 jj_la1[9] = jj_gen;
00528 jj_consume_token(-1);
00529 throw new ParseException();
00530 }
00531 }
00532 {if (true) return retorno;}
00533 throw new Error("Missing return statement in function");
00534 }
00535
00536 static final public DeclaracaoComposta PDeclaracaoComposta() throws ParseException {
00537 Declaracao d1;
00538 Declaracao d2;
00539 d1 = PDeclaracaoVariavel();
00540 jj_consume_token(COMMA);
00541 d2 = PDeclaracao();
00542 {if (true) return new DeclaracaoComposta(d1, d2);}
00543 throw new Error("Missing return statement in function");
00544 }
00545
00546 static final public DeclaracaoVariavel PDeclaracaoVariavel() throws ParseException {
00547 Id id;
00548 Expressao exp;
00549 DeclaracaoVariavel retorno;
00550 jj_consume_token(VAR);
00551 id = PId();
00552 jj_consume_token(ASSIGN);
00553 exp = PValor();
00554 retorno = new DeclaracaoVariavel(id, exp);
00555 {if (true) return retorno;}
00556 throw new Error("Missing return statement in function");
00557 }
00558
00559 static final private boolean jj_2_1(int xla) {
00560 jj_la = xla; jj_lastpos = jj_scanpos = token;
00561 try { return !jj_3_1(); }
00562 catch(LookaheadSuccess ls) { return true; }
00563 finally { jj_save(0, xla); }
00564 }
00565
00566 static final private boolean jj_2_2(int xla) {
00567 jj_la = xla; jj_lastpos = jj_scanpos = token;
00568 try { return !jj_3_2(); }
00569 catch(LookaheadSuccess ls) { return true; }
00570 finally { jj_save(1, xla); }
00571 }
00572
00573 static final private boolean jj_2_3(int xla) {
00574 jj_la = xla; jj_lastpos = jj_scanpos = token;
00575 try { return !jj_3_3(); }
00576 catch(LookaheadSuccess ls) { return true; }
00577 finally { jj_save(2, xla); }
00578 }
00579
00580 static final private boolean jj_2_4(int xla) {
00581 jj_la = xla; jj_lastpos = jj_scanpos = token;
00582 try { return !jj_3_4(); }
00583 catch(LookaheadSuccess ls) { return true; }
00584 finally { jj_save(3, xla); }
00585 }
00586
00587 static final private boolean jj_2_5(int xla) {
00588 jj_la = xla; jj_lastpos = jj_scanpos = token;
00589 try { return !jj_3_5(); }
00590 catch(LookaheadSuccess ls) { return true; }
00591 finally { jj_save(4, xla); }
00592 }
00593
00594 static final private boolean jj_2_6(int xla) {
00595 jj_la = xla; jj_lastpos = jj_scanpos = token;
00596 try { return !jj_3_6(); }
00597 catch(LookaheadSuccess ls) { return true; }
00598 finally { jj_save(5, xla); }
00599 }
00600
00601 static final private boolean jj_2_7(int xla) {
00602 jj_la = xla; jj_lastpos = jj_scanpos = token;
00603 try { return !jj_3_7(); }
00604 catch(LookaheadSuccess ls) { return true; }
00605 finally { jj_save(6, xla); }
00606 }
00607
00608 static final private boolean jj_2_8(int xla) {
00609 jj_la = xla; jj_lastpos = jj_scanpos = token;
00610 try { return !jj_3_8(); }
00611 catch(LookaheadSuccess ls) { return true; }
00612 finally { jj_save(7, xla); }
00613 }
00614
00615 static final private boolean jj_2_9(int xla) {
00616 jj_la = xla; jj_lastpos = jj_scanpos = token;
00617 try { return !jj_3_9(); }
00618 catch(LookaheadSuccess ls) { return true; }
00619 finally { jj_save(8, xla); }
00620 }
00621
00622 static final private boolean jj_3R_20() {
00623 if (jj_scan_token(COMAND_SKIP)) return true;
00624 return false;
00625 }
00626
00627 static final private boolean jj_3R_61() {
00628 if (jj_3R_2()) return true;
00629 if (jj_scan_token(MINUS)) return true;
00630 if (jj_3R_27()) return true;
00631 return false;
00632 }
00633
00634 static final private boolean jj_3R_23() {
00635 if (jj_scan_token(WHILE)) return true;
00636 if (jj_3R_27()) return true;
00637 if (jj_scan_token(DO)) return true;
00638 if (jj_3R_26()) return true;
00639 return false;
00640 }
00641
00642 static final private boolean jj_3_6() {
00643 if (jj_3R_2()) return true;
00644 if (jj_scan_token(EQ)) return true;
00645 return false;
00646 }
00647
00648 static final private boolean jj_3_5() {
00649 if (jj_3R_2()) return true;
00650 if (jj_scan_token(OR)) return true;
00651 return false;
00652 }
00653
00654 static final private boolean jj_3_4() {
00655 if (jj_3R_2()) return true;
00656 if (jj_scan_token(AND)) return true;
00657 return false;
00658 }
00659
00660 static final private boolean jj_3R_65() {
00661 if (jj_3R_2()) return true;
00662 if (jj_scan_token(PLUS)) return true;
00663 if (jj_3R_27()) return true;
00664 return false;
00665 }
00666
00667 static final private boolean jj_3_3() {
00668 if (jj_3R_2()) return true;
00669 if (jj_scan_token(MINUS)) return true;
00670 return false;
00671 }
00672
00673 static final private boolean jj_3_2() {
00674 if (jj_3R_2()) return true;
00675 if (jj_scan_token(CONCAT)) return true;
00676 return false;
00677 }
00678
00679 static final private boolean jj_3R_59() {
00680 if (jj_3R_65()) return true;
00681 return false;
00682 }
00683
00684 static final private boolean jj_3R_58() {
00685 if (jj_3R_64()) return true;
00686 return false;
00687 }
00688
00689 static final private boolean jj_3R_24() {
00690 if (jj_scan_token(IF)) return true;
00691 if (jj_3R_27()) return true;
00692 if (jj_scan_token(THEN)) return true;
00693 if (jj_3R_26()) return true;
00694 if (jj_scan_token(ELSE)) return true;
00695 if (jj_3R_26()) return true;
00696 return false;
00697 }
00698
00699 static final private boolean jj_3R_57() {
00700 if (jj_3R_63()) return true;
00701 return false;
00702 }
00703
00704 static final private boolean jj_3R_56() {
00705 if (jj_3R_62()) return true;
00706 return false;
00707 }
00708
00709 static final private boolean jj_3R_55() {
00710 if (jj_3R_61()) return true;
00711 return false;
00712 }
00713
00714 static final private boolean jj_3R_54() {
00715 if (jj_3R_60()) return true;
00716 return false;
00717 }
00718
00719 static final private boolean jj_3R_48() {
00720 if (jj_scan_token(WRITE)) return true;
00721 if (jj_scan_token(LPAREN)) return true;
00722 if (jj_3R_27()) return true;
00723 if (jj_scan_token(RPAREN)) return true;
00724 return false;
00725 }
00726
00727 static final private boolean jj_3R_50() {
00728 Token xsp;
00729 xsp = jj_scanpos;
00730 if (jj_3R_54()) {
00731 jj_scanpos = xsp;
00732 if (jj_3R_55()) {
00733 jj_scanpos = xsp;
00734 if (jj_3R_56()) {
00735 jj_scanpos = xsp;
00736 if (jj_3R_57()) {
00737 jj_scanpos = xsp;
00738 if (jj_3R_58()) {
00739 jj_scanpos = xsp;
00740 if (jj_3R_59()) return true;
00741 }
00742 }
00743 }
00744 }
00745 }
00746 return false;
00747 }
00748
00749 static final private boolean jj_3R_36() {
00750 if (jj_3R_48()) return true;
00751 return false;
00752 }
00753
00754 static final private boolean jj_3R_47() {
00755 if (jj_scan_token(READ)) return true;
00756 if (jj_scan_token(LPAREN)) return true;
00757 if (jj_3R_18()) return true;
00758 if (jj_scan_token(RPAREN)) return true;
00759 return false;
00760 }
00761
00762 static final private boolean jj_3R_35() {
00763 if (jj_3R_47()) return true;
00764 return false;
00765 }
00766
00767 static final private boolean jj_3R_17() {
00768 if (jj_3R_30()) return true;
00769 return false;
00770 }
00771
00772 static final private boolean jj_3R_16() {
00773 if (jj_3R_29()) return true;
00774 return false;
00775 }
00776
00777 static final private boolean jj_3R_4() {
00778 if (jj_scan_token(VAR)) return true;
00779 if (jj_3R_18()) return true;
00780 if (jj_scan_token(ASSIGN)) return true;
00781 if (jj_3R_19()) return true;
00782 return false;
00783 }
00784
00785 static final private boolean jj_3R_15() {
00786 if (jj_3R_28()) return true;
00787 return false;
00788 }
00789
00790 static final private boolean jj_3R_3() {
00791 Token xsp;
00792 xsp = jj_scanpos;
00793 if (jj_3R_15()) {
00794 jj_scanpos = xsp;
00795 if (jj_3R_16()) {
00796 jj_scanpos = xsp;
00797 if (jj_3R_17()) return true;
00798 }
00799 }
00800 return false;
00801 }
00802
00803 static final private boolean jj_3R_25() {
00804 Token xsp;
00805 xsp = jj_scanpos;
00806 if (jj_3R_35()) {
00807 jj_scanpos = xsp;
00808 if (jj_3R_36()) return true;
00809 }
00810 return false;
00811 }
00812
00813 static final private boolean jj_3_9() {
00814 if (jj_3R_4()) return true;
00815 if (jj_scan_token(COMMA)) return true;
00816 return false;
00817 }
00818
00819 static final private boolean jj_3R_46() {
00820 if (jj_scan_token(LPAREN)) return true;
00821 if (jj_3R_34()) return true;
00822 if (jj_scan_token(RPAREN)) return true;
00823 return false;
00824 }
00825
00826 static final private boolean jj_3R_45() {
00827 if (jj_3R_4()) return true;
00828 return false;
00829 }
00830
00831 static final private boolean jj_3R_53() {
00832 if (jj_3R_4()) return true;
00833 if (jj_scan_token(COMMA)) return true;
00834 if (jj_3R_34()) return true;
00835 return false;
00836 }
00837
00838 static final private boolean jj_3R_14() {
00839 if (jj_scan_token(LPAREN)) return true;
00840 if (jj_3R_27()) return true;
00841 if (jj_scan_token(RPAREN)) return true;
00842 return false;
00843 }
00844
00845 static final private boolean jj_3R_13() {
00846 if (jj_3R_19()) return true;
00847 return false;
00848 }
00849
00850 static final private boolean jj_3R_12() {
00851 if (jj_3R_18()) return true;
00852 return false;
00853 }
00854
00855 static final private boolean jj_3R_49() {
00856 if (jj_3R_1()) return true;
00857 if (jj_scan_token(SEMICOLON)) return true;
00858 if (jj_3R_26()) return true;
00859 return false;
00860 }
00861
00862 static final private boolean jj_3R_44() {
00863 if (jj_3R_53()) return true;
00864 return false;
00865 }
00866
00867 static final private boolean jj_3_1() {
00868 if (jj_3R_1()) return true;
00869 if (jj_scan_token(SEMICOLON)) return true;
00870 return false;
00871 }
00872
00873 static final private boolean jj_3R_2() {
00874 Token xsp;
00875 xsp = jj_scanpos;
00876 if (jj_3R_12()) {
00877 jj_scanpos = xsp;
00878 if (jj_3R_13()) {
00879 jj_scanpos = xsp;
00880 if (jj_3R_14()) return true;
00881 }
00882 }
00883 return false;
00884 }
00885
00886 static final private boolean jj_3R_34() {
00887 Token xsp;
00888 xsp = jj_scanpos;
00889 if (jj_3R_44()) {
00890 jj_scanpos = xsp;
00891 if (jj_3R_45()) {
00892 jj_scanpos = xsp;
00893 if (jj_3R_46()) return true;
00894 }
00895 }
00896 return false;
00897 }
00898
00899 static final private boolean jj_3R_38() {
00900 if (jj_3R_1()) return true;
00901 return false;
00902 }
00903
00904 static final private boolean jj_3R_37() {
00905 if (jj_3R_49()) return true;
00906 return false;
00907 }
00908
00909 static final private boolean jj_3R_30() {
00910 if (jj_scan_token(LENGTH)) return true;
00911 if (jj_3R_27()) return true;
00912 return false;
00913 }
00914
00915 static final private boolean jj_3R_26() {
00916 Token xsp;
00917 xsp = jj_scanpos;
00918 if (jj_3R_37()) {
00919 jj_scanpos = xsp;
00920 if (jj_3R_38()) return true;
00921 }
00922 return false;
00923 }
00924
00925 static final private boolean jj_3R_22() {
00926 if (jj_scan_token(LBRACE)) return true;
00927 if (jj_3R_34()) return true;
00928 if (jj_scan_token(SEMICOLON)) return true;
00929 if (jj_3R_26()) return true;
00930 if (jj_scan_token(RBRACE)) return true;
00931 return false;
00932 }
00933
00934 static final private boolean jj_3R_29() {
00935 if (jj_scan_token(NOT)) return true;
00936 if (jj_3R_27()) return true;
00937 return false;
00938 }
00939
00940 static final private boolean jj_3R_28() {
00941 if (jj_scan_token(MINUS)) return true;
00942 if (jj_3R_27()) return true;
00943 return false;
00944 }
00945
00946 static final private boolean jj_3R_11() {
00947 if (jj_scan_token(LPAREN)) return true;
00948 if (jj_3R_26()) return true;
00949 if (jj_scan_token(RPAREN)) return true;
00950 return false;
00951 }
00952
00953 static final private boolean jj_3R_10() {
00954 if (jj_3R_25()) return true;
00955 return false;
00956 }
00957
00958 static final private boolean jj_3R_9() {
00959 if (jj_3R_24()) return true;
00960 return false;
00961 }
00962
00963 static final private boolean jj_3R_33() {
00964 if (jj_3R_43()) return true;
00965 return false;
00966 }
00967
00968 static final private boolean jj_3R_8() {
00969 if (jj_3R_23()) return true;
00970 return false;
00971 }
00972
00973 static final private boolean jj_3R_32() {
00974 if (jj_3R_42()) return true;
00975 return false;
00976 }
00977
00978 static final private boolean jj_3R_7() {
00979 if (jj_3R_22()) return true;
00980 return false;
00981 }
00982
00983 static final private boolean jj_3R_6() {
00984 if (jj_3R_21()) return true;
00985 return false;
00986 }
00987
00988 static final private boolean jj_3R_5() {
00989 if (jj_3R_20()) return true;
00990 return false;
00991 }
00992
00993 static final private boolean jj_3_8() {
00994 if (jj_3R_2()) return true;
00995 Token xsp;
00996 xsp = jj_scanpos;
00997 if (jj_scan_token(10)) {
00998 jj_scanpos = xsp;
00999 if (jj_scan_token(9)) {
01000 jj_scanpos = xsp;
01001 if (jj_scan_token(62)) {
01002 jj_scanpos = xsp;
01003 if (jj_scan_token(61)) {
01004 jj_scanpos = xsp;
01005 if (jj_scan_token(54)) return true;
01006 }
01007 }
01008 }
01009 }
01010 return false;
01011 }
01012
01013 static final private boolean jj_3R_1() {
01014 Token xsp;
01015 xsp = jj_scanpos;
01016 if (jj_3R_5()) {
01017 jj_scanpos = xsp;
01018 if (jj_3R_6()) {
01019 jj_scanpos = xsp;
01020 if (jj_3R_7()) {
01021 jj_scanpos = xsp;
01022 if (jj_3R_8()) {
01023 jj_scanpos = xsp;
01024 if (jj_3R_9()) {
01025 jj_scanpos = xsp;
01026 if (jj_3R_10()) {
01027 jj_scanpos = xsp;
01028 if (jj_3R_11()) return true;
01029 }
01030 }
01031 }
01032 }
01033 }
01034 }
01035 return false;
01036 }
01037
01038 static final private boolean jj_3R_31() {
01039 if (jj_3R_41()) return true;
01040 return false;
01041 }
01042
01043 static final private boolean jj_3R_19() {
01044 Token xsp;
01045 xsp = jj_scanpos;
01046 if (jj_3R_31()) {
01047 jj_scanpos = xsp;
01048 if (jj_3R_32()) {
01049 jj_scanpos = xsp;
01050 if (jj_3R_33()) return true;
01051 }
01052 }
01053 return false;
01054 }
01055
01056 static final private boolean jj_3R_40() {
01057 if (jj_3R_2()) return true;
01058 return false;
01059 }
01060
01061 static final private boolean jj_3R_39() {
01062 if (jj_3R_50()) return true;
01063 return false;
01064 }
01065
01066 static final private boolean jj_3_7() {
01067 if (jj_3R_3()) return true;
01068 return false;
01069 }
01070
01071 static final private boolean jj_3R_27() {
01072 Token xsp;
01073 xsp = jj_scanpos;
01074 if (jj_3_7()) {
01075 jj_scanpos = xsp;
01076 if (jj_3R_39()) {
01077 jj_scanpos = xsp;
01078 if (jj_3R_40()) return true;
01079 }
01080 }
01081 return false;
01082 }
01083
01084 static final private boolean jj_3R_43() {
01085 if (jj_scan_token(STRING_LITERAL)) return true;
01086 return false;
01087 }
01088
01089 static final private boolean jj_3R_52() {
01090 if (jj_scan_token(TRUE)) return true;
01091 return false;
01092 }
01093
01094 static final private boolean jj_3R_42() {
01095 Token xsp;
01096 xsp = jj_scanpos;
01097 if (jj_3R_51()) {
01098 jj_scanpos = xsp;
01099 if (jj_3R_52()) return true;
01100 }
01101 return false;
01102 }
01103
01104 static final private boolean jj_3R_51() {
01105 if (jj_scan_token(FALSE)) return true;
01106 return false;
01107 }
01108
01109 static final private boolean jj_3R_60() {
01110 if (jj_3R_2()) return true;
01111 if (jj_scan_token(CONCAT)) return true;
01112 if (jj_3R_27()) return true;
01113 return false;
01114 }
01115
01116 static final private boolean jj_3R_41() {
01117 if (jj_scan_token(INTEGER_LITERAL)) return true;
01118 return false;
01119 }
01120
01121 static final private boolean jj_3R_64() {
01122 if (jj_3R_2()) return true;
01123 if (jj_scan_token(EQ)) return true;
01124 if (jj_3R_27()) return true;
01125 return false;
01126 }
01127
01128 static final private boolean jj_3R_18() {
01129 if (jj_scan_token(IDENTIFIER)) return true;
01130 return false;
01131 }
01132
01133 static final private boolean jj_3R_63() {
01134 if (jj_3R_2()) return true;
01135 if (jj_scan_token(OR)) return true;
01136 if (jj_3R_27()) return true;
01137 return false;
01138 }
01139
01140 static final private boolean jj_3R_21() {
01141 if (jj_3R_18()) return true;
01142 if (jj_scan_token(ATTRIB)) return true;
01143 if (jj_3R_27()) return true;
01144 return false;
01145 }
01146
01147 static final private boolean jj_3R_62() {
01148 if (jj_3R_2()) return true;
01149 if (jj_scan_token(AND)) return true;
01150 if (jj_3R_27()) return true;
01151 return false;
01152 }
01153
01154 static private boolean jj_initialized_once = false;
01155 static public Imp1ParserTokenManager token_source;
01156 static JavaCharStream jj_input_stream;
01157 static public Token token, jj_nt;
01158 static private int jj_ntk;
01159 static private Token jj_scanpos, jj_lastpos;
01160 static private int jj_la;
01161 static public boolean lookingAhead = false;
01162 static private boolean jj_semLA;
01163 static private int jj_gen;
01164 static final private int[] jj_la1 = new int[10];
01165 static private int[] jj_la1_0;
01166 static private int[] jj_la1_1;
01167 static private int[] jj_la1_2;
01168 static {
01169 jj_la1_0();
01170 jj_la1_1();
01171 jj_la1_2();
01172 }
01173 private static void jj_la1_0() {
01174 jj_la1_0 = new int[] {0x3b0000,0x180000,0x6000,0x20006000,0x20006000,0x1800,0x20006000,0x20006000,0x3b0000,0x8000,};
01175 }
01176 private static void jj_la1_1() {
01177 jj_la1_1 = new int[] {0xa4,0x0,0x0,0x2,0x26,0x40000000,0x26,0x26,0xa4,0x20,};
01178 }
01179 private static void jj_la1_2() {
01180 jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
01181 }
01182 static final private JJCalls[] jj_2_rtns = new JJCalls[9];
01183 static private boolean jj_rescan = false;
01184 static private int jj_gc = 0;
01185
01186 public Imp1Parser(java.io.InputStream stream) {
01187 this(stream, null);
01188 }
01189 public Imp1Parser(java.io.InputStream stream, String encoding) {
01190 if (jj_initialized_once) {
01191 System.out.println("ERROR: Second call to constructor of static parser. You must");
01192 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
01193 System.out.println(" during parser generation.");
01194 throw new Error();
01195 }
01196 jj_initialized_once = true;
01197 try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
01198 token_source = new Imp1ParserTokenManager(jj_input_stream);
01199 token = new Token();
01200 jj_ntk = -1;
01201 jj_gen = 0;
01202 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01203 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01204 }
01205
01206 static public void ReInit(java.io.InputStream stream) {
01207 ReInit(stream, null);
01208 }
01209 static public void ReInit(java.io.InputStream stream, String encoding) {
01210 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
01211 token_source.ReInit(jj_input_stream);
01212 token = new Token();
01213 jj_ntk = -1;
01214 jj_gen = 0;
01215 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01216 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01217 }
01218
01219 public Imp1Parser(java.io.Reader stream) {
01220 if (jj_initialized_once) {
01221 System.out.println("ERROR: Second call to constructor of static parser. You must");
01222 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
01223 System.out.println(" during parser generation.");
01224 throw new Error();
01225 }
01226 jj_initialized_once = true;
01227 jj_input_stream = new JavaCharStream(stream, 1, 1);
01228 token_source = new Imp1ParserTokenManager(jj_input_stream);
01229 token = new Token();
01230 jj_ntk = -1;
01231 jj_gen = 0;
01232 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01233 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01234 }
01235
01236 static public void ReInit(java.io.Reader stream) {
01237 jj_input_stream.ReInit(stream, 1, 1);
01238 token_source.ReInit(jj_input_stream);
01239 token = new Token();
01240 jj_ntk = -1;
01241 jj_gen = 0;
01242 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01243 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01244 }
01245
01246 public Imp1Parser(Imp1ParserTokenManager tm) {
01247 if (jj_initialized_once) {
01248 System.out.println("ERROR: Second call to constructor of static parser. You must");
01249 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
01250 System.out.println(" during parser generation.");
01251 throw new Error();
01252 }
01253 jj_initialized_once = true;
01254 token_source = tm;
01255 token = new Token();
01256 jj_ntk = -1;
01257 jj_gen = 0;
01258 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01259 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01260 }
01261
01262 public void ReInit(Imp1ParserTokenManager tm) {
01263 token_source = tm;
01264 token = new Token();
01265 jj_ntk = -1;
01266 jj_gen = 0;
01267 for (int i = 0; i < 10; i++) jj_la1[i] = -1;
01268 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01269 }
01270
01271 static final private Token jj_consume_token(int kind) throws ParseException {
01272 Token oldToken;
01273 if ((oldToken = token).next != null) token = token.next;
01274 else token = token.next = token_source.getNextToken();
01275 jj_ntk = -1;
01276 if (token.kind == kind) {
01277 jj_gen++;
01278 if (++jj_gc > 100) {
01279 jj_gc = 0;
01280 for (int i = 0; i < jj_2_rtns.length; i++) {
01281 JJCalls c = jj_2_rtns[i];
01282 while (c != null) {
01283 if (c.gen < jj_gen) c.first = null;
01284 c = c.next;
01285 }
01286 }
01287 }
01288 return token;
01289 }
01290 token = oldToken;
01291 jj_kind = kind;
01292 throw generateParseException();
01293 }
01294
01295 static private final class LookaheadSuccess extends java.lang.Error { }
01296 static final private LookaheadSuccess jj_ls = new LookaheadSuccess();
01297 static final private boolean jj_scan_token(int kind) {
01298 if (jj_scanpos == jj_lastpos) {
01299 jj_la--;
01300 if (jj_scanpos.next == null) {
01301 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
01302 } else {
01303 jj_lastpos = jj_scanpos = jj_scanpos.next;
01304 }
01305 } else {
01306 jj_scanpos = jj_scanpos.next;
01307 }
01308 if (jj_rescan) {
01309 int i = 0; Token tok = token;
01310 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
01311 if (tok != null) jj_add_error_token(kind, i);
01312 }
01313 if (jj_scanpos.kind != kind) return true;
01314 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
01315 return false;
01316 }
01317
01318 static final public Token getNextToken() {
01319 if (token.next != null) token = token.next;
01320 else token = token.next = token_source.getNextToken();
01321 jj_ntk = -1;
01322 jj_gen++;
01323 return token;
01324 }
01325
01326 static final public Token getToken(int index) {
01327 Token t = lookingAhead ? jj_scanpos : token;
01328 for (int i = 0; i < index; i++) {
01329 if (t.next != null) t = t.next;
01330 else t = t.next = token_source.getNextToken();
01331 }
01332 return t;
01333 }
01334
01335 static final private int jj_ntk() {
01336 if ((jj_nt=token.next) == null)
01337 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
01338 else
01339 return (jj_ntk = jj_nt.kind);
01340 }
01341
01342 static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
01343 static private int[] jj_expentry;
01344 static private int jj_kind = -1;
01345 static private int[] jj_lasttokens = new int[100];
01346 static private int jj_endpos;
01347
01348 static private void jj_add_error_token(int kind, int pos) {
01349 if (pos >= 100) return;
01350 if (pos == jj_endpos + 1) {
01351 jj_lasttokens[jj_endpos++] = kind;
01352 } else if (jj_endpos != 0) {
01353 jj_expentry = new int[jj_endpos];
01354 for (int i = 0; i < jj_endpos; i++) {
01355 jj_expentry[i] = jj_lasttokens[i];
01356 }
01357 boolean exists = false;
01358 for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
01359 int[] oldentry = (int[])(e.nextElement());
01360 if (oldentry.length == jj_expentry.length) {
01361 exists = true;
01362 for (int i = 0; i < jj_expentry.length; i++) {
01363 if (oldentry[i] != jj_expentry[i]) {
01364 exists = false;
01365 break;
01366 }
01367 }
01368 if (exists) break;
01369 }
01370 }
01371 if (!exists) jj_expentries.addElement(jj_expentry);
01372 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
01373 }
01374 }
01375
01376 static public ParseException generateParseException() {
01377 jj_expentries.removeAllElements();
01378 boolean[] la1tokens = new boolean[69];
01379 for (int i = 0; i < 69; i++) {
01380 la1tokens[i] = false;
01381 }
01382 if (jj_kind >= 0) {
01383 la1tokens[jj_kind] = true;
01384 jj_kind = -1;
01385 }
01386 for (int i = 0; i < 10; i++) {
01387 if (jj_la1[i] == jj_gen) {
01388 for (int j = 0; j < 32; j++) {
01389 if ((jj_la1_0[i] & (1<<j)) != 0) {
01390 la1tokens[j] = true;
01391 }
01392 if ((jj_la1_1[i] & (1<<j)) != 0) {
01393 la1tokens[32+j] = true;
01394 }
01395 if ((jj_la1_2[i] & (1<<j)) != 0) {
01396 la1tokens[64+j] = true;
01397 }
01398 }
01399 }
01400 }
01401 for (int i = 0; i < 69; i++) {
01402 if (la1tokens[i]) {
01403 jj_expentry = new int[1];
01404 jj_expentry[0] = i;
01405 jj_expentries.addElement(jj_expentry);
01406 }
01407 }
01408 jj_endpos = 0;
01409 jj_rescan_token();
01410 jj_add_error_token(0, 0);
01411 int[][] exptokseq = new int[jj_expentries.size()][];
01412 for (int i = 0; i < jj_expentries.size(); i++) {
01413 exptokseq[i] = (int[])jj_expentries.elementAt(i);
01414 }
01415 return new ParseException(token, exptokseq, tokenImage);
01416 }
01417
01418 static final public void enable_tracing() {
01419 }
01420
01421 static final public void disable_tracing() {
01422 }
01423
01424 static final private void jj_rescan_token() {
01425 jj_rescan = true;
01426 for (int i = 0; i < 9; i++) {
01427 try {
01428 JJCalls p = jj_2_rtns[i];
01429 do {
01430 if (p.gen > jj_gen) {
01431 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
01432 switch (i) {
01433 case 0: jj_3_1(); break;
01434 case 1: jj_3_2(); break;
01435 case 2: jj_3_3(); break;
01436 case 3: jj_3_4(); break;
01437 case 4: jj_3_5(); break;
01438 case 5: jj_3_6(); break;
01439 case 6: jj_3_7(); break;
01440 case 7: jj_3_8(); break;
01441 case 8: jj_3_9(); break;
01442 }
01443 }
01444 p = p.next;
01445 } while (p != null);
01446 } catch(LookaheadSuccess ls) { }
01447 }
01448 jj_rescan = false;
01449 }
01450
01451 static final private void jj_save(int index, int xla) {
01452 JJCalls p = jj_2_rtns[index];
01453 while (p.gen > jj_gen) {
01454 if (p.next == null) { p = p.next = new JJCalls(); break; }
01455 p = p.next;
01456 }
01457 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
01458 }
01459
01460 static final class JJCalls {
01461 int gen;
01462 Token first;
01463 int arg;
01464 JJCalls next;
01465 }
01466
01467 }