Imp1Parser.java

Go to the documentation of this file.
00001 /* Generated By:JavaCC: Do not edit this line. Imp1Parser.java */
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 /*  ADICIONADO OU MODIFICADO DA Imperativa1 PARA A Imperativa2  */
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 }

Generated on Tue Sep 12 21:52:05 2006 for PLP by  doxygen 1.4.7