Imp2Parser.java

Go to the documentation of this file.
00001 /* Generated By:JavaCC: Do not edit this line. Imp2Parser.java */
00002 package plp.imperative2.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.imperative2.*;
00010 import plp.imperative2.command.*;
00011 import plp.imperative2.declaration.*;
00012 import plp.imperative2.memory.*;
00013 import java.util.*;
00014 
00015 public class Imp2Parser implements Imp2ParserConstants {
00016 
00017     public static void main(String args[]) {
00018             Imp2Parser parser;
00019             ListaValor entrada = new ListaValor();
00020             if (args.length == 0) {
00021                 System.out.println("Imperativa 2 PLP Parser Version 0.0.1:  Reading from standard input . . .");
00022                 parser = new Imp2Parser(System.in);
00023             } else{
00024                 System.out.println("Imperativa 2 PLP Parser Version 0.0.1:  Reading from file " + args[0] + " . . .");
00025                 try {
00026                         parser = new Imp2Parser(new java.io.FileInputStream(args[0]));
00027                 } catch (java.io.FileNotFoundException e) {
00028                         System.out.println("Java Parser Version 1.0.2:  File " + args[0] + " not found.");
00029                         return;
00030                 }
00031 
00032                 List valores = new LinkedList();
00033                 for(int i=1;i<args.length;i++)
00034                 {
00035                         String parametro = args[i];
00036 
00037                         try {
00038                                 Integer inteiro = Integer.valueOf(parametro);
00039                                 valores.add(new ValorInteiro(inteiro.intValue()));
00040                                 continue;
00041                         } catch(NumberFormatException e) {
00042 
00043                         }
00044 
00045                         if(parametro.equalsIgnoreCase("true")
00046                             || parametro.equalsIgnoreCase("false")) {
00047                                 Boolean booleano = Boolean.valueOf(parametro);
00048                                 valores.add(new ValorBooleano(booleano.booleanValue()));
00049                         } else {
00050                             valores.add(new ValorString(parametro));
00051                         }
00052                 }
00053                   entrada = criaListaValor(valores);
00054             }
00055 
00056             try {
00057             Programa programa = parser.Input();
00058             System.out.println("Imperativa 2 PLP Parser Version 0.0.1:  Imperativa2 program parsed successfully.");
00059 
00060             if(programa.checaTipo(new ContextoCompilacaoImperativa2(entrada))) {
00061                 ListaValor saida = programa.executar(new ContextoExecucaoImperativa2(entrada));
00062                 System.out.println(saida);
00063             }
00064             else {
00065                 System.out.println("Erro de tipo");
00066             }
00067         } catch (Exception e) {
00068             System.out.println("Imperativa 2 PLP Parser Version 0.0.1:  Encountered errors during parse.");
00069             e.printStackTrace();
00070         }
00071         }
00072 
00073         public static ListaValor criaListaValor(List valores) {
00074                 if(valores.size() == 0) {
00075                         return new ListaValor();
00076                 }
00077 
00078                 Valor primeiro = (Valor) valores.get(0);
00079                 valores.remove(0);
00080                 return new ListaValor(primeiro, criaListaValor(valores));
00081     }
00082 
00083   static final public Programa Input() throws ParseException {
00084     trace_call("Input");
00085     try {
00086     Programa retorno;
00087       retorno = PPrograma();
00088       jj_consume_token(0);
00089         {if (true) return retorno;}
00090     throw new Error("Missing return statement in function");
00091     } finally {
00092       trace_return("Input");
00093     }
00094   }
00095 
00096   static final public Programa PPrograma() throws ParseException {
00097     trace_call("PPrograma");
00098     try {
00099         Comando retorno;
00100       retorno = PComando();
00101                 {if (true) return new Programa(retorno);}
00102     throw new Error("Missing return statement in function");
00103     } finally {
00104       trace_return("PPrograma");
00105     }
00106   }
00107 
00108   static final public Comando PComando() throws ParseException {
00109     trace_call("PComando");
00110     try {
00111         Comando retorno;
00112       if (jj_2_1(2147483647)) {
00113         retorno = PSequenciaComando();
00114       } else {
00115         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00116         case COMAND_SKIP:
00117         case WHILE:
00118         case READ:
00119         case WRITE:
00120         case IF:
00121         case CALL:
00122         case IDENTIFIER:
00123         case LPAREN:
00124         case LBRACE:
00125           retorno = PComandoSimples();
00126           break;
00127         default:
00128           jj_la1[0] = jj_gen;
00129           jj_consume_token(-1);
00130           throw new ParseException();
00131         }
00132       }
00133         {if (true) return retorno;}
00134     throw new Error("Missing return statement in function");
00135     } finally {
00136       trace_return("PComando");
00137     }
00138   }
00139 
00140   static final public SequenciaComando PSequenciaComando() throws ParseException {
00141     trace_call("PSequenciaComando");
00142     try {
00143         Comando c1;
00144         Comando c2;
00145       c1 = PComandoSimples();
00146       jj_consume_token(SEMICOLON);
00147       c2 = PComando();
00148          {if (true) return new SequenciaComando(c1, c2);}
00149     throw new Error("Missing return statement in function");
00150     } finally {
00151       trace_return("PSequenciaComando");
00152     }
00153   }
00154 
00155   static final public IO PIO() throws ParseException {
00156     trace_call("PIO");
00157     try {
00158         IO retorno;
00159       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00160       case READ:
00161         retorno = PRead();
00162         break;
00163       case WRITE:
00164         retorno = PWrite();
00165         break;
00166       default:
00167         jj_la1[1] = jj_gen;
00168         jj_consume_token(-1);
00169         throw new ParseException();
00170       }
00171          {if (true) return retorno;}
00172     throw new Error("Missing return statement in function");
00173     } finally {
00174       trace_return("PIO");
00175     }
00176   }
00177 
00178   static final public Read PRead() throws ParseException {
00179     trace_call("PRead");
00180     try {
00181         Id id;
00182       jj_consume_token(READ);
00183       jj_consume_token(LPAREN);
00184       id = PId();
00185       jj_consume_token(RPAREN);
00186          {if (true) return new Read (id);}
00187     throw new Error("Missing return statement in function");
00188     } finally {
00189       trace_return("PRead");
00190     }
00191   }
00192 
00193   static final public Write PWrite() throws ParseException {
00194     trace_call("PWrite");
00195     try {
00196         Expressao exp;
00197       jj_consume_token(WRITE);
00198       jj_consume_token(LPAREN);
00199       exp = PExpressao();
00200       jj_consume_token(RPAREN);
00201          {if (true) return new Write(exp);}
00202     throw new Error("Missing return statement in function");
00203     } finally {
00204       trace_return("PWrite");
00205     }
00206   }
00207 
00208   static final public IfThenElse PIfThenElse() throws ParseException {
00209     trace_call("PIfThenElse");
00210     try {
00211         Expressao expressao;
00212         Comando comandoThen;
00213         Comando comandoElse;
00214       jj_consume_token(IF);
00215       expressao = PExpressao();
00216       jj_consume_token(THEN);
00217       comandoThen = PComando();
00218       jj_consume_token(ELSE);
00219       comandoElse = PComando();
00220          {if (true) return new IfThenElse (expressao, comandoThen, comandoElse);}
00221     throw new Error("Missing return statement in function");
00222     } finally {
00223       trace_return("PIfThenElse");
00224     }
00225   }
00226 
00227   static final public While PWhile() throws ParseException {
00228     trace_call("PWhile");
00229     try {
00230         Expressao expressao;
00231         Comando comando;
00232       jj_consume_token(WHILE);
00233       expressao = PExpressao();
00234       jj_consume_token(DO);
00235       comando = PComando();
00236          {if (true) return new While(expressao, comando);}
00237     throw new Error("Missing return statement in function");
00238     } finally {
00239       trace_return("PWhile");
00240     }
00241   }
00242 
00243   static final public Skip PSkip() throws ParseException {
00244     trace_call("PSkip");
00245     try {
00246       jj_consume_token(COMAND_SKIP);
00247          {if (true) return new Skip();}
00248     throw new Error("Missing return statement in function");
00249     } finally {
00250       trace_return("PSkip");
00251     }
00252   }
00253 
00254   static final public Atribuicao PAtribuicao() throws ParseException {
00255     trace_call("PAtribuicao");
00256     try {
00257         Id id;
00258         Expressao exp;
00259       id = PId();
00260       jj_consume_token(ATTRIB);
00261       exp = PExpressao();
00262                 {if (true) return new Atribuicao(id, exp);}
00263     throw new Error("Missing return statement in function");
00264     } finally {
00265       trace_return("PAtribuicao");
00266     }
00267   }
00268 
00269   static final public Id PId() throws ParseException {
00270     trace_call("PId");
00271     try {
00272         Token token;
00273       token = jj_consume_token(IDENTIFIER);
00274                 {if (true) return new Id(token.toString());}
00275     throw new Error("Missing return statement in function");
00276     } finally {
00277       trace_return("PId");
00278     }
00279   }
00280 
00281   static final public Valor PValorInteiro() throws ParseException {
00282     trace_call("PValorInteiro");
00283     try {
00284         Token token;
00285       token = jj_consume_token(INTEGER_LITERAL);
00286                 {if (true) return new ValorInteiro(Integer.parseInt(token.toString()));}
00287     throw new Error("Missing return statement in function");
00288     } finally {
00289       trace_return("PValorInteiro");
00290     }
00291   }
00292 
00293   static final public Valor PValorBooleano() throws ParseException {
00294     trace_call("PValorBooleano");
00295     try {
00296       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00297       case FALSE:
00298         jj_consume_token(FALSE);
00299                     {if (true) return new ValorBooleano(false);}
00300         break;
00301       case TRUE:
00302         jj_consume_token(TRUE);
00303                     {if (true) return new ValorBooleano(true);}
00304         break;
00305       default:
00306         jj_la1[2] = jj_gen;
00307         jj_consume_token(-1);
00308         throw new ParseException();
00309       }
00310     throw new Error("Missing return statement in function");
00311     } finally {
00312       trace_return("PValorBooleano");
00313     }
00314   }
00315 
00316   static final public Valor PValorString() throws ParseException {
00317     trace_call("PValorString");
00318     try {
00319         Token token;
00320       token = jj_consume_token(STRING_LITERAL);
00321                 String tokenStr = token.toString();
00322                 tokenStr = tokenStr.substring(1,tokenStr.length()-1);
00323                 {if (true) return new ValorString(tokenStr);}
00324     throw new Error("Missing return statement in function");
00325     } finally {
00326       trace_return("PValorString");
00327     }
00328   }
00329 
00330   static final public Valor PValor() throws ParseException {
00331     trace_call("PValor");
00332     try {
00333         Valor retorno;
00334       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00335       case INTEGER_LITERAL:
00336         retorno = PValorInteiro();
00337         break;
00338       case TRUE:
00339       case FALSE:
00340         retorno = PValorBooleano();
00341         break;
00342       case STRING_LITERAL:
00343         retorno = PValorString();
00344         break;
00345       default:
00346         jj_la1[3] = jj_gen;
00347         jj_consume_token(-1);
00348         throw new ParseException();
00349       }
00350                 {if (true) return retorno;}
00351     throw new Error("Missing return statement in function");
00352     } finally {
00353       trace_return("PValor");
00354     }
00355   }
00356 
00357   static final public Expressao PExpMenos() throws ParseException {
00358     trace_call("PExpMenos");
00359     try {
00360         Expressao retorno;
00361       jj_consume_token(MINUS);
00362       retorno = PExpressao();
00363                 {if (true) return new ExpMenos(retorno);}
00364     throw new Error("Missing return statement in function");
00365     } finally {
00366       trace_return("PExpMenos");
00367     }
00368   }
00369 
00370   static final public Expressao PExpNot() throws ParseException {
00371     trace_call("PExpNot");
00372     try {
00373         Expressao retorno;
00374       jj_consume_token(NOT);
00375       retorno = PExpressao();
00376                 {if (true) return new ExpNot(retorno);}
00377     throw new Error("Missing return statement in function");
00378     } finally {
00379       trace_return("PExpNot");
00380     }
00381   }
00382 
00383   static final public Expressao PExpLength() throws ParseException {
00384     trace_call("PExpLength");
00385     try {
00386         Expressao retorno;
00387       jj_consume_token(LENGTH);
00388       retorno = PExpressao();
00389                 {if (true) return new ExpLength(retorno);}
00390     throw new Error("Missing return statement in function");
00391     } finally {
00392       trace_return("PExpLength");
00393     }
00394   }
00395 
00396   static final public Expressao PExpPrimaria() throws ParseException {
00397     trace_call("PExpPrimaria");
00398     try {
00399     Expressao retorno;
00400       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00401       case IDENTIFIER:
00402         retorno = PId();
00403         break;
00404       case TRUE:
00405       case FALSE:
00406       case INTEGER_LITERAL:
00407       case STRING_LITERAL:
00408         retorno = PValor();
00409         break;
00410       case LPAREN:
00411         jj_consume_token(LPAREN);
00412         retorno = PExpressao();
00413         jj_consume_token(RPAREN);
00414         break;
00415       default:
00416         jj_la1[4] = jj_gen;
00417         jj_consume_token(-1);
00418         throw new ParseException();
00419       }
00420                 {if (true) return retorno;}
00421     throw new Error("Missing return statement in function");
00422     } finally {
00423       trace_return("PExpPrimaria");
00424     }
00425   }
00426 
00427   static final public Expressao PExpUnaria() throws ParseException {
00428     trace_call("PExpUnaria");
00429     try {
00430         Expressao retorno;
00431       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00432       case MINUS:
00433         retorno = PExpMenos();
00434         break;
00435       case NOT:
00436         retorno = PExpNot();
00437         break;
00438       case LENGTH:
00439         retorno = PExpLength();
00440         break;
00441       default:
00442         jj_la1[5] = jj_gen;
00443         jj_consume_token(-1);
00444         throw new ParseException();
00445       }
00446                 {if (true) return retorno;}
00447     throw new Error("Missing return statement in function");
00448     } finally {
00449       trace_return("PExpUnaria");
00450     }
00451   }
00452 
00453   static final public Expressao PExpBinaria() throws ParseException {
00454     trace_call("PExpBinaria");
00455     try {
00456         Expressao retorno, param2;
00457       if (jj_2_2(2147483647)) {
00458         retorno = PExpConcat();
00459       } else if (jj_2_3(2147483647)) {
00460         retorno = PExpSub();
00461       } else if (jj_2_4(2147483647)) {
00462         retorno = PExpAnd();
00463       } else if (jj_2_5(2147483647)) {
00464         retorno = PExpOr();
00465       } else if (jj_2_6(2147483647)) {
00466         retorno = PExpEquals();
00467       } else {
00468         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00469         case TRUE:
00470         case FALSE:
00471         case INTEGER_LITERAL:
00472         case STRING_LITERAL:
00473         case IDENTIFIER:
00474         case LPAREN:
00475           retorno = PExpSoma();
00476           break;
00477         default:
00478           jj_la1[6] = jj_gen;
00479           jj_consume_token(-1);
00480           throw new ParseException();
00481         }
00482       }
00483                 {if (true) return retorno;}
00484     throw new Error("Missing return statement in function");
00485     } finally {
00486       trace_return("PExpBinaria");
00487     }
00488   }
00489 
00490   static final public ExpSoma PExpSoma() throws ParseException {
00491     trace_call("PExpSoma");
00492     try {
00493         Expressao esq;
00494         Expressao dir;
00495       esq = PExpPrimaria();
00496       jj_consume_token(PLUS);
00497       dir = PExpressao();
00498          {if (true) return new ExpSoma(esq, dir);}
00499     throw new Error("Missing return statement in function");
00500     } finally {
00501       trace_return("PExpSoma");
00502     }
00503   }
00504 
00505   static final public ExpSub PExpSub() throws ParseException {
00506     trace_call("PExpSub");
00507     try {
00508         Expressao esq;
00509         Expressao dir;
00510       esq = PExpPrimaria();
00511       jj_consume_token(MINUS);
00512       dir = PExpressao();
00513          {if (true) return new ExpSub(esq, dir);}
00514     throw new Error("Missing return statement in function");
00515     } finally {
00516       trace_return("PExpSub");
00517     }
00518   }
00519 
00520   static final public ExpAnd PExpAnd() throws ParseException {
00521     trace_call("PExpAnd");
00522     try {
00523         Expressao esq;
00524         Expressao dir;
00525       esq = PExpPrimaria();
00526       jj_consume_token(AND);
00527       dir = PExpressao();
00528          {if (true) return new ExpAnd(esq, dir);}
00529     throw new Error("Missing return statement in function");
00530     } finally {
00531       trace_return("PExpAnd");
00532     }
00533   }
00534 
00535   static final public ExpOr PExpOr() throws ParseException {
00536     trace_call("PExpOr");
00537     try {
00538         Expressao esq;
00539         Expressao dir;
00540       esq = PExpPrimaria();
00541       jj_consume_token(OR);
00542       dir = PExpressao();
00543          {if (true) return new ExpOr(esq, dir);}
00544     throw new Error("Missing return statement in function");
00545     } finally {
00546       trace_return("PExpOr");
00547     }
00548   }
00549 
00550   static final public ExpEquals PExpEquals() throws ParseException {
00551     trace_call("PExpEquals");
00552     try {
00553         Expressao esq;
00554         Expressao dir;
00555       esq = PExpPrimaria();
00556       jj_consume_token(EQ);
00557       dir = PExpressao();
00558          {if (true) return new ExpEquals(esq, dir);}
00559     throw new Error("Missing return statement in function");
00560     } finally {
00561       trace_return("PExpEquals");
00562     }
00563   }
00564 
00565   static final public ExpConcat PExpConcat() throws ParseException {
00566     trace_call("PExpConcat");
00567     try {
00568         Expressao esq;
00569         Expressao dir;
00570       esq = PExpPrimaria();
00571       jj_consume_token(CONCAT);
00572       dir = PExpressao();
00573          {if (true) return new ExpConcat(esq, dir);}
00574     throw new Error("Missing return statement in function");
00575     } finally {
00576       trace_return("PExpConcat");
00577     }
00578   }
00579 
00580   static final public Expressao PExpressao() throws ParseException {
00581     trace_call("PExpressao");
00582     try {
00583         Expressao retorno;
00584       if (jj_2_7(2)) {
00585         retorno = PExpUnaria();
00586       } else if (jj_2_8(2147483647)) {
00587         retorno = PExpBinaria();
00588       } else {
00589         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00590         case TRUE:
00591         case FALSE:
00592         case INTEGER_LITERAL:
00593         case STRING_LITERAL:
00594         case IDENTIFIER:
00595         case LPAREN:
00596           retorno = PExpPrimaria();
00597           break;
00598         default:
00599           jj_la1[7] = jj_gen;
00600           jj_consume_token(-1);
00601           throw new ParseException();
00602         }
00603       }
00604                 {if (true) return retorno;}
00605     throw new Error("Missing return statement in function");
00606     } finally {
00607       trace_return("PExpressao");
00608     }
00609   }
00610 
00611 /*  ADICIONADO OU MODIFICADO DA Imperativa1 PARA A Imperativa2  */
00612   static final public Comando PComandoSimples() throws ParseException {
00613     trace_call("PComandoSimples");
00614     try {
00615         Comando retorno;
00616       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00617       case COMAND_SKIP:
00618         retorno = PSkip();
00619         break;
00620       case IDENTIFIER:
00621         retorno = PAtribuicao();
00622         break;
00623       case LBRACE:
00624         retorno = PComandoDeclaracao();
00625         break;
00626       case WHILE:
00627         retorno = PWhile();
00628         break;
00629       case IF:
00630         retorno = PIfThenElse();
00631         break;
00632       case READ:
00633       case WRITE:
00634         retorno = PIO();
00635         break;
00636       case LPAREN:
00637         jj_consume_token(LPAREN);
00638         retorno = PComando();
00639         jj_consume_token(RPAREN);
00640         break;
00641       case CALL:
00642         retorno = PChamadaProcedimento();
00643         break;
00644       default:
00645         jj_la1[8] = jj_gen;
00646         jj_consume_token(-1);
00647         throw new ParseException();
00648       }
00649         {if (true) return retorno;}
00650     throw new Error("Missing return statement in function");
00651     } finally {
00652       trace_return("PComandoSimples");
00653     }
00654   }
00655 
00656   static final public ChamadaProcedimento PChamadaProcedimento() throws ParseException {
00657     trace_call("PChamadaProcedimento");
00658     try {
00659         Id nomeProcedimento;
00660         ListaExpressao parametrosAtuais;
00661       jj_consume_token(CALL);
00662       nomeProcedimento = PId();
00663       jj_consume_token(LPAREN);
00664       parametrosAtuais = PListaExpressao();
00665       jj_consume_token(RPAREN);
00666                 {if (true) return new ChamadaProcedimento(nomeProcedimento, parametrosAtuais);}
00667     throw new Error("Missing return statement in function");
00668     } finally {
00669       trace_return("PChamadaProcedimento");
00670     }
00671   }
00672 
00673   static final public ComandoDeclaracao PComandoDeclaracao() throws ParseException {
00674     trace_call("PComandoDeclaracao");
00675     try {
00676         Declaracao dec;
00677         Comando comando;
00678       jj_consume_token(LBRACE);
00679       dec = PDeclaracao();
00680       jj_consume_token(SEMICOLON);
00681       comando = PComando();
00682       jj_consume_token(RBRACE);
00683                 {if (true) return new ComandoDeclaracao(dec, comando);}
00684     throw new Error("Missing return statement in function");
00685     } finally {
00686       trace_return("PComandoDeclaracao");
00687     }
00688   }
00689 
00690   static final public Declaracao PDeclaracao() throws ParseException {
00691     trace_call("PDeclaracao");
00692     try {
00693         Declaracao retorno;
00694       if (jj_2_9(2147483647)) {
00695         retorno = PDeclaracaoComposta();
00696       } else {
00697         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00698         case VAR:
00699           retorno = PDeclaracaoVariavel();
00700           break;
00701         case PROC:
00702           retorno = PDeclaracaoProcedimento();
00703           break;
00704         case LPAREN:
00705           jj_consume_token(LPAREN);
00706           retorno = PDeclaracao();
00707           jj_consume_token(RPAREN);
00708           break;
00709         default:
00710           jj_la1[9] = jj_gen;
00711           jj_consume_token(-1);
00712           throw new ParseException();
00713         }
00714       }
00715          {if (true) return retorno;}
00716     throw new Error("Missing return statement in function");
00717     } finally {
00718       trace_return("PDeclaracao");
00719     }
00720   }
00721 
00722   static final public DeclaracaoComposta PDeclaracaoComposta() throws ParseException {
00723     trace_call("PDeclaracaoComposta");
00724     try {
00725         Declaracao d1;
00726         Declaracao d2;
00727       d1 = PDeclaracaoVariavel();
00728       jj_consume_token(COMMA);
00729       d2 = PDeclaracao();
00730          {if (true) return new DeclaracaoComposta(d1, d2);}
00731     throw new Error("Missing return statement in function");
00732     } finally {
00733       trace_return("PDeclaracaoComposta");
00734     }
00735   }
00736 
00737   static final public DeclaracaoProcedimento PDeclaracaoProcedimento() throws ParseException {
00738     trace_call("PDeclaracaoProcedimento");
00739     try {
00740         Id nome;
00741         DefProcedimento defProcedimento;
00742       if (jj_2_10(2147483647)) {
00743         jj_consume_token(PROC);
00744         nome = PId();
00745         jj_consume_token(LPAREN);
00746         jj_consume_token(RPAREN);
00747         defProcedimento = PDefProcedimento();
00748       } else {
00749         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00750         case PROC:
00751           jj_consume_token(PROC);
00752           nome = PId();
00753           jj_consume_token(LPAREN);
00754           defProcedimento = PDefProcedimento();
00755           break;
00756         default:
00757           jj_la1[10] = jj_gen;
00758           jj_consume_token(-1);
00759           throw new ParseException();
00760         }
00761       }
00762             {if (true) return new DeclaracaoProcedimento (nome, defProcedimento);}
00763     throw new Error("Missing return statement in function");
00764     } finally {
00765       trace_return("PDeclaracaoProcedimento");
00766     }
00767   }
00768 
00769   static final public DefProcedimento PDefProcedimento() throws ParseException {
00770     trace_call("PDefProcedimento");
00771     try {
00772         ListaDeclaracaoParametro listaPar = null;
00773         Comando comando;
00774       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00775       case LBRACE:
00776         jj_consume_token(LBRACE);
00777         comando = PComando();
00778         jj_consume_token(RBRACE);
00779         break;
00780       case INT:
00781       case BOOLEAN:
00782       case STRING:
00783       case RPAREN:
00784       case COMMA:
00785         listaPar = PListaDeclaracaoParametro();
00786         jj_consume_token(RPAREN);
00787         jj_consume_token(LBRACE);
00788         comando = PComando();
00789         jj_consume_token(RBRACE);
00790         break;
00791       default:
00792         jj_la1[11] = jj_gen;
00793         jj_consume_token(-1);
00794         throw new ParseException();
00795       }
00796             if(listaPar == null) {
00797                 listaPar = new ListaDeclaracaoParametro();
00798             }
00799             {if (true) return new DefProcedimento (listaPar, comando);}
00800     throw new Error("Missing return statement in function");
00801     } finally {
00802       trace_return("PDefProcedimento");
00803     }
00804   }
00805 
00806   static final public Tipo PTipo() throws ParseException {
00807     trace_call("PTipo");
00808     try {
00809         Tipo tipo;
00810       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00811       case INT:
00812         jj_consume_token(INT);
00813                tipo = Tipo.TIPO_INTEIRO;
00814         break;
00815       case BOOLEAN:
00816         jj_consume_token(BOOLEAN);
00817                    tipo = Tipo.TIPO_BOOLEANO;
00818         break;
00819       case STRING:
00820         jj_consume_token(STRING);
00821                   tipo = Tipo.TIPO_STRING;
00822         break;
00823       default:
00824         jj_la1[12] = jj_gen;
00825         jj_consume_token(-1);
00826         throw new ParseException();
00827       }
00828                 {if (true) return tipo;}
00829     throw new Error("Missing return statement in function");
00830     } finally {
00831       trace_return("PTipo");
00832     }
00833   }
00834 
00835   static final public ListaDeclaracaoParametro PListaDeclaracaoParametro() throws ParseException {
00836     trace_call("PListaDeclaracaoParametro");
00837     try {
00838         Id id;
00839         Tipo tipo;
00840         ListaDeclaracaoParametro lista = null;
00841       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00842       case INT:
00843       case BOOLEAN:
00844       case STRING:
00845         tipo = PTipo();
00846         id = PId();
00847             lista = new ListaDeclaracaoParametro(new DeclaracaoParametro(id, tipo));
00848         break;
00849       default:
00850         jj_la1[13] = jj_gen;
00851         ;
00852       }
00853       label_1:
00854       while (true) {
00855         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00856         case COMMA:
00857           ;
00858           break;
00859         default:
00860           jj_la1[14] = jj_gen;
00861           break label_1;
00862         }
00863         jj_consume_token(COMMA);
00864         tipo = PTipo();
00865         id = PId();
00866            lista = new ListaDeclaracaoParametro(new DeclaracaoParametro(id, tipo), lista);
00867       }
00868                 if (lista == null) {
00869                         lista = new ListaDeclaracaoParametro();
00870                 }
00871                 {if (true) return lista;}
00872     throw new Error("Missing return statement in function");
00873     } finally {
00874       trace_return("PListaDeclaracaoParametro");
00875     }
00876   }
00877 
00878   static final public ListaExpressao PListaExpressao() throws ParseException {
00879     trace_call("PListaExpressao");
00880     try {
00881         Expressao exp;
00882         ListaExpressao lista = null;
00883       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00884       case NOT:
00885       case LENGTH:
00886       case TRUE:
00887       case FALSE:
00888       case INTEGER_LITERAL:
00889       case STRING_LITERAL:
00890       case IDENTIFIER:
00891       case LPAREN:
00892       case MINUS:
00893         exp = PExpressao();
00894                                lista = new ListaExpressao(exp);
00895         break;
00896       default:
00897         jj_la1[15] = jj_gen;
00898         ;
00899       }
00900       label_2:
00901       while (true) {
00902         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
00903         case COMMA:
00904           ;
00905           break;
00906         default:
00907           jj_la1[16] = jj_gen;
00908           break label_2;
00909         }
00910         jj_consume_token(COMMA);
00911         exp = PExpressao();
00912                                                                                                   lista = new ListaExpressao(exp, lista);
00913       }
00914                 if (lista == null) {
00915                         lista = new ListaExpressao();
00916                 }
00917                 {if (true) return lista;}
00918     throw new Error("Missing return statement in function");
00919     } finally {
00920       trace_return("PListaExpressao");
00921     }
00922   }
00923 
00924   static final public DeclaracaoVariavel PDeclaracaoVariavel() throws ParseException {
00925     trace_call("PDeclaracaoVariavel");
00926     try {
00927         Id id;
00928         Expressao exp;
00929         DeclaracaoVariavel retorno;
00930       jj_consume_token(VAR);
00931       id = PId();
00932       jj_consume_token(ASSIGN);
00933       exp = PValor();
00934                  retorno = new DeclaracaoVariavel(id, exp);
00935                 {if (true) return retorno;}
00936     throw new Error("Missing return statement in function");
00937     } finally {
00938       trace_return("PDeclaracaoVariavel");
00939     }
00940   }
00941 
00942   static final private boolean jj_2_1(int xla) {
00943     jj_la = xla; jj_lastpos = jj_scanpos = token;
00944     try { return !jj_3_1(); }
00945     catch(LookaheadSuccess ls) { return true; }
00946     finally { jj_save(0, xla); }
00947   }
00948 
00949   static final private boolean jj_2_2(int xla) {
00950     jj_la = xla; jj_lastpos = jj_scanpos = token;
00951     try { return !jj_3_2(); }
00952     catch(LookaheadSuccess ls) { return true; }
00953     finally { jj_save(1, xla); }
00954   }
00955 
00956   static final private boolean jj_2_3(int xla) {
00957     jj_la = xla; jj_lastpos = jj_scanpos = token;
00958     try { return !jj_3_3(); }
00959     catch(LookaheadSuccess ls) { return true; }
00960     finally { jj_save(2, xla); }
00961   }
00962 
00963   static final private boolean jj_2_4(int xla) {
00964     jj_la = xla; jj_lastpos = jj_scanpos = token;
00965     try { return !jj_3_4(); }
00966     catch(LookaheadSuccess ls) { return true; }
00967     finally { jj_save(3, xla); }
00968   }
00969 
00970   static final private boolean jj_2_5(int xla) {
00971     jj_la = xla; jj_lastpos = jj_scanpos = token;
00972     try { return !jj_3_5(); }
00973     catch(LookaheadSuccess ls) { return true; }
00974     finally { jj_save(4, xla); }
00975   }
00976 
00977   static final private boolean jj_2_6(int xla) {
00978     jj_la = xla; jj_lastpos = jj_scanpos = token;
00979     try { return !jj_3_6(); }
00980     catch(LookaheadSuccess ls) { return true; }
00981     finally { jj_save(5, xla); }
00982   }
00983 
00984   static final private boolean jj_2_7(int xla) {
00985     jj_la = xla; jj_lastpos = jj_scanpos = token;
00986     try { return !jj_3_7(); }
00987     catch(LookaheadSuccess ls) { return true; }
00988     finally { jj_save(6, xla); }
00989   }
00990 
00991   static final private boolean jj_2_8(int xla) {
00992     jj_la = xla; jj_lastpos = jj_scanpos = token;
00993     try { return !jj_3_8(); }
00994     catch(LookaheadSuccess ls) { return true; }
00995     finally { jj_save(7, xla); }
00996   }
00997 
00998   static final private boolean jj_2_9(int xla) {
00999     jj_la = xla; jj_lastpos = jj_scanpos = token;
01000     try { return !jj_3_9(); }
01001     catch(LookaheadSuccess ls) { return true; }
01002     finally { jj_save(8, xla); }
01003   }
01004 
01005   static final private boolean jj_2_10(int xla) {
01006     jj_la = xla; jj_lastpos = jj_scanpos = token;
01007     try { return !jj_3_10(); }
01008     catch(LookaheadSuccess ls) { return true; }
01009     finally { jj_save(9, xla); }
01010   }
01011 
01012   static final private boolean jj_3R_23() {
01013     if (jj_scan_token(COMAND_SKIP)) return true;
01014     return false;
01015   }
01016 
01017   static final private boolean jj_3R_86() {
01018     if (jj_scan_token(STRING)) return true;
01019     return false;
01020   }
01021 
01022   static final private boolean jj_3R_85() {
01023     if (jj_scan_token(BOOLEAN)) return true;
01024     return false;
01025   }
01026 
01027   static final private boolean jj_3R_84() {
01028     if (jj_scan_token(INT)) return true;
01029     return false;
01030   }
01031 
01032   static final private boolean jj_3R_72() {
01033     if (jj_3R_4()) return true;
01034     if (jj_scan_token(MINUS)) return true;
01035     if (jj_3R_31()) return true;
01036     return false;
01037   }
01038 
01039   static final private boolean jj_3R_83() {
01040     Token xsp;
01041     xsp = jj_scanpos;
01042     if (jj_3R_84()) {
01043     jj_scanpos = xsp;
01044     if (jj_3R_85()) {
01045     jj_scanpos = xsp;
01046     if (jj_3R_86()) return true;
01047     }
01048     }
01049     return false;
01050   }
01051 
01052   static final private boolean jj_3R_26() {
01053     if (jj_scan_token(WHILE)) return true;
01054     if (jj_3R_31()) return true;
01055     if (jj_scan_token(DO)) return true;
01056     if (jj_3R_29()) return true;
01057     return false;
01058   }
01059 
01060   static final private boolean jj_3_6() {
01061     if (jj_3R_4()) return true;
01062     if (jj_scan_token(EQ)) return true;
01063     return false;
01064   }
01065 
01066   static final private boolean jj_3R_79() {
01067     if (jj_3R_80()) return true;
01068     if (jj_scan_token(RPAREN)) return true;
01069     if (jj_scan_token(LBRACE)) return true;
01070     if (jj_3R_29()) return true;
01071     if (jj_scan_token(RBRACE)) return true;
01072     return false;
01073   }
01074 
01075   static final private boolean jj_3_5() {
01076     if (jj_3R_4()) return true;
01077     if (jj_scan_token(OR)) return true;
01078     return false;
01079   }
01080 
01081   static final private boolean jj_3R_78() {
01082     if (jj_scan_token(LBRACE)) return true;
01083     if (jj_3R_29()) return true;
01084     if (jj_scan_token(RBRACE)) return true;
01085     return false;
01086   }
01087 
01088   static final private boolean jj_3_4() {
01089     if (jj_3R_4()) return true;
01090     if (jj_scan_token(AND)) return true;
01091     return false;
01092   }
01093 
01094   static final private boolean jj_3R_76() {
01095     if (jj_3R_4()) return true;
01096     if (jj_scan_token(PLUS)) return true;
01097     if (jj_3R_31()) return true;
01098     return false;
01099   }
01100 
01101   static final private boolean jj_3_3() {
01102     if (jj_3R_4()) return true;
01103     if (jj_scan_token(MINUS)) return true;
01104     return false;
01105   }
01106 
01107   static final private boolean jj_3_2() {
01108     if (jj_3R_4()) return true;
01109     if (jj_scan_token(CONCAT)) return true;
01110     return false;
01111   }
01112 
01113   static final private boolean jj_3R_68() {
01114     if (jj_3R_76()) return true;
01115     return false;
01116   }
01117 
01118   static final private boolean jj_3R_67() {
01119     if (jj_3R_75()) return true;
01120     return false;
01121   }
01122 
01123   static final private boolean jj_3R_27() {
01124     if (jj_scan_token(IF)) return true;
01125     if (jj_3R_31()) return true;
01126     if (jj_scan_token(THEN)) return true;
01127     if (jj_3R_29()) return true;
01128     if (jj_scan_token(ELSE)) return true;
01129     if (jj_3R_29()) return true;
01130     return false;
01131   }
01132 
01133   static final private boolean jj_3R_66() {
01134     if (jj_3R_74()) return true;
01135     return false;
01136   }
01137 
01138   static final private boolean jj_3R_65() {
01139     if (jj_3R_73()) return true;
01140     return false;
01141   }
01142 
01143   static final private boolean jj_3R_77() {
01144     Token xsp;
01145     xsp = jj_scanpos;
01146     if (jj_3R_78()) {
01147     jj_scanpos = xsp;
01148     if (jj_3R_79()) return true;
01149     }
01150     return false;
01151   }
01152 
01153   static final private boolean jj_3R_64() {
01154     if (jj_3R_72()) return true;
01155     return false;
01156   }
01157 
01158   static final private boolean jj_3R_63() {
01159     if (jj_3R_71()) return true;
01160     return false;
01161   }
01162 
01163   static final private boolean jj_3_10() {
01164     if (jj_scan_token(PROC)) return true;
01165     if (jj_3R_7()) return true;
01166     if (jj_scan_token(LPAREN)) return true;
01167     if (jj_scan_token(RPAREN)) return true;
01168     return false;
01169   }
01170 
01171   static final private boolean jj_3R_54() {
01172     if (jj_scan_token(WRITE)) return true;
01173     if (jj_scan_token(LPAREN)) return true;
01174     if (jj_3R_31()) return true;
01175     if (jj_scan_token(RPAREN)) return true;
01176     return false;
01177   }
01178 
01179   static final private boolean jj_3R_70() {
01180     if (jj_scan_token(PROC)) return true;
01181     if (jj_3R_7()) return true;
01182     if (jj_scan_token(LPAREN)) return true;
01183     if (jj_3R_77()) return true;
01184     return false;
01185   }
01186 
01187   static final private boolean jj_3R_69() {
01188     if (jj_scan_token(PROC)) return true;
01189     if (jj_3R_7()) return true;
01190     if (jj_scan_token(LPAREN)) return true;
01191     if (jj_scan_token(RPAREN)) return true;
01192     if (jj_3R_77()) return true;
01193     return false;
01194   }
01195 
01196   static final private boolean jj_3R_58() {
01197     Token xsp;
01198     xsp = jj_scanpos;
01199     if (jj_3R_63()) {
01200     jj_scanpos = xsp;
01201     if (jj_3R_64()) {
01202     jj_scanpos = xsp;
01203     if (jj_3R_65()) {
01204     jj_scanpos = xsp;
01205     if (jj_3R_66()) {
01206     jj_scanpos = xsp;
01207     if (jj_3R_67()) {
01208     jj_scanpos = xsp;
01209     if (jj_3R_68()) return true;
01210     }
01211     }
01212     }
01213     }
01214     }
01215     return false;
01216   }
01217 
01218   static final private boolean jj_3R_62() {
01219     Token xsp;
01220     xsp = jj_scanpos;
01221     if (jj_3R_69()) {
01222     jj_scanpos = xsp;
01223     if (jj_3R_70()) return true;
01224     }
01225     return false;
01226   }
01227 
01228   static final private boolean jj_3R_40() {
01229     if (jj_3R_54()) return true;
01230     return false;
01231   }
01232 
01233   static final private boolean jj_3R_53() {
01234     if (jj_scan_token(READ)) return true;
01235     if (jj_scan_token(LPAREN)) return true;
01236     if (jj_3R_7()) return true;
01237     if (jj_scan_token(RPAREN)) return true;
01238     return false;
01239   }
01240 
01241   static final private boolean jj_3_9() {
01242     if (jj_3R_6()) return true;
01243     if (jj_scan_token(COMMA)) return true;
01244     return false;
01245   }
01246 
01247   static final private boolean jj_3R_39() {
01248     if (jj_3R_53()) return true;
01249     return false;
01250   }
01251 
01252   static final private boolean jj_3R_21() {
01253     if (jj_3R_34()) return true;
01254     return false;
01255   }
01256 
01257   static final private boolean jj_3R_61() {
01258     if (jj_3R_6()) return true;
01259     if (jj_scan_token(COMMA)) return true;
01260     if (jj_3R_38()) return true;
01261     return false;
01262   }
01263 
01264   static final private boolean jj_3R_51() {
01265     if (jj_3R_62()) return true;
01266     return false;
01267   }
01268 
01269   static final private boolean jj_3R_20() {
01270     if (jj_3R_33()) return true;
01271     return false;
01272   }
01273 
01274   static final private boolean jj_3R_50() {
01275     if (jj_3R_6()) return true;
01276     return false;
01277   }
01278 
01279   static final private boolean jj_3R_19() {
01280     if (jj_3R_32()) return true;
01281     return false;
01282   }
01283 
01284   static final private boolean jj_3R_49() {
01285     if (jj_3R_61()) return true;
01286     return false;
01287   }
01288 
01289   static final private boolean jj_3R_5() {
01290     Token xsp;
01291     xsp = jj_scanpos;
01292     if (jj_3R_19()) {
01293     jj_scanpos = xsp;
01294     if (jj_3R_20()) {
01295     jj_scanpos = xsp;
01296     if (jj_3R_21()) return true;
01297     }
01298     }
01299     return false;
01300   }
01301 
01302   static final private boolean jj_3R_28() {
01303     Token xsp;
01304     xsp = jj_scanpos;
01305     if (jj_3R_39()) {
01306     jj_scanpos = xsp;
01307     if (jj_3R_40()) return true;
01308     }
01309     return false;
01310   }
01311 
01312   static final private boolean jj_3R_52() {
01313     if (jj_scan_token(LPAREN)) return true;
01314     if (jj_3R_38()) return true;
01315     if (jj_scan_token(RPAREN)) return true;
01316     return false;
01317   }
01318 
01319   static final private boolean jj_3R_18() {
01320     if (jj_scan_token(LPAREN)) return true;
01321     if (jj_3R_31()) return true;
01322     if (jj_scan_token(RPAREN)) return true;
01323     return false;
01324   }
01325 
01326   static final private boolean jj_3R_17() {
01327     if (jj_3R_22()) return true;
01328     return false;
01329   }
01330 
01331   static final private boolean jj_3R_38() {
01332     Token xsp;
01333     xsp = jj_scanpos;
01334     if (jj_3R_49()) {
01335     jj_scanpos = xsp;
01336     if (jj_3R_50()) {
01337     jj_scanpos = xsp;
01338     if (jj_3R_51()) {
01339     jj_scanpos = xsp;
01340     if (jj_3R_52()) return true;
01341     }
01342     }
01343     }
01344     return false;
01345   }
01346 
01347   static final private boolean jj_3R_16() {
01348     if (jj_3R_7()) return true;
01349     return false;
01350   }
01351 
01352   static final private boolean jj_3R_55() {
01353     if (jj_3R_3()) return true;
01354     if (jj_scan_token(SEMICOLON)) return true;
01355     if (jj_3R_29()) return true;
01356     return false;
01357   }
01358 
01359   static final private boolean jj_3_1() {
01360     if (jj_3R_3()) return true;
01361     if (jj_scan_token(SEMICOLON)) return true;
01362     return false;
01363   }
01364 
01365   static final private boolean jj_3R_4() {
01366     Token xsp;
01367     xsp = jj_scanpos;
01368     if (jj_3R_16()) {
01369     jj_scanpos = xsp;
01370     if (jj_3R_17()) {
01371     jj_scanpos = xsp;
01372     if (jj_3R_18()) return true;
01373     }
01374     }
01375     return false;
01376   }
01377 
01378   static final private boolean jj_3R_25() {
01379     if (jj_scan_token(LBRACE)) return true;
01380     if (jj_3R_38()) return true;
01381     if (jj_scan_token(SEMICOLON)) return true;
01382     if (jj_3R_29()) return true;
01383     if (jj_scan_token(RBRACE)) return true;
01384     return false;
01385   }
01386 
01387   static final private boolean jj_3R_42() {
01388     if (jj_3R_3()) return true;
01389     return false;
01390   }
01391 
01392   static final private boolean jj_3R_41() {
01393     if (jj_3R_55()) return true;
01394     return false;
01395   }
01396 
01397   static final private boolean jj_3R_34() {
01398     if (jj_scan_token(LENGTH)) return true;
01399     if (jj_3R_31()) return true;
01400     return false;
01401   }
01402 
01403   static final private boolean jj_3R_29() {
01404     Token xsp;
01405     xsp = jj_scanpos;
01406     if (jj_3R_41()) {
01407     jj_scanpos = xsp;
01408     if (jj_3R_42()) return true;
01409     }
01410     return false;
01411   }
01412 
01413   static final private boolean jj_3R_30() {
01414     if (jj_scan_token(CALL)) return true;
01415     if (jj_3R_7()) return true;
01416     if (jj_scan_token(LPAREN)) return true;
01417     if (jj_3R_43()) return true;
01418     if (jj_scan_token(RPAREN)) return true;
01419     return false;
01420   }
01421 
01422   static final private boolean jj_3R_57() {
01423     if (jj_scan_token(COMMA)) return true;
01424     if (jj_3R_31()) return true;
01425     return false;
01426   }
01427 
01428   static final private boolean jj_3R_33() {
01429     if (jj_scan_token(NOT)) return true;
01430     if (jj_3R_31()) return true;
01431     return false;
01432   }
01433 
01434   static final private boolean jj_3R_15() {
01435     if (jj_3R_30()) return true;
01436     return false;
01437   }
01438 
01439   static final private boolean jj_3R_32() {
01440     if (jj_scan_token(MINUS)) return true;
01441     if (jj_3R_31()) return true;
01442     return false;
01443   }
01444 
01445   static final private boolean jj_3R_14() {
01446     if (jj_scan_token(LPAREN)) return true;
01447     if (jj_3R_29()) return true;
01448     if (jj_scan_token(RPAREN)) return true;
01449     return false;
01450   }
01451 
01452   static final private boolean jj_3R_13() {
01453     if (jj_3R_28()) return true;
01454     return false;
01455   }
01456 
01457   static final private boolean jj_3R_12() {
01458     if (jj_3R_27()) return true;
01459     return false;
01460   }
01461 
01462   static final private boolean jj_3R_37() {
01463     if (jj_3R_48()) return true;
01464     return false;
01465   }
01466 
01467   static final private boolean jj_3R_11() {
01468     if (jj_3R_26()) return true;
01469     return false;
01470   }
01471 
01472   static final private boolean jj_3R_36() {
01473     if (jj_3R_47()) return true;
01474     return false;
01475   }
01476 
01477   static final private boolean jj_3R_10() {
01478     if (jj_3R_25()) return true;
01479     return false;
01480   }
01481 
01482   static final private boolean jj_3R_9() {
01483     if (jj_3R_24()) return true;
01484     return false;
01485   }
01486 
01487   static final private boolean jj_3R_8() {
01488     if (jj_3R_23()) return true;
01489     return false;
01490   }
01491 
01492   static final private boolean jj_3_8() {
01493     if (jj_3R_4()) return true;
01494     Token xsp;
01495     xsp = jj_scanpos;
01496     if (jj_scan_token(10)) {
01497     jj_scanpos = xsp;
01498     if (jj_scan_token(9)) {
01499     jj_scanpos = xsp;
01500     if (jj_scan_token(62)) {
01501     jj_scanpos = xsp;
01502     if (jj_scan_token(61)) {
01503     jj_scanpos = xsp;
01504     if (jj_scan_token(54)) return true;
01505     }
01506     }
01507     }
01508     }
01509     return false;
01510   }
01511 
01512   static final private boolean jj_3R_3() {
01513     Token xsp;
01514     xsp = jj_scanpos;
01515     if (jj_3R_8()) {
01516     jj_scanpos = xsp;
01517     if (jj_3R_9()) {
01518     jj_scanpos = xsp;
01519     if (jj_3R_10()) {
01520     jj_scanpos = xsp;
01521     if (jj_3R_11()) {
01522     jj_scanpos = xsp;
01523     if (jj_3R_12()) {
01524     jj_scanpos = xsp;
01525     if (jj_3R_13()) {
01526     jj_scanpos = xsp;
01527     if (jj_3R_14()) {
01528     jj_scanpos = xsp;
01529     if (jj_3R_15()) return true;
01530     }
01531     }
01532     }
01533     }
01534     }
01535     }
01536     }
01537     return false;
01538   }
01539 
01540   static final private boolean jj_3R_35() {
01541     if (jj_3R_46()) return true;
01542     return false;
01543   }
01544 
01545   static final private boolean jj_3R_22() {
01546     Token xsp;
01547     xsp = jj_scanpos;
01548     if (jj_3R_35()) {
01549     jj_scanpos = xsp;
01550     if (jj_3R_36()) {
01551     jj_scanpos = xsp;
01552     if (jj_3R_37()) return true;
01553     }
01554     }
01555     return false;
01556   }
01557 
01558   static final private boolean jj_3R_45() {
01559     if (jj_3R_4()) return true;
01560     return false;
01561   }
01562 
01563   static final private boolean jj_3R_44() {
01564     if (jj_3R_58()) return true;
01565     return false;
01566   }
01567 
01568   static final private boolean jj_3_7() {
01569     if (jj_3R_5()) return true;
01570     return false;
01571   }
01572 
01573   static final private boolean jj_3R_31() {
01574     Token xsp;
01575     xsp = jj_scanpos;
01576     if (jj_3_7()) {
01577     jj_scanpos = xsp;
01578     if (jj_3R_44()) {
01579     jj_scanpos = xsp;
01580     if (jj_3R_45()) return true;
01581     }
01582     }
01583     return false;
01584   }
01585 
01586   static final private boolean jj_3R_48() {
01587     if (jj_scan_token(STRING_LITERAL)) return true;
01588     return false;
01589   }
01590 
01591   static final private boolean jj_3R_6() {
01592     if (jj_scan_token(VAR)) return true;
01593     if (jj_3R_7()) return true;
01594     if (jj_scan_token(ASSIGN)) return true;
01595     if (jj_3R_22()) return true;
01596     return false;
01597   }
01598 
01599   static final private boolean jj_3R_60() {
01600     if (jj_scan_token(TRUE)) return true;
01601     return false;
01602   }
01603 
01604   static final private boolean jj_3R_47() {
01605     Token xsp;
01606     xsp = jj_scanpos;
01607     if (jj_3R_59()) {
01608     jj_scanpos = xsp;
01609     if (jj_3R_60()) return true;
01610     }
01611     return false;
01612   }
01613 
01614   static final private boolean jj_3R_59() {
01615     if (jj_scan_token(FALSE)) return true;
01616     return false;
01617   }
01618 
01619   static final private boolean jj_3R_71() {
01620     if (jj_3R_4()) return true;
01621     if (jj_scan_token(CONCAT)) return true;
01622     if (jj_3R_31()) return true;
01623     return false;
01624   }
01625 
01626   static final private boolean jj_3R_46() {
01627     if (jj_scan_token(INTEGER_LITERAL)) return true;
01628     return false;
01629   }
01630 
01631   static final private boolean jj_3R_56() {
01632     if (jj_3R_31()) return true;
01633     return false;
01634   }
01635 
01636   static final private boolean jj_3R_43() {
01637     Token xsp;
01638     xsp = jj_scanpos;
01639     if (jj_3R_56()) jj_scanpos = xsp;
01640     while (true) {
01641       xsp = jj_scanpos;
01642       if (jj_3R_57()) { jj_scanpos = xsp; break; }
01643     }
01644     return false;
01645   }
01646 
01647   static final private boolean jj_3R_75() {
01648     if (jj_3R_4()) return true;
01649     if (jj_scan_token(EQ)) return true;
01650     if (jj_3R_31()) return true;
01651     return false;
01652   }
01653 
01654   static final private boolean jj_3R_7() {
01655     if (jj_scan_token(IDENTIFIER)) return true;
01656     return false;
01657   }
01658 
01659   static final private boolean jj_3R_74() {
01660     if (jj_3R_4()) return true;
01661     if (jj_scan_token(OR)) return true;
01662     if (jj_3R_31()) return true;
01663     return false;
01664   }
01665 
01666   static final private boolean jj_3R_82() {
01667     if (jj_scan_token(COMMA)) return true;
01668     if (jj_3R_83()) return true;
01669     if (jj_3R_7()) return true;
01670     return false;
01671   }
01672 
01673   static final private boolean jj_3R_81() {
01674     if (jj_3R_83()) return true;
01675     if (jj_3R_7()) return true;
01676     return false;
01677   }
01678 
01679   static final private boolean jj_3R_24() {
01680     if (jj_3R_7()) return true;
01681     if (jj_scan_token(ATTRIB)) return true;
01682     if (jj_3R_31()) return true;
01683     return false;
01684   }
01685 
01686   static final private boolean jj_3R_80() {
01687     Token xsp;
01688     xsp = jj_scanpos;
01689     if (jj_3R_81()) jj_scanpos = xsp;
01690     while (true) {
01691       xsp = jj_scanpos;
01692       if (jj_3R_82()) { jj_scanpos = xsp; break; }
01693     }
01694     return false;
01695   }
01696 
01697   static final private boolean jj_3R_73() {
01698     if (jj_3R_4()) return true;
01699     if (jj_scan_token(AND)) return true;
01700     if (jj_3R_31()) return true;
01701     return false;
01702   }
01703 
01704   static private boolean jj_initialized_once = false;
01705   static public Imp2ParserTokenManager token_source;
01706   static JavaCharStream jj_input_stream;
01707   static public Token token, jj_nt;
01708   static private int jj_ntk;
01709   static private Token jj_scanpos, jj_lastpos;
01710   static private int jj_la;
01711   static public boolean lookingAhead = false;
01712   static private boolean jj_semLA;
01713   static private int jj_gen;
01714   static final private int[] jj_la1 = new int[17];
01715   static private int[] jj_la1_0;
01716   static private int[] jj_la1_1;
01717   static private int[] jj_la1_2;
01718   static {
01719       jj_la1_0();
01720       jj_la1_1();
01721       jj_la1_2();
01722    }
01723    private static void jj_la1_0() {
01724       jj_la1_0 = new int[] {0x23b0000,0x180000,0x6000,0x20006000,0x20006000,0x1800,0x20006000,0x20006000,0x23b0000,0x1008000,0x1000000,0x1c000000,0x1c000000,0x1c000000,0x0,0x20007800,0x0,};
01725    }
01726    private static void jj_la1_1() {
01727       jj_la1_1 = new int[] {0xa4,0x0,0x0,0x2,0x26,0x40000000,0x26,0x26,0xa4,0x20,0x0,0x10c0,0x0,0x0,0x1000,0x40000026,0x1000,};
01728    }
01729    private static void jj_la1_2() {
01730       jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
01731    }
01732   static final private JJCalls[] jj_2_rtns = new JJCalls[10];
01733   static private boolean jj_rescan = false;
01734   static private int jj_gc = 0;
01735 
01736   public Imp2Parser(java.io.InputStream stream) {
01737      this(stream, null);
01738   }
01739   public Imp2Parser(java.io.InputStream stream, String encoding) {
01740     if (jj_initialized_once) {
01741       System.out.println("ERROR: Second call to constructor of static parser.  You must");
01742       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
01743       System.out.println("       during parser generation.");
01744       throw new Error();
01745     }
01746     jj_initialized_once = true;
01747     try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
01748     token_source = new Imp2ParserTokenManager(jj_input_stream);
01749     token = new Token();
01750     jj_ntk = -1;
01751     jj_gen = 0;
01752     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01753     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01754   }
01755 
01756   static public void ReInit(java.io.InputStream stream) {
01757      ReInit(stream, null);
01758   }
01759   static public void ReInit(java.io.InputStream stream, String encoding) {
01760     try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
01761     token_source.ReInit(jj_input_stream);
01762     token = new Token();
01763     jj_ntk = -1;
01764     jj_gen = 0;
01765     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01766     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01767   }
01768 
01769   public Imp2Parser(java.io.Reader stream) {
01770     if (jj_initialized_once) {
01771       System.out.println("ERROR: Second call to constructor of static parser.  You must");
01772       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
01773       System.out.println("       during parser generation.");
01774       throw new Error();
01775     }
01776     jj_initialized_once = true;
01777     jj_input_stream = new JavaCharStream(stream, 1, 1);
01778     token_source = new Imp2ParserTokenManager(jj_input_stream);
01779     token = new Token();
01780     jj_ntk = -1;
01781     jj_gen = 0;
01782     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01783     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01784   }
01785 
01786   static public void ReInit(java.io.Reader stream) {
01787     jj_input_stream.ReInit(stream, 1, 1);
01788     token_source.ReInit(jj_input_stream);
01789     token = new Token();
01790     jj_ntk = -1;
01791     jj_gen = 0;
01792     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01793     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01794   }
01795 
01796   public Imp2Parser(Imp2ParserTokenManager tm) {
01797     if (jj_initialized_once) {
01798       System.out.println("ERROR: Second call to constructor of static parser.  You must");
01799       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
01800       System.out.println("       during parser generation.");
01801       throw new Error();
01802     }
01803     jj_initialized_once = true;
01804     token_source = tm;
01805     token = new Token();
01806     jj_ntk = -1;
01807     jj_gen = 0;
01808     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01809     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01810   }
01811 
01812   public void ReInit(Imp2ParserTokenManager tm) {
01813     token_source = tm;
01814     token = new Token();
01815     jj_ntk = -1;
01816     jj_gen = 0;
01817     for (int i = 0; i < 17; i++) jj_la1[i] = -1;
01818     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
01819   }
01820 
01821   static final private Token jj_consume_token(int kind) throws ParseException {
01822     Token oldToken;
01823     if ((oldToken = token).next != null) token = token.next;
01824     else token = token.next = token_source.getNextToken();
01825     jj_ntk = -1;
01826     if (token.kind == kind) {
01827       jj_gen++;
01828       if (++jj_gc > 100) {
01829         jj_gc = 0;
01830         for (int i = 0; i < jj_2_rtns.length; i++) {
01831           JJCalls c = jj_2_rtns[i];
01832           while (c != null) {
01833             if (c.gen < jj_gen) c.first = null;
01834             c = c.next;
01835           }
01836         }
01837       }
01838       trace_token(token, "");
01839       return token;
01840     }
01841     token = oldToken;
01842     jj_kind = kind;
01843     throw generateParseException();
01844   }
01845 
01846   static private final class LookaheadSuccess extends java.lang.Error { }
01847   static final private LookaheadSuccess jj_ls = new LookaheadSuccess();
01848   static final private boolean jj_scan_token(int kind) {
01849     if (jj_scanpos == jj_lastpos) {
01850       jj_la--;
01851       if (jj_scanpos.next == null) {
01852         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
01853       } else {
01854         jj_lastpos = jj_scanpos = jj_scanpos.next;
01855       }
01856     } else {
01857       jj_scanpos = jj_scanpos.next;
01858     }
01859     if (jj_rescan) {
01860       int i = 0; Token tok = token;
01861       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
01862       if (tok != null) jj_add_error_token(kind, i);
01863     }
01864     if (jj_scanpos.kind != kind) return true;
01865     if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
01866     return false;
01867   }
01868 
01869   static final public Token getNextToken() {
01870     if (token.next != null) token = token.next;
01871     else token = token.next = token_source.getNextToken();
01872     jj_ntk = -1;
01873     jj_gen++;
01874       trace_token(token, " (in getNextToken)");
01875     return token;
01876   }
01877 
01878   static final public Token getToken(int index) {
01879     Token t = lookingAhead ? jj_scanpos : token;
01880     for (int i = 0; i < index; i++) {
01881       if (t.next != null) t = t.next;
01882       else t = t.next = token_source.getNextToken();
01883     }
01884     return t;
01885   }
01886 
01887   static final private int jj_ntk() {
01888     if ((jj_nt=token.next) == null)
01889       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
01890     else
01891       return (jj_ntk = jj_nt.kind);
01892   }
01893 
01894   static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>();
01895   static private int[] jj_expentry;
01896   static private int jj_kind = -1;
01897   static private int[] jj_lasttokens = new int[100];
01898   static private int jj_endpos;
01899 
01900   static private void jj_add_error_token(int kind, int pos) {
01901     if (pos >= 100) return;
01902     if (pos == jj_endpos + 1) {
01903       jj_lasttokens[jj_endpos++] = kind;
01904     } else if (jj_endpos != 0) {
01905       jj_expentry = new int[jj_endpos];
01906       for (int i = 0; i < jj_endpos; i++) {
01907         jj_expentry[i] = jj_lasttokens[i];
01908       }
01909       boolean exists = false;
01910       for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
01911         int[] oldentry = (int[])(e.nextElement());
01912         if (oldentry.length == jj_expentry.length) {
01913           exists = true;
01914           for (int i = 0; i < jj_expentry.length; i++) {
01915             if (oldentry[i] != jj_expentry[i]) {
01916               exists = false;
01917               break;
01918             }
01919           }
01920           if (exists) break;
01921         }
01922       }
01923       if (!exists) jj_expentries.addElement(jj_expentry);
01924       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
01925     }
01926   }
01927 
01928   static public ParseException generateParseException() {
01929     jj_expentries.removeAllElements();
01930     boolean[] la1tokens = new boolean[69];
01931     for (int i = 0; i < 69; i++) {
01932       la1tokens[i] = false;
01933     }
01934     if (jj_kind >= 0) {
01935       la1tokens[jj_kind] = true;
01936       jj_kind = -1;
01937     }
01938     for (int i = 0; i < 17; i++) {
01939       if (jj_la1[i] == jj_gen) {
01940         for (int j = 0; j < 32; j++) {
01941           if ((jj_la1_0[i] & (1<<j)) != 0) {
01942             la1tokens[j] = true;
01943           }
01944           if ((jj_la1_1[i] & (1<<j)) != 0) {
01945             la1tokens[32+j] = true;
01946           }
01947           if ((jj_la1_2[i] & (1<<j)) != 0) {
01948             la1tokens[64+j] = true;
01949           }
01950         }
01951       }
01952     }
01953     for (int i = 0; i < 69; i++) {
01954       if (la1tokens[i]) {
01955         jj_expentry = new int[1];
01956         jj_expentry[0] = i;
01957         jj_expentries.addElement(jj_expentry);
01958       }
01959     }
01960     jj_endpos = 0;
01961     jj_rescan_token();
01962     jj_add_error_token(0, 0);
01963     int[][] exptokseq = new int[jj_expentries.size()][];
01964     for (int i = 0; i < jj_expentries.size(); i++) {
01965       exptokseq[i] = (int[])jj_expentries.elementAt(i);
01966     }
01967     return new ParseException(token, exptokseq, tokenImage);
01968   }
01969 
01970   static private int trace_indent = 0;
01971   static private boolean trace_enabled = true;
01972 
01973   static final public void enable_tracing() {
01974     trace_enabled = true;
01975   }
01976 
01977   static final public void disable_tracing() {
01978     trace_enabled = false;
01979   }
01980 
01981   static final private void trace_call(String s) {
01982     if (trace_enabled) {
01983       for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
01984       System.out.println("Call:   " + s);
01985     }
01986     trace_indent = trace_indent + 2;
01987   }
01988 
01989   static final private void trace_return(String s) {
01990     trace_indent = trace_indent - 2;
01991     if (trace_enabled) {
01992       for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
01993       System.out.println("Return: " + s);
01994     }
01995   }
01996 
01997   static final private void trace_token(Token t, String where) {
01998     if (trace_enabled) {
01999       for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
02000       System.out.print("Consumed token: <" + tokenImage[t.kind]);
02001       if (t.kind != 0 && !tokenImage[t.kind].equals("\"" + t.image + "\"")) {
02002         System.out.print(": \"" + t.image + "\"");
02003       }
02004       System.out.println(" at line " + t.beginLine + " column " + t.beginColumn + ">" + where);
02005     }
02006   }
02007 
02008   static final private void trace_scan(Token t1, int t2) {
02009     if (trace_enabled) {
02010       for (int i = 0; i < trace_indent; i++) { System.out.print(" "); }
02011       System.out.print("Visited token: <" + tokenImage[t1.kind]);
02012       if (t1.kind != 0 && !tokenImage[t1.kind].equals("\"" + t1.image + "\"")) {
02013         System.out.print(": \"" + t1.image + "\"");
02014       }
02015       System.out.println(" at line " + t1.beginLine + " column " + t1.beginColumn + ">; Expected token: <" + tokenImage[t2] + ">");
02016     }
02017   }
02018 
02019   static final private void jj_rescan_token() {
02020     jj_rescan = true;
02021     for (int i = 0; i < 10; i++) {
02022     try {
02023       JJCalls p = jj_2_rtns[i];
02024       do {
02025         if (p.gen > jj_gen) {
02026           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
02027           switch (i) {
02028             case 0: jj_3_1(); break;
02029             case 1: jj_3_2(); break;
02030             case 2: jj_3_3(); break;
02031             case 3: jj_3_4(); break;
02032             case 4: jj_3_5(); break;
02033             case 5: jj_3_6(); break;
02034             case 6: jj_3_7(); break;
02035             case 7: jj_3_8(); break;
02036             case 8: jj_3_9(); break;
02037             case 9: jj_3_10(); break;
02038           }
02039         }
02040         p = p.next;
02041       } while (p != null);
02042       } catch(LookaheadSuccess ls) { }
02043     }
02044     jj_rescan = false;
02045   }
02046 
02047   static final private void jj_save(int index, int xla) {
02048     JJCalls p = jj_2_rtns[index];
02049     while (p.gen > jj_gen) {
02050       if (p.next == null) { p = p.next = new JJCalls(); break; }
02051       p = p.next;
02052     }
02053     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
02054   }
02055 
02056   static final class JJCalls {
02057     int gen;
02058     Token first;
02059     int arg;
02060     JJCalls next;
02061   }
02062 
02063 }

Generated on Wed Jul 19 19:07:51 2006 for PLP by  doxygen 1.4.7