xref: /aosp_15_r20/external/apache-commons-bcel/src/examples/Mini/MiniParser.java (revision 0c56280ab0842982c46a149f7b9eaa497e31e292)
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