Func2Parser.java

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

Generated on Tue Jul 18 22:04:31 2006 for PLP by  doxygen 1.4.7