1*0c56280aSSorin Basca /* 2*0c56280aSSorin Basca * Licensed to the Apache Software Foundation (ASF) under one or more 3*0c56280aSSorin Basca * contributor license agreements. See the NOTICE file distributed with 4*0c56280aSSorin Basca * this work for additional information regarding copyright ownership. 5*0c56280aSSorin Basca * The ASF licenses this file to You under the Apache License, Version 2.0 6*0c56280aSSorin Basca * (the "License"); you may not use this file except in compliance with 7*0c56280aSSorin Basca * the License. You may obtain a copy of the License at 8*0c56280aSSorin Basca * 9*0c56280aSSorin Basca * http://www.apache.org/licenses/LICENSE-2.0 10*0c56280aSSorin Basca * 11*0c56280aSSorin Basca * Unless required by applicable law or agreed to in writing, software 12*0c56280aSSorin Basca * distributed under the License is distributed on an "AS IS" BASIS, 13*0c56280aSSorin Basca * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*0c56280aSSorin Basca * See the License for the specific language governing permissions and 15*0c56280aSSorin Basca * limitations under the License. 16*0c56280aSSorin Basca * 17*0c56280aSSorin Basca */ 18*0c56280aSSorin Basca /* Generated By:JJTree&JavaCC: Do not edit this line. MiniParser.java */ 19*0c56280aSSorin Basca package Mini; 20*0c56280aSSorin Basca 21*0c56280aSSorin Basca public class MiniParser/*@bgen(jjtree)*/implements MiniParserTreeConstants, MiniParserConstants {/*@bgen(jjtree)*/ 22*0c56280aSSorin Basca protected static JJTMiniParserState jjtree = new JJTMiniParserState();private static Token expr_token; 23*0c56280aSSorin Basca jjtreeOpenNodeScope(Node n)24*0c56280aSSorin Basca final static void jjtreeOpenNodeScope(Node n) {} jjtreeCloseNodeScope(Node n)25*0c56280aSSorin Basca final static void jjtreeCloseNodeScope(Node n) {((SimpleNode)n).closeNode();} 26*0c56280aSSorin Basca 27*0c56280aSSorin Basca /* A program consists of a number of function declarations with a 28*0c56280aSSorin Basca * distinguished function `main' that starts the program. 29*0c56280aSSorin Basca */ Program()30*0c56280aSSorin Basca static public void Program() throws ParseException { 31*0c56280aSSorin Basca /*@bgen(jjtree) Program */ 32*0c56280aSSorin Basca ASTProgram jjtn000 = new ASTProgram(JJTPROGRAM); 33*0c56280aSSorin Basca boolean jjtc000 = true; 34*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 35*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000); 36*0c56280aSSorin Basca try { 37*0c56280aSSorin Basca label_1: 38*0c56280aSSorin Basca while (true) { 39*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 40*0c56280aSSorin Basca case 9: 41*0c56280aSSorin Basca break; 42*0c56280aSSorin Basca default: 43*0c56280aSSorin Basca jj_la1[0] = jj_gen; 44*0c56280aSSorin Basca break label_1; 45*0c56280aSSorin Basca } 46*0c56280aSSorin Basca FunDecl(); 47*0c56280aSSorin Basca } 48*0c56280aSSorin Basca jj_consume_token(0); 49*0c56280aSSorin Basca } catch (Throwable jjte000) { 50*0c56280aSSorin Basca if (jjtc000) { 51*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 52*0c56280aSSorin Basca jjtc000 = false; 53*0c56280aSSorin Basca } else { 54*0c56280aSSorin Basca jjtree.popNode(); 55*0c56280aSSorin Basca } 56*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 57*0c56280aSSorin Basca {if (true) { 58*0c56280aSSorin Basca throw (ParseException)jjte000; 59*0c56280aSSorin Basca }} 60*0c56280aSSorin Basca } 61*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 62*0c56280aSSorin Basca {if (true) { 63*0c56280aSSorin Basca throw (RuntimeException)jjte000; 64*0c56280aSSorin Basca }} 65*0c56280aSSorin Basca } 66*0c56280aSSorin Basca {if (true) { 67*0c56280aSSorin Basca throw (Error)jjte000; 68*0c56280aSSorin Basca }} 69*0c56280aSSorin Basca } finally { 70*0c56280aSSorin Basca if (jjtc000) { 71*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 72*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 73*0c56280aSSorin Basca } 74*0c56280aSSorin Basca } 75*0c56280aSSorin Basca } 76*0c56280aSSorin Basca 77*0c56280aSSorin Basca /* "FUN" Ident() "(" NameList() ")" = Expr() 78*0c56280aSSorin Basca */ FunDecl()79*0c56280aSSorin Basca static public void FunDecl() throws ParseException { 80*0c56280aSSorin Basca /*@bgen(jjtree) FunDecl */ 81*0c56280aSSorin Basca ASTFunDecl jjtn000 = new ASTFunDecl(JJTFUNDECL); 82*0c56280aSSorin Basca boolean jjtc000 = true; 83*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 84*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t; 85*0c56280aSSorin Basca try { 86*0c56280aSSorin Basca t = jj_consume_token(9); 87*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 88*0c56280aSSorin Basca Ident(); 89*0c56280aSSorin Basca jj_consume_token(LPAREN); 90*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 91*0c56280aSSorin Basca case FALSE: 92*0c56280aSSorin Basca case TRUE: 93*0c56280aSSorin Basca case READ: 94*0c56280aSSorin Basca case WRITE: 95*0c56280aSSorin Basca case IDENT: 96*0c56280aSSorin Basca Ident(); 97*0c56280aSSorin Basca label_2: 98*0c56280aSSorin Basca while (true) { 99*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 100*0c56280aSSorin Basca case COMMA: 101*0c56280aSSorin Basca break; 102*0c56280aSSorin Basca default: 103*0c56280aSSorin Basca jj_la1[1] = jj_gen; 104*0c56280aSSorin Basca break label_2; 105*0c56280aSSorin Basca } 106*0c56280aSSorin Basca jj_consume_token(COMMA); 107*0c56280aSSorin Basca Ident(); 108*0c56280aSSorin Basca } 109*0c56280aSSorin Basca break; 110*0c56280aSSorin Basca default: 111*0c56280aSSorin Basca jj_la1[2] = jj_gen; 112*0c56280aSSorin Basca } 113*0c56280aSSorin Basca jj_consume_token(RPAREN); 114*0c56280aSSorin Basca jj_consume_token(ASSIGN); 115*0c56280aSSorin Basca Expr(); 116*0c56280aSSorin Basca } catch (Throwable jjte000) { 117*0c56280aSSorin Basca if (jjtc000) { 118*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 119*0c56280aSSorin Basca jjtc000 = false; 120*0c56280aSSorin Basca } else { 121*0c56280aSSorin Basca jjtree.popNode(); 122*0c56280aSSorin Basca } 123*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 124*0c56280aSSorin Basca {if (true) { 125*0c56280aSSorin Basca throw (ParseException)jjte000; 126*0c56280aSSorin Basca }} 127*0c56280aSSorin Basca } 128*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 129*0c56280aSSorin Basca {if (true) { 130*0c56280aSSorin Basca throw (RuntimeException)jjte000; 131*0c56280aSSorin Basca }} 132*0c56280aSSorin Basca } 133*0c56280aSSorin Basca {if (true) { 134*0c56280aSSorin Basca throw (Error)jjte000; 135*0c56280aSSorin Basca }} 136*0c56280aSSorin Basca } finally { 137*0c56280aSSorin Basca if (jjtc000) { 138*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 139*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 140*0c56280aSSorin Basca } 141*0c56280aSSorin Basca } 142*0c56280aSSorin Basca } 143*0c56280aSSorin Basca Expr()144*0c56280aSSorin Basca static public void Expr() throws ParseException { 145*0c56280aSSorin Basca /*@bgen(jjtree) Expr */ 146*0c56280aSSorin Basca ASTExpr jjtn000 = new ASTExpr(JJTEXPR); 147*0c56280aSSorin Basca boolean jjtc000 = true; 148*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 149*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);int kind=-1; 150*0c56280aSSorin Basca int un_op=-1; 151*0c56280aSSorin Basca try { 152*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 153*0c56280aSSorin Basca case 10: 154*0c56280aSSorin Basca IfExpr(); 155*0c56280aSSorin Basca break; 156*0c56280aSSorin Basca case 14: 157*0c56280aSSorin Basca LetExpr(); 158*0c56280aSSorin Basca break; 159*0c56280aSSorin Basca case FALSE: 160*0c56280aSSorin Basca case TRUE: 161*0c56280aSSorin Basca case LPAREN: 162*0c56280aSSorin Basca case READ: 163*0c56280aSSorin Basca case WRITE: 164*0c56280aSSorin Basca case IDENT: 165*0c56280aSSorin Basca case INTEGER: 166*0c56280aSSorin Basca Term(); 167*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 168*0c56280aSSorin Basca case OR: 169*0c56280aSSorin Basca case PLUS: 170*0c56280aSSorin Basca case MINUS: 171*0c56280aSSorin Basca kind = AddOp(); 172*0c56280aSSorin Basca Expr(); 173*0c56280aSSorin Basca jjtn000.setKind(kind); 174*0c56280aSSorin Basca break; 175*0c56280aSSorin Basca default: 176*0c56280aSSorin Basca jj_la1[3] = jj_gen; 177*0c56280aSSorin Basca } 178*0c56280aSSorin Basca break; 179*0c56280aSSorin Basca case NOT: 180*0c56280aSSorin Basca case MINUS: 181*0c56280aSSorin Basca un_op = UnOp(); 182*0c56280aSSorin Basca jjtn000.setUnOp(un_op); 183*0c56280aSSorin Basca Expr(); 184*0c56280aSSorin Basca break; 185*0c56280aSSorin Basca default: 186*0c56280aSSorin Basca jj_la1[4] = jj_gen; 187*0c56280aSSorin Basca jj_consume_token(-1); 188*0c56280aSSorin Basca throw new ParseException(); 189*0c56280aSSorin Basca } 190*0c56280aSSorin Basca } catch (Throwable jjte000) { 191*0c56280aSSorin Basca if (jjtc000) { 192*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 193*0c56280aSSorin Basca jjtc000 = false; 194*0c56280aSSorin Basca } else { 195*0c56280aSSorin Basca jjtree.popNode(); 196*0c56280aSSorin Basca } 197*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 198*0c56280aSSorin Basca {if (true) { 199*0c56280aSSorin Basca throw (ParseException)jjte000; 200*0c56280aSSorin Basca }} 201*0c56280aSSorin Basca } 202*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 203*0c56280aSSorin Basca {if (true) { 204*0c56280aSSorin Basca throw (RuntimeException)jjte000; 205*0c56280aSSorin Basca }} 206*0c56280aSSorin Basca } 207*0c56280aSSorin Basca {if (true) { 208*0c56280aSSorin Basca throw (Error)jjte000; 209*0c56280aSSorin Basca }} 210*0c56280aSSorin Basca } finally { 211*0c56280aSSorin Basca if (jjtc000) { 212*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 213*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 214*0c56280aSSorin Basca } 215*0c56280aSSorin Basca } 216*0c56280aSSorin Basca } 217*0c56280aSSorin Basca 218*0c56280aSSorin Basca /* 219*0c56280aSSorin Basca * The disambiguating algorithm of JavaCC automatically binds dangling 220*0c56280aSSorin Basca * else's to the innermost if statement. The LOOKAHEAD specification 221*0c56280aSSorin Basca * is to tell JavaCC that we know what we are doing. 222*0c56280aSSorin Basca */ IfExpr()223*0c56280aSSorin Basca static public void IfExpr() throws ParseException { 224*0c56280aSSorin Basca /*@bgen(jjtree) IfExpr */ 225*0c56280aSSorin Basca ASTIfExpr jjtn000 = new ASTIfExpr(JJTIFEXPR); 226*0c56280aSSorin Basca boolean jjtc000 = true; 227*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 228*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t=null; 229*0c56280aSSorin Basca try { 230*0c56280aSSorin Basca t = jj_consume_token(10); 231*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 232*0c56280aSSorin Basca Expr(); 233*0c56280aSSorin Basca jj_consume_token(11); 234*0c56280aSSorin Basca Expr(); 235*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 236*0c56280aSSorin Basca case 12: 237*0c56280aSSorin Basca jj_consume_token(12); 238*0c56280aSSorin Basca Expr(); 239*0c56280aSSorin Basca break; 240*0c56280aSSorin Basca default: 241*0c56280aSSorin Basca jj_la1[5] = jj_gen; 242*0c56280aSSorin Basca } 243*0c56280aSSorin Basca jj_consume_token(13); 244*0c56280aSSorin Basca } catch (Throwable jjte000) { 245*0c56280aSSorin Basca if (jjtc000) { 246*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 247*0c56280aSSorin Basca jjtc000 = false; 248*0c56280aSSorin Basca } else { 249*0c56280aSSorin Basca jjtree.popNode(); 250*0c56280aSSorin Basca } 251*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 252*0c56280aSSorin Basca {if (true) { 253*0c56280aSSorin Basca throw (ParseException)jjte000; 254*0c56280aSSorin Basca }} 255*0c56280aSSorin Basca } 256*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 257*0c56280aSSorin Basca {if (true) { 258*0c56280aSSorin Basca throw (RuntimeException)jjte000; 259*0c56280aSSorin Basca }} 260*0c56280aSSorin Basca } 261*0c56280aSSorin Basca {if (true) { 262*0c56280aSSorin Basca throw (Error)jjte000; 263*0c56280aSSorin Basca }} 264*0c56280aSSorin Basca } finally { 265*0c56280aSSorin Basca if (jjtc000) { 266*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 267*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 268*0c56280aSSorin Basca } 269*0c56280aSSorin Basca } 270*0c56280aSSorin Basca } 271*0c56280aSSorin Basca LetExpr()272*0c56280aSSorin Basca static public void LetExpr() throws ParseException { 273*0c56280aSSorin Basca /*@bgen(jjtree) LetExpr */ 274*0c56280aSSorin Basca ASTLetExpr jjtn000 = new ASTLetExpr(JJTLETEXPR); 275*0c56280aSSorin Basca boolean jjtc000 = true; 276*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 277*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t=null; 278*0c56280aSSorin Basca try { 279*0c56280aSSorin Basca t = jj_consume_token(14); 280*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 281*0c56280aSSorin Basca label_3: 282*0c56280aSSorin Basca while (true) { 283*0c56280aSSorin Basca Ident(); 284*0c56280aSSorin Basca jj_consume_token(ASSIGN); 285*0c56280aSSorin Basca Expr(); 286*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 287*0c56280aSSorin Basca case FALSE: 288*0c56280aSSorin Basca case TRUE: 289*0c56280aSSorin Basca case READ: 290*0c56280aSSorin Basca case WRITE: 291*0c56280aSSorin Basca case IDENT: 292*0c56280aSSorin Basca break; 293*0c56280aSSorin Basca default: 294*0c56280aSSorin Basca jj_la1[6] = jj_gen; 295*0c56280aSSorin Basca break label_3; 296*0c56280aSSorin Basca } 297*0c56280aSSorin Basca } 298*0c56280aSSorin Basca jj_consume_token(15); 299*0c56280aSSorin Basca Expr(); 300*0c56280aSSorin Basca } catch (Throwable jjte000) { 301*0c56280aSSorin Basca if (jjtc000) { 302*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 303*0c56280aSSorin Basca jjtc000 = false; 304*0c56280aSSorin Basca } else { 305*0c56280aSSorin Basca jjtree.popNode(); 306*0c56280aSSorin Basca } 307*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 308*0c56280aSSorin Basca {if (true) { 309*0c56280aSSorin Basca throw (ParseException)jjte000; 310*0c56280aSSorin Basca }} 311*0c56280aSSorin Basca } 312*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 313*0c56280aSSorin Basca {if (true) { 314*0c56280aSSorin Basca throw (RuntimeException)jjte000; 315*0c56280aSSorin Basca }} 316*0c56280aSSorin Basca } 317*0c56280aSSorin Basca {if (true) { 318*0c56280aSSorin Basca throw (Error)jjte000; 319*0c56280aSSorin Basca }} 320*0c56280aSSorin Basca } finally { 321*0c56280aSSorin Basca if (jjtc000) { 322*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 323*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 324*0c56280aSSorin Basca } 325*0c56280aSSorin Basca } 326*0c56280aSSorin Basca } 327*0c56280aSSorin Basca FunAppl()328*0c56280aSSorin Basca static public Token FunAppl() throws ParseException { 329*0c56280aSSorin Basca /*@bgen(jjtree) FunAppl */ 330*0c56280aSSorin Basca ASTFunAppl jjtn000 = new ASTFunAppl(JJTFUNAPPL); 331*0c56280aSSorin Basca boolean jjtc000 = true; 332*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 333*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t=null; 334*0c56280aSSorin Basca try { 335*0c56280aSSorin Basca t = Ident(); 336*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 337*0c56280aSSorin Basca jj_consume_token(LPAREN); 338*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 339*0c56280aSSorin Basca case 10: 340*0c56280aSSorin Basca case 14: 341*0c56280aSSorin Basca case NOT: 342*0c56280aSSorin Basca case FALSE: 343*0c56280aSSorin Basca case TRUE: 344*0c56280aSSorin Basca case MINUS: 345*0c56280aSSorin Basca case LPAREN: 346*0c56280aSSorin Basca case READ: 347*0c56280aSSorin Basca case WRITE: 348*0c56280aSSorin Basca case IDENT: 349*0c56280aSSorin Basca case INTEGER: 350*0c56280aSSorin Basca Expr(); 351*0c56280aSSorin Basca label_4: 352*0c56280aSSorin Basca while (true) { 353*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 354*0c56280aSSorin Basca case COMMA: 355*0c56280aSSorin Basca break; 356*0c56280aSSorin Basca default: 357*0c56280aSSorin Basca jj_la1[7] = jj_gen; 358*0c56280aSSorin Basca break label_4; 359*0c56280aSSorin Basca } 360*0c56280aSSorin Basca jj_consume_token(COMMA); 361*0c56280aSSorin Basca Expr(); 362*0c56280aSSorin Basca } 363*0c56280aSSorin Basca break; 364*0c56280aSSorin Basca default: 365*0c56280aSSorin Basca jj_la1[8] = jj_gen; 366*0c56280aSSorin Basca } 367*0c56280aSSorin Basca jj_consume_token(RPAREN); 368*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 369*0c56280aSSorin Basca jjtc000 = false; 370*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 371*0c56280aSSorin Basca {if (true) { 372*0c56280aSSorin Basca return t; 373*0c56280aSSorin Basca }} 374*0c56280aSSorin Basca } catch (Throwable jjte000) { 375*0c56280aSSorin Basca if (jjtc000) { 376*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 377*0c56280aSSorin Basca jjtc000 = false; 378*0c56280aSSorin Basca } else { 379*0c56280aSSorin Basca jjtree.popNode(); 380*0c56280aSSorin Basca } 381*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 382*0c56280aSSorin Basca {if (true) { 383*0c56280aSSorin Basca throw (ParseException)jjte000; 384*0c56280aSSorin Basca }} 385*0c56280aSSorin Basca } 386*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 387*0c56280aSSorin Basca {if (true) { 388*0c56280aSSorin Basca throw (RuntimeException)jjte000; 389*0c56280aSSorin Basca }} 390*0c56280aSSorin Basca } 391*0c56280aSSorin Basca {if (true) { 392*0c56280aSSorin Basca throw (Error)jjte000; 393*0c56280aSSorin Basca }} 394*0c56280aSSorin Basca } finally { 395*0c56280aSSorin Basca if (jjtc000) { 396*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 397*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 398*0c56280aSSorin Basca } 399*0c56280aSSorin Basca } 400*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 401*0c56280aSSorin Basca } 402*0c56280aSSorin Basca Term()403*0c56280aSSorin Basca static public void Term() throws ParseException { 404*0c56280aSSorin Basca /*@bgen(jjtree) Term */ 405*0c56280aSSorin Basca ASTTerm jjtn000 = new ASTTerm(JJTTERM); 406*0c56280aSSorin Basca boolean jjtc000 = true; 407*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 408*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);int kind=-1; 409*0c56280aSSorin Basca try { 410*0c56280aSSorin Basca Factor(); 411*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 412*0c56280aSSorin Basca case AND: 413*0c56280aSSorin Basca case MULT: 414*0c56280aSSorin Basca case MOD: 415*0c56280aSSorin Basca case DIV: 416*0c56280aSSorin Basca kind = MultOp(); 417*0c56280aSSorin Basca jjtn000.setKind(kind); 418*0c56280aSSorin Basca Term(); 419*0c56280aSSorin Basca break; 420*0c56280aSSorin Basca default: 421*0c56280aSSorin Basca jj_la1[9] = jj_gen; 422*0c56280aSSorin Basca } 423*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 424*0c56280aSSorin Basca jjtc000 = false; 425*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 426*0c56280aSSorin Basca jjtn000.setPosition(expr_token.beginLine, expr_token.beginColumn); 427*0c56280aSSorin Basca } catch (Throwable jjte000) { 428*0c56280aSSorin Basca if (jjtc000) { 429*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 430*0c56280aSSorin Basca jjtc000 = false; 431*0c56280aSSorin Basca } else { 432*0c56280aSSorin Basca jjtree.popNode(); 433*0c56280aSSorin Basca } 434*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 435*0c56280aSSorin Basca {if (true) { 436*0c56280aSSorin Basca throw (ParseException)jjte000; 437*0c56280aSSorin Basca }} 438*0c56280aSSorin Basca } 439*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 440*0c56280aSSorin Basca {if (true) { 441*0c56280aSSorin Basca throw (RuntimeException)jjte000; 442*0c56280aSSorin Basca }} 443*0c56280aSSorin Basca } 444*0c56280aSSorin Basca {if (true) { 445*0c56280aSSorin Basca throw (Error)jjte000; 446*0c56280aSSorin Basca }} 447*0c56280aSSorin Basca } finally { 448*0c56280aSSorin Basca if (jjtc000) { 449*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 450*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 451*0c56280aSSorin Basca } 452*0c56280aSSorin Basca } 453*0c56280aSSorin Basca } 454*0c56280aSSorin Basca Factor()455*0c56280aSSorin Basca static public void Factor() throws ParseException { 456*0c56280aSSorin Basca /*@bgen(jjtree) Factor */ 457*0c56280aSSorin Basca ASTFactor jjtn000 = new ASTFactor(JJTFACTOR); 458*0c56280aSSorin Basca boolean jjtc000 = true; 459*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 460*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);int kind=-1; 461*0c56280aSSorin Basca try { 462*0c56280aSSorin Basca Element(); 463*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 464*0c56280aSSorin Basca case GT: 465*0c56280aSSorin Basca case LT: 466*0c56280aSSorin Basca case GEQ: 467*0c56280aSSorin Basca case LEQ: 468*0c56280aSSorin Basca case EQ: 469*0c56280aSSorin Basca case NEQ: 470*0c56280aSSorin Basca kind = CmpOp(); 471*0c56280aSSorin Basca jjtn000.setKind(kind); 472*0c56280aSSorin Basca Factor(); 473*0c56280aSSorin Basca break; 474*0c56280aSSorin Basca default: 475*0c56280aSSorin Basca jj_la1[10] = jj_gen; 476*0c56280aSSorin Basca } 477*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 478*0c56280aSSorin Basca jjtc000 = false; 479*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 480*0c56280aSSorin Basca jjtn000.setPosition(expr_token.beginLine, expr_token.beginColumn); 481*0c56280aSSorin Basca } catch (Throwable jjte000) { 482*0c56280aSSorin Basca if (jjtc000) { 483*0c56280aSSorin Basca jjtree.clearNodeScope(jjtn000); 484*0c56280aSSorin Basca jjtc000 = false; 485*0c56280aSSorin Basca } else { 486*0c56280aSSorin Basca jjtree.popNode(); 487*0c56280aSSorin Basca } 488*0c56280aSSorin Basca if (jjte000 instanceof ParseException) { 489*0c56280aSSorin Basca {if (true) { 490*0c56280aSSorin Basca throw (ParseException)jjte000; 491*0c56280aSSorin Basca }} 492*0c56280aSSorin Basca } 493*0c56280aSSorin Basca if (jjte000 instanceof RuntimeException) { 494*0c56280aSSorin Basca {if (true) { 495*0c56280aSSorin Basca throw (RuntimeException)jjte000; 496*0c56280aSSorin Basca }} 497*0c56280aSSorin Basca } 498*0c56280aSSorin Basca {if (true) { 499*0c56280aSSorin Basca throw (Error)jjte000; 500*0c56280aSSorin Basca }} 501*0c56280aSSorin Basca } finally { 502*0c56280aSSorin Basca if (jjtc000) { 503*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 504*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 505*0c56280aSSorin Basca } 506*0c56280aSSorin Basca } 507*0c56280aSSorin Basca } 508*0c56280aSSorin Basca Element()509*0c56280aSSorin Basca static public void Element() throws ParseException { 510*0c56280aSSorin Basca if (jj_2_1(2)) { 511*0c56280aSSorin Basca expr_token = FunAppl(); 512*0c56280aSSorin Basca } else { 513*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 514*0c56280aSSorin Basca case FALSE: 515*0c56280aSSorin Basca case TRUE: 516*0c56280aSSorin Basca case READ: 517*0c56280aSSorin Basca case WRITE: 518*0c56280aSSorin Basca case IDENT: 519*0c56280aSSorin Basca expr_token = Ident(); 520*0c56280aSSorin Basca break; 521*0c56280aSSorin Basca case INTEGER: 522*0c56280aSSorin Basca expr_token = Integer(); 523*0c56280aSSorin Basca break; 524*0c56280aSSorin Basca case LPAREN: 525*0c56280aSSorin Basca expr_token = jj_consume_token(LPAREN); 526*0c56280aSSorin Basca Expr(); 527*0c56280aSSorin Basca jj_consume_token(RPAREN); 528*0c56280aSSorin Basca break; 529*0c56280aSSorin Basca default: 530*0c56280aSSorin Basca jj_la1[11] = jj_gen; 531*0c56280aSSorin Basca jj_consume_token(-1); 532*0c56280aSSorin Basca throw new ParseException(); 533*0c56280aSSorin Basca } 534*0c56280aSSorin Basca } 535*0c56280aSSorin Basca } 536*0c56280aSSorin Basca Integer()537*0c56280aSSorin Basca static public Token Integer() throws ParseException { 538*0c56280aSSorin Basca /*@bgen(jjtree) Integer */ 539*0c56280aSSorin Basca ASTInteger jjtn000 = new ASTInteger(JJTINTEGER); 540*0c56280aSSorin Basca boolean jjtc000 = true; 541*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 542*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t; 543*0c56280aSSorin Basca try { 544*0c56280aSSorin Basca t = jj_consume_token(INTEGER); 545*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 546*0c56280aSSorin Basca jjtc000 = false; 547*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 548*0c56280aSSorin Basca jjtn000.setValue(Integer.parseInt(t.image)); 549*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 550*0c56280aSSorin Basca {if (true) { 551*0c56280aSSorin Basca return t; 552*0c56280aSSorin Basca }} 553*0c56280aSSorin Basca } finally { 554*0c56280aSSorin Basca if (jjtc000) { 555*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 556*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 557*0c56280aSSorin Basca } 558*0c56280aSSorin Basca } 559*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 560*0c56280aSSorin Basca } 561*0c56280aSSorin Basca Ident()562*0c56280aSSorin Basca static public Token Ident() throws ParseException { 563*0c56280aSSorin Basca /*@bgen(jjtree) Ident */ 564*0c56280aSSorin Basca ASTIdent jjtn000 = new ASTIdent(JJTIDENT); 565*0c56280aSSorin Basca boolean jjtc000 = true; 566*0c56280aSSorin Basca jjtree.openNodeScope(jjtn000); 567*0c56280aSSorin Basca jjtreeOpenNodeScope(jjtn000);Token t; 568*0c56280aSSorin Basca try { 569*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 570*0c56280aSSorin Basca case TRUE: 571*0c56280aSSorin Basca t = jj_consume_token(TRUE); 572*0c56280aSSorin Basca break; 573*0c56280aSSorin Basca case FALSE: 574*0c56280aSSorin Basca t = jj_consume_token(FALSE); 575*0c56280aSSorin Basca break; 576*0c56280aSSorin Basca case READ: 577*0c56280aSSorin Basca t = jj_consume_token(READ); 578*0c56280aSSorin Basca break; 579*0c56280aSSorin Basca case WRITE: 580*0c56280aSSorin Basca t = jj_consume_token(WRITE); 581*0c56280aSSorin Basca break; 582*0c56280aSSorin Basca case IDENT: 583*0c56280aSSorin Basca t = jj_consume_token(IDENT); 584*0c56280aSSorin Basca break; 585*0c56280aSSorin Basca default: 586*0c56280aSSorin Basca jj_la1[12] = jj_gen; 587*0c56280aSSorin Basca jj_consume_token(-1); 588*0c56280aSSorin Basca throw new ParseException(); 589*0c56280aSSorin Basca } 590*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 591*0c56280aSSorin Basca jjtc000 = false; 592*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 593*0c56280aSSorin Basca jjtn000.setName(t.image); 594*0c56280aSSorin Basca jjtn000.setPosition(t.beginLine, t.beginColumn); 595*0c56280aSSorin Basca {if (true) { 596*0c56280aSSorin Basca return t; 597*0c56280aSSorin Basca }} 598*0c56280aSSorin Basca } finally { 599*0c56280aSSorin Basca if (jjtc000) { 600*0c56280aSSorin Basca jjtree.closeNodeScope(jjtn000, true); 601*0c56280aSSorin Basca jjtreeCloseNodeScope(jjtn000); 602*0c56280aSSorin Basca } 603*0c56280aSSorin Basca } 604*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 605*0c56280aSSorin Basca } 606*0c56280aSSorin Basca AddOp()607*0c56280aSSorin Basca static public int AddOp() throws ParseException { 608*0c56280aSSorin Basca Token t=null; 609*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 610*0c56280aSSorin Basca case PLUS: 611*0c56280aSSorin Basca t = jj_consume_token(PLUS); 612*0c56280aSSorin Basca break; 613*0c56280aSSorin Basca case MINUS: 614*0c56280aSSorin Basca t = jj_consume_token(MINUS); 615*0c56280aSSorin Basca break; 616*0c56280aSSorin Basca case OR: 617*0c56280aSSorin Basca t = jj_consume_token(OR); 618*0c56280aSSorin Basca break; 619*0c56280aSSorin Basca default: 620*0c56280aSSorin Basca jj_la1[13] = jj_gen; 621*0c56280aSSorin Basca jj_consume_token(-1); 622*0c56280aSSorin Basca throw new ParseException(); 623*0c56280aSSorin Basca } 624*0c56280aSSorin Basca {if (true) { 625*0c56280aSSorin Basca return t.kind; 626*0c56280aSSorin Basca }} 627*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 628*0c56280aSSorin Basca } 629*0c56280aSSorin Basca MultOp()630*0c56280aSSorin Basca static public int MultOp() throws ParseException { 631*0c56280aSSorin Basca Token t=null; 632*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 633*0c56280aSSorin Basca case MULT: 634*0c56280aSSorin Basca t = jj_consume_token(MULT); 635*0c56280aSSorin Basca break; 636*0c56280aSSorin Basca case DIV: 637*0c56280aSSorin Basca t = jj_consume_token(DIV); 638*0c56280aSSorin Basca break; 639*0c56280aSSorin Basca case MOD: 640*0c56280aSSorin Basca t = jj_consume_token(MOD); 641*0c56280aSSorin Basca break; 642*0c56280aSSorin Basca case AND: 643*0c56280aSSorin Basca t = jj_consume_token(AND); 644*0c56280aSSorin Basca break; 645*0c56280aSSorin Basca default: 646*0c56280aSSorin Basca jj_la1[14] = jj_gen; 647*0c56280aSSorin Basca jj_consume_token(-1); 648*0c56280aSSorin Basca throw new ParseException(); 649*0c56280aSSorin Basca } 650*0c56280aSSorin Basca {if (true) { 651*0c56280aSSorin Basca return t.kind; 652*0c56280aSSorin Basca }} 653*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 654*0c56280aSSorin Basca } 655*0c56280aSSorin Basca CmpOp()656*0c56280aSSorin Basca static public int CmpOp() throws ParseException { 657*0c56280aSSorin Basca Token t=null; 658*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 659*0c56280aSSorin Basca case EQ: 660*0c56280aSSorin Basca t = jj_consume_token(EQ); 661*0c56280aSSorin Basca break; 662*0c56280aSSorin Basca case NEQ: 663*0c56280aSSorin Basca t = jj_consume_token(NEQ); 664*0c56280aSSorin Basca break; 665*0c56280aSSorin Basca case LEQ: 666*0c56280aSSorin Basca t = jj_consume_token(LEQ); 667*0c56280aSSorin Basca break; 668*0c56280aSSorin Basca case GEQ: 669*0c56280aSSorin Basca t = jj_consume_token(GEQ); 670*0c56280aSSorin Basca break; 671*0c56280aSSorin Basca case GT: 672*0c56280aSSorin Basca t = jj_consume_token(GT); 673*0c56280aSSorin Basca break; 674*0c56280aSSorin Basca case LT: 675*0c56280aSSorin Basca t = jj_consume_token(LT); 676*0c56280aSSorin Basca break; 677*0c56280aSSorin Basca default: 678*0c56280aSSorin Basca jj_la1[15] = jj_gen; 679*0c56280aSSorin Basca jj_consume_token(-1); 680*0c56280aSSorin Basca throw new ParseException(); 681*0c56280aSSorin Basca } 682*0c56280aSSorin Basca {if (true) { 683*0c56280aSSorin Basca return t.kind; 684*0c56280aSSorin Basca }} 685*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 686*0c56280aSSorin Basca } 687*0c56280aSSorin Basca UnOp()688*0c56280aSSorin Basca static final public int UnOp() throws ParseException { 689*0c56280aSSorin Basca Token t=null; 690*0c56280aSSorin Basca switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 691*0c56280aSSorin Basca case MINUS: 692*0c56280aSSorin Basca t = jj_consume_token(MINUS); 693*0c56280aSSorin Basca break; 694*0c56280aSSorin Basca case NOT: 695*0c56280aSSorin Basca t = jj_consume_token(NOT); 696*0c56280aSSorin Basca break; 697*0c56280aSSorin Basca default: 698*0c56280aSSorin Basca jj_la1[16] = jj_gen; 699*0c56280aSSorin Basca jj_consume_token(-1); 700*0c56280aSSorin Basca throw new ParseException(); 701*0c56280aSSorin Basca } 702*0c56280aSSorin Basca {if (true) { 703*0c56280aSSorin Basca return t.kind; 704*0c56280aSSorin Basca }} 705*0c56280aSSorin Basca throw new Error("Missing return statement in function"); 706*0c56280aSSorin Basca } 707*0c56280aSSorin Basca jj_2_1(int xla)708*0c56280aSSorin Basca static private boolean jj_2_1(int xla) { 709*0c56280aSSorin Basca jj_la = xla; jj_lastpos = jj_scanpos = token; 710*0c56280aSSorin Basca boolean retval = !jj_3_1(); 711*0c56280aSSorin Basca jj_save(0, xla); 712*0c56280aSSorin Basca return retval; 713*0c56280aSSorin Basca } 714*0c56280aSSorin Basca jj_3R_8()715*0c56280aSSorin Basca static private boolean jj_3R_8() { 716*0c56280aSSorin Basca if (jj_scan_token(FALSE)) { 717*0c56280aSSorin Basca return true; 718*0c56280aSSorin Basca } 719*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 720*0c56280aSSorin Basca return false; 721*0c56280aSSorin Basca } 722*0c56280aSSorin Basca return false; 723*0c56280aSSorin Basca } 724*0c56280aSSorin Basca jj_3R_11()725*0c56280aSSorin Basca static private boolean jj_3R_11() { 726*0c56280aSSorin Basca if (jj_scan_token(IDENT)) { 727*0c56280aSSorin Basca return true; 728*0c56280aSSorin Basca } 729*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 730*0c56280aSSorin Basca return false; 731*0c56280aSSorin Basca } 732*0c56280aSSorin Basca return false; 733*0c56280aSSorin Basca } 734*0c56280aSSorin Basca jj_3R_7()735*0c56280aSSorin Basca static private boolean jj_3R_7() { 736*0c56280aSSorin Basca if (jj_scan_token(TRUE)) { 737*0c56280aSSorin Basca return true; 738*0c56280aSSorin Basca } 739*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 740*0c56280aSSorin Basca return false; 741*0c56280aSSorin Basca } 742*0c56280aSSorin Basca return false; 743*0c56280aSSorin Basca } 744*0c56280aSSorin Basca jj_3R_6()745*0c56280aSSorin Basca static private boolean jj_3R_6() { 746*0c56280aSSorin Basca Token xsp; 747*0c56280aSSorin Basca xsp = jj_scanpos; 748*0c56280aSSorin Basca if (jj_3R_7()) { 749*0c56280aSSorin Basca jj_scanpos = xsp; 750*0c56280aSSorin Basca if (jj_3R_8()) { 751*0c56280aSSorin Basca jj_scanpos = xsp; 752*0c56280aSSorin Basca if (jj_3R_9()) { 753*0c56280aSSorin Basca jj_scanpos = xsp; 754*0c56280aSSorin Basca if (jj_3R_10()) { 755*0c56280aSSorin Basca jj_scanpos = xsp; 756*0c56280aSSorin Basca if (jj_3R_11()) { 757*0c56280aSSorin Basca return true; 758*0c56280aSSorin Basca } 759*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 760*0c56280aSSorin Basca return false; 761*0c56280aSSorin Basca } 762*0c56280aSSorin Basca } else if (jj_la == 0 && jj_scanpos == jj_lastpos) { 763*0c56280aSSorin Basca return false; 764*0c56280aSSorin Basca } 765*0c56280aSSorin Basca } else if (jj_la == 0 && jj_scanpos == jj_lastpos) { 766*0c56280aSSorin Basca return false; 767*0c56280aSSorin Basca } 768*0c56280aSSorin Basca } else if (jj_la == 0 && jj_scanpos == jj_lastpos) { 769*0c56280aSSorin Basca return false; 770*0c56280aSSorin Basca } 771*0c56280aSSorin Basca } else if (jj_la == 0 && jj_scanpos == jj_lastpos) { 772*0c56280aSSorin Basca return false; 773*0c56280aSSorin Basca } 774*0c56280aSSorin Basca return false; 775*0c56280aSSorin Basca } 776*0c56280aSSorin Basca jj_3_1()777*0c56280aSSorin Basca static private boolean jj_3_1() { 778*0c56280aSSorin Basca if (jj_3R_5()) { 779*0c56280aSSorin Basca return true; 780*0c56280aSSorin Basca } 781*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 782*0c56280aSSorin Basca return false; 783*0c56280aSSorin Basca } 784*0c56280aSSorin Basca return false; 785*0c56280aSSorin Basca } 786*0c56280aSSorin Basca jj_3R_5()787*0c56280aSSorin Basca static private boolean jj_3R_5() { 788*0c56280aSSorin Basca if (jj_3R_6()) { 789*0c56280aSSorin Basca return true; 790*0c56280aSSorin Basca } 791*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 792*0c56280aSSorin Basca return false; 793*0c56280aSSorin Basca } 794*0c56280aSSorin Basca if (jj_scan_token(LPAREN)) { 795*0c56280aSSorin Basca return true; 796*0c56280aSSorin Basca } 797*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 798*0c56280aSSorin Basca return false; 799*0c56280aSSorin Basca } 800*0c56280aSSorin Basca return false; 801*0c56280aSSorin Basca } 802*0c56280aSSorin Basca jj_3R_10()803*0c56280aSSorin Basca static private boolean jj_3R_10() { 804*0c56280aSSorin Basca if (jj_scan_token(WRITE)) { 805*0c56280aSSorin Basca return true; 806*0c56280aSSorin Basca } 807*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 808*0c56280aSSorin Basca return false; 809*0c56280aSSorin Basca } 810*0c56280aSSorin Basca return false; 811*0c56280aSSorin Basca } 812*0c56280aSSorin Basca jj_3R_9()813*0c56280aSSorin Basca static private boolean jj_3R_9() { 814*0c56280aSSorin Basca if (jj_scan_token(READ)) { 815*0c56280aSSorin Basca return true; 816*0c56280aSSorin Basca } 817*0c56280aSSorin Basca if (jj_la == 0 && jj_scanpos == jj_lastpos) { 818*0c56280aSSorin Basca return false; 819*0c56280aSSorin Basca } 820*0c56280aSSorin Basca return false; 821*0c56280aSSorin Basca } 822*0c56280aSSorin Basca 823*0c56280aSSorin Basca static private boolean jj_initialized_once = false; 824*0c56280aSSorin Basca static public MiniParserTokenManager token_source; 825*0c56280aSSorin Basca static ASCII_CharStream jj_input_stream; 826*0c56280aSSorin Basca static public Token token, jj_nt; 827*0c56280aSSorin Basca static private int jj_ntk; 828*0c56280aSSorin Basca static private Token jj_scanpos, jj_lastpos; 829*0c56280aSSorin Basca static private int jj_la; 830*0c56280aSSorin Basca static public boolean lookingAhead = false; 831*0c56280aSSorin Basca // static private boolean jj_semLA; 832*0c56280aSSorin Basca static private int jj_gen; 833*0c56280aSSorin Basca static final private int[] jj_la1 = new int[17]; 834*0c56280aSSorin Basca static final private int[] jj_la1_0 = {0x200,0x0,0x1800000,0x1c000000,0x11c04400,0x1000,0x1800000,0x0,0x11c04400, 835*0c56280aSSorin Basca 0xe2000000,0x3f0000,0x1800000,0x1800000,0x1c000000,0xe2000000,0x3f0000,0x10400000,}; 836*0c56280aSSorin Basca static final private int[] jj_la1_1 = {0x0,0x8,0x130,0x0,0x331,0x0,0x130,0x8,0x331,0x0,0x0,0x331,0x130,0x0,0x0,0x0,0x0,}; 837*0c56280aSSorin Basca static final private JJCalls[] jj_2_rtns = new JJCalls[1]; 838*0c56280aSSorin Basca static private boolean jj_rescan = false; 839*0c56280aSSorin Basca static private int jj_gc = 0; 840*0c56280aSSorin Basca MiniParser(java.io.InputStream stream)841*0c56280aSSorin Basca public MiniParser(java.io.InputStream stream) { 842*0c56280aSSorin Basca if (jj_initialized_once) { 843*0c56280aSSorin Basca System.out.println("ERROR: Second call to constructor of static parser. You must"); 844*0c56280aSSorin Basca System.out.println(" either use ReInit() or set the JavaCC option STATIC to false"); 845*0c56280aSSorin Basca System.out.println(" during parser generation."); 846*0c56280aSSorin Basca throw new Error(); 847*0c56280aSSorin Basca } 848*0c56280aSSorin Basca jj_initialized_once = true; 849*0c56280aSSorin Basca jj_input_stream = new ASCII_CharStream(stream, 1, 1); 850*0c56280aSSorin Basca token_source = new MiniParserTokenManager(jj_input_stream); 851*0c56280aSSorin Basca token = new Token(); 852*0c56280aSSorin Basca jj_ntk = -1; 853*0c56280aSSorin Basca jj_gen = 0; 854*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 855*0c56280aSSorin Basca jj_la1[i] = -1; 856*0c56280aSSorin Basca } 857*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 858*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 859*0c56280aSSorin Basca } 860*0c56280aSSorin Basca } 861*0c56280aSSorin Basca ReInit(java.io.InputStream stream)862*0c56280aSSorin Basca static public void ReInit(java.io.InputStream stream) { 863*0c56280aSSorin Basca ASCII_CharStream.ReInit(stream, 1, 1); 864*0c56280aSSorin Basca MiniParserTokenManager.ReInit(jj_input_stream); 865*0c56280aSSorin Basca token = new Token(); 866*0c56280aSSorin Basca jj_ntk = -1; 867*0c56280aSSorin Basca jjtree.reset(); 868*0c56280aSSorin Basca jj_gen = 0; 869*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 870*0c56280aSSorin Basca jj_la1[i] = -1; 871*0c56280aSSorin Basca } 872*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 873*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 874*0c56280aSSorin Basca } 875*0c56280aSSorin Basca } 876*0c56280aSSorin Basca MiniParser(java.io.Reader stream)877*0c56280aSSorin Basca public MiniParser(java.io.Reader stream) { 878*0c56280aSSorin Basca if (jj_initialized_once) { 879*0c56280aSSorin Basca System.out.println("ERROR: Second call to constructor of static parser. You must"); 880*0c56280aSSorin Basca System.out.println(" either use ReInit() or set the JavaCC option STATIC to false"); 881*0c56280aSSorin Basca System.out.println(" during parser generation."); 882*0c56280aSSorin Basca throw new Error(); 883*0c56280aSSorin Basca } 884*0c56280aSSorin Basca jj_initialized_once = true; 885*0c56280aSSorin Basca jj_input_stream = new ASCII_CharStream(stream, 1, 1); 886*0c56280aSSorin Basca token_source = new MiniParserTokenManager(jj_input_stream); 887*0c56280aSSorin Basca token = new Token(); 888*0c56280aSSorin Basca jj_ntk = -1; 889*0c56280aSSorin Basca jj_gen = 0; 890*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 891*0c56280aSSorin Basca jj_la1[i] = -1; 892*0c56280aSSorin Basca } 893*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 894*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 895*0c56280aSSorin Basca } 896*0c56280aSSorin Basca } 897*0c56280aSSorin Basca ReInit(java.io.Reader stream)898*0c56280aSSorin Basca static public void ReInit(java.io.Reader stream) { 899*0c56280aSSorin Basca ASCII_CharStream.ReInit(stream, 1, 1); 900*0c56280aSSorin Basca MiniParserTokenManager.ReInit(jj_input_stream); 901*0c56280aSSorin Basca token = new Token(); 902*0c56280aSSorin Basca jj_ntk = -1; 903*0c56280aSSorin Basca jjtree.reset(); 904*0c56280aSSorin Basca jj_gen = 0; 905*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 906*0c56280aSSorin Basca jj_la1[i] = -1; 907*0c56280aSSorin Basca } 908*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 909*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 910*0c56280aSSorin Basca } 911*0c56280aSSorin Basca } 912*0c56280aSSorin Basca MiniParser(MiniParserTokenManager tm)913*0c56280aSSorin Basca public MiniParser(MiniParserTokenManager tm) { 914*0c56280aSSorin Basca if (jj_initialized_once) { 915*0c56280aSSorin Basca System.out.println("ERROR: Second call to constructor of static parser. You must"); 916*0c56280aSSorin Basca System.out.println(" either use ReInit() or set the JavaCC option STATIC to false"); 917*0c56280aSSorin Basca System.out.println(" during parser generation."); 918*0c56280aSSorin Basca throw new Error(); 919*0c56280aSSorin Basca } 920*0c56280aSSorin Basca jj_initialized_once = true; 921*0c56280aSSorin Basca token_source = tm; 922*0c56280aSSorin Basca token = new Token(); 923*0c56280aSSorin Basca jj_ntk = -1; 924*0c56280aSSorin Basca jj_gen = 0; 925*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 926*0c56280aSSorin Basca jj_la1[i] = -1; 927*0c56280aSSorin Basca } 928*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 929*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 930*0c56280aSSorin Basca } 931*0c56280aSSorin Basca } 932*0c56280aSSorin Basca ReInit(MiniParserTokenManager tm)933*0c56280aSSorin Basca public void ReInit(MiniParserTokenManager tm) { 934*0c56280aSSorin Basca token_source = tm; 935*0c56280aSSorin Basca token = new Token(); 936*0c56280aSSorin Basca jj_ntk = -1; 937*0c56280aSSorin Basca jjtree.reset(); 938*0c56280aSSorin Basca jj_gen = 0; 939*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 940*0c56280aSSorin Basca jj_la1[i] = -1; 941*0c56280aSSorin Basca } 942*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 943*0c56280aSSorin Basca jj_2_rtns[i] = new JJCalls(); 944*0c56280aSSorin Basca } 945*0c56280aSSorin Basca } 946*0c56280aSSorin Basca jj_consume_token(int kind)947*0c56280aSSorin Basca static private Token jj_consume_token(int kind) throws ParseException { 948*0c56280aSSorin Basca Token oldToken; 949*0c56280aSSorin Basca if ((oldToken = token).next != null) { 950*0c56280aSSorin Basca token = token.next; 951*0c56280aSSorin Basca } else { 952*0c56280aSSorin Basca token = token.next = MiniParserTokenManager.getNextToken(); 953*0c56280aSSorin Basca } 954*0c56280aSSorin Basca jj_ntk = -1; 955*0c56280aSSorin Basca if (token.kind == kind) { 956*0c56280aSSorin Basca jj_gen++; 957*0c56280aSSorin Basca if (++jj_gc > 100) { 958*0c56280aSSorin Basca jj_gc = 0; 959*0c56280aSSorin Basca for (int i = 0; i < jj_2_rtns.length; i++) { 960*0c56280aSSorin Basca JJCalls c = jj_2_rtns[i]; 961*0c56280aSSorin Basca while (c != null) { 962*0c56280aSSorin Basca if (c.gen < jj_gen) { 963*0c56280aSSorin Basca c.first = null; 964*0c56280aSSorin Basca } 965*0c56280aSSorin Basca c = c.next; 966*0c56280aSSorin Basca } 967*0c56280aSSorin Basca } 968*0c56280aSSorin Basca } 969*0c56280aSSorin Basca return token; 970*0c56280aSSorin Basca } 971*0c56280aSSorin Basca token = oldToken; 972*0c56280aSSorin Basca jj_kind = kind; 973*0c56280aSSorin Basca throw generateParseException(); 974*0c56280aSSorin Basca } 975*0c56280aSSorin Basca jj_scan_token(int kind)976*0c56280aSSorin Basca static private boolean jj_scan_token(int kind) { 977*0c56280aSSorin Basca if (jj_scanpos == jj_lastpos) { 978*0c56280aSSorin Basca jj_la--; 979*0c56280aSSorin Basca if (jj_scanpos.next == null) { 980*0c56280aSSorin Basca jj_lastpos = jj_scanpos = jj_scanpos.next = MiniParserTokenManager.getNextToken(); 981*0c56280aSSorin Basca } else { 982*0c56280aSSorin Basca jj_lastpos = jj_scanpos = jj_scanpos.next; 983*0c56280aSSorin Basca } 984*0c56280aSSorin Basca } else { 985*0c56280aSSorin Basca jj_scanpos = jj_scanpos.next; 986*0c56280aSSorin Basca } 987*0c56280aSSorin Basca if (jj_rescan) { 988*0c56280aSSorin Basca int i = 0; Token tok = token; 989*0c56280aSSorin Basca while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } 990*0c56280aSSorin Basca if (tok != null) { 991*0c56280aSSorin Basca jj_add_error_token(kind, i); 992*0c56280aSSorin Basca } 993*0c56280aSSorin Basca } 994*0c56280aSSorin Basca return (jj_scanpos.kind != kind); 995*0c56280aSSorin Basca } 996*0c56280aSSorin Basca getNextToken()997*0c56280aSSorin Basca static public Token getNextToken() { 998*0c56280aSSorin Basca if (token.next != null) { 999*0c56280aSSorin Basca token = token.next; 1000*0c56280aSSorin Basca } else { 1001*0c56280aSSorin Basca token = token.next = MiniParserTokenManager.getNextToken(); 1002*0c56280aSSorin Basca } 1003*0c56280aSSorin Basca jj_ntk = -1; 1004*0c56280aSSorin Basca jj_gen++; 1005*0c56280aSSorin Basca return token; 1006*0c56280aSSorin Basca } 1007*0c56280aSSorin Basca getToken(int index)1008*0c56280aSSorin Basca static public Token getToken(int index) { 1009*0c56280aSSorin Basca Token t = lookingAhead ? jj_scanpos : token; 1010*0c56280aSSorin Basca for (int i = 0; i < index; i++) { 1011*0c56280aSSorin Basca if (t.next != null) { 1012*0c56280aSSorin Basca t = t.next; 1013*0c56280aSSorin Basca } else { 1014*0c56280aSSorin Basca t = t.next = MiniParserTokenManager.getNextToken(); 1015*0c56280aSSorin Basca } 1016*0c56280aSSorin Basca } 1017*0c56280aSSorin Basca return t; 1018*0c56280aSSorin Basca } 1019*0c56280aSSorin Basca jj_ntk()1020*0c56280aSSorin Basca static private int jj_ntk() { 1021*0c56280aSSorin Basca if ((jj_nt=token.next) == null) { 1022*0c56280aSSorin Basca return (jj_ntk = (token.next=MiniParserTokenManager.getNextToken()).kind); 1023*0c56280aSSorin Basca } else { 1024*0c56280aSSorin Basca return (jj_ntk = jj_nt.kind); 1025*0c56280aSSorin Basca } 1026*0c56280aSSorin Basca } 1027*0c56280aSSorin Basca 1028*0c56280aSSorin Basca static private java.util.Vector<int[]> jj_expentries = new java.util.Vector<int[]>(); 1029*0c56280aSSorin Basca static private int[] jj_expentry; 1030*0c56280aSSorin Basca static private int jj_kind = -1; 1031*0c56280aSSorin Basca static private int[] jj_lasttokens = new int[100]; 1032*0c56280aSSorin Basca static private int jj_endpos; 1033*0c56280aSSorin Basca jj_add_error_token(int kind, int pos)1034*0c56280aSSorin Basca static private void jj_add_error_token(int kind, int pos) { 1035*0c56280aSSorin Basca if (pos >= 100) { 1036*0c56280aSSorin Basca return; 1037*0c56280aSSorin Basca } 1038*0c56280aSSorin Basca if (pos == jj_endpos + 1) { 1039*0c56280aSSorin Basca jj_lasttokens[jj_endpos++] = kind; 1040*0c56280aSSorin Basca } else if (jj_endpos != 0) { 1041*0c56280aSSorin Basca jj_expentry = new int[jj_endpos]; 1042*0c56280aSSorin Basca for (int i = 0; i < jj_endpos; i++) { 1043*0c56280aSSorin Basca jj_expentry[i] = jj_lasttokens[i]; 1044*0c56280aSSorin Basca } 1045*0c56280aSSorin Basca boolean exists = false; 1046*0c56280aSSorin Basca for (java.util.Enumeration<int[]> e = jj_expentries.elements(); e.hasMoreElements();) { 1047*0c56280aSSorin Basca int[] oldentry = (e.nextElement()); 1048*0c56280aSSorin Basca if (oldentry.length == jj_expentry.length) { 1049*0c56280aSSorin Basca exists = true; 1050*0c56280aSSorin Basca for (int i = 0; i < jj_expentry.length; i++) { 1051*0c56280aSSorin Basca if (oldentry[i] != jj_expentry[i]) { 1052*0c56280aSSorin Basca exists = false; 1053*0c56280aSSorin Basca break; 1054*0c56280aSSorin Basca } 1055*0c56280aSSorin Basca } 1056*0c56280aSSorin Basca if (exists) { 1057*0c56280aSSorin Basca break; 1058*0c56280aSSorin Basca } 1059*0c56280aSSorin Basca } 1060*0c56280aSSorin Basca } 1061*0c56280aSSorin Basca if (!exists) { 1062*0c56280aSSorin Basca jj_expentries.addElement(jj_expentry); 1063*0c56280aSSorin Basca } 1064*0c56280aSSorin Basca if (pos != 0) { 1065*0c56280aSSorin Basca jj_lasttokens[(jj_endpos = pos) - 1] = kind; 1066*0c56280aSSorin Basca } 1067*0c56280aSSorin Basca } 1068*0c56280aSSorin Basca } 1069*0c56280aSSorin Basca generateParseException()1070*0c56280aSSorin Basca static public ParseException generateParseException() { 1071*0c56280aSSorin Basca jj_expentries.removeAllElements(); 1072*0c56280aSSorin Basca boolean[] la1tokens = new boolean[43]; 1073*0c56280aSSorin Basca for (int i = 0; i < 43; i++) { 1074*0c56280aSSorin Basca la1tokens[i] = false; 1075*0c56280aSSorin Basca } 1076*0c56280aSSorin Basca if (jj_kind >= 0) { 1077*0c56280aSSorin Basca la1tokens[jj_kind] = true; 1078*0c56280aSSorin Basca jj_kind = -1; 1079*0c56280aSSorin Basca } 1080*0c56280aSSorin Basca for (int i = 0; i < 17; i++) { 1081*0c56280aSSorin Basca if (jj_la1[i] == jj_gen) { 1082*0c56280aSSorin Basca for (int j = 0; j < 32; j++) { 1083*0c56280aSSorin Basca if ((jj_la1_0[i] & (1<<j)) != 0) { 1084*0c56280aSSorin Basca la1tokens[j] = true; 1085*0c56280aSSorin Basca } 1086*0c56280aSSorin Basca if ((jj_la1_1[i] & (1<<j)) != 0) { 1087*0c56280aSSorin Basca la1tokens[32+j] = true; 1088*0c56280aSSorin Basca } 1089*0c56280aSSorin Basca } 1090*0c56280aSSorin Basca } 1091*0c56280aSSorin Basca } 1092*0c56280aSSorin Basca for (int i = 0; i < 43; i++) { 1093*0c56280aSSorin Basca if (la1tokens[i]) { 1094*0c56280aSSorin Basca jj_expentry = new int[1]; 1095*0c56280aSSorin Basca jj_expentry[0] = i; 1096*0c56280aSSorin Basca jj_expentries.addElement(jj_expentry); 1097*0c56280aSSorin Basca } 1098*0c56280aSSorin Basca } 1099*0c56280aSSorin Basca jj_endpos = 0; 1100*0c56280aSSorin Basca jj_rescan_token(); 1101*0c56280aSSorin Basca jj_add_error_token(0, 0); 1102*0c56280aSSorin Basca int[][] exptokseq = new int[jj_expentries.size()][]; 1103*0c56280aSSorin Basca for (int i = 0; i < jj_expentries.size(); i++) { 1104*0c56280aSSorin Basca exptokseq[i] = jj_expentries.elementAt(i); 1105*0c56280aSSorin Basca } 1106*0c56280aSSorin Basca return new ParseException(token, exptokseq, tokenImage); 1107*0c56280aSSorin Basca } 1108*0c56280aSSorin Basca enable_tracing()1109*0c56280aSSorin Basca static public void enable_tracing() { 1110*0c56280aSSorin Basca } 1111*0c56280aSSorin Basca disable_tracing()1112*0c56280aSSorin Basca static public void disable_tracing() { 1113*0c56280aSSorin Basca } 1114*0c56280aSSorin Basca jj_rescan_token()1115*0c56280aSSorin Basca static private void jj_rescan_token() { 1116*0c56280aSSorin Basca jj_rescan = true; 1117*0c56280aSSorin Basca for (int i = 0; i < 1; i++) { 1118*0c56280aSSorin Basca JJCalls p = jj_2_rtns[i]; 1119*0c56280aSSorin Basca do { 1120*0c56280aSSorin Basca if (p.gen > jj_gen) { 1121*0c56280aSSorin Basca jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; 1122*0c56280aSSorin Basca switch (i) { 1123*0c56280aSSorin Basca case 0: jj_3_1(); break; 1124*0c56280aSSorin Basca } 1125*0c56280aSSorin Basca } 1126*0c56280aSSorin Basca p = p.next; 1127*0c56280aSSorin Basca } while (p != null); 1128*0c56280aSSorin Basca } 1129*0c56280aSSorin Basca jj_rescan = false; 1130*0c56280aSSorin Basca } 1131*0c56280aSSorin Basca jj_save(int index, int xla)1132*0c56280aSSorin Basca static private void jj_save(int index, int xla) { 1133*0c56280aSSorin Basca JJCalls p = jj_2_rtns[index]; 1134*0c56280aSSorin Basca while (p.gen > jj_gen) { 1135*0c56280aSSorin Basca if (p.next == null) { p = p.next = new JJCalls(); break; } 1136*0c56280aSSorin Basca p = p.next; 1137*0c56280aSSorin Basca } 1138*0c56280aSSorin Basca p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; 1139*0c56280aSSorin Basca } 1140*0c56280aSSorin Basca 1141*0c56280aSSorin Basca private static final class JJCalls { 1142*0c56280aSSorin Basca int gen; 1143*0c56280aSSorin Basca Token first; 1144*0c56280aSSorin Basca int arg; 1145*0c56280aSSorin Basca JJCalls next; 1146*0c56280aSSorin Basca } 1147*0c56280aSSorin Basca 1148*0c56280aSSorin Basca } 1149