001    /* Generated By:JJTree&JavaCC: Do not edit this line. Parser.java */
002    package org.apache.commons.jexl2.parser;
003    
004    import java.io.Reader;
005    import org.apache.commons.jexl2.JexlInfo;
006    
007    public class Parser extends JexlParser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
008      protected JJTParserState jjtree = new JJTParserState();public boolean ALLOW_REGISTERS = false;
009    
010        public ASTJexlScript parse(Reader reader, JexlInfo info)
011            throws ParseException {
012            /*
013             * If registers are allowed, the default parser state has to be REGISTERS.
014             */
015            if (ALLOW_REGISTERS) {
016                token_source.defaultLexState = REGISTERS;
017            }
018            ReInit(reader);
019            /*
020             *  lets do the 'Unique Init' in here to be
021             *  safe - it's a pain to remember
022             */
023    
024            ASTJexlScript tree = JexlScript();
025            tree.value = info;
026            return tree;
027        }
028    
029    /***************************************
030     *      Statements
031     ***************************************/
032      final public ASTJexlScript JexlScript() throws ParseException {
033                                  /*@bgen(jjtree) JexlScript */
034      ASTJexlScript jjtn000 = new ASTJexlScript(JJTJEXLSCRIPT);
035      boolean jjtc000 = true;
036      jjtree.openNodeScope(jjtn000);
037      jjtreeOpenNodeScope(jjtn000);
038        try {
039          label_1:
040          while (true) {
041            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
042            case IF:
043            case FOR:
044            case FOREACH:
045            case WHILE:
046            case NEW:
047            case VAR:
048            case EMPTY:
049            case SIZE:
050            case NULL:
051            case TRUE:
052            case FALSE:
053            case RETURN:
054            case LPAREN:
055            case LCURLY:
056            case LBRACKET:
057            case SEMICOL:
058            case not:
059            case minus:
060            case tilda:
061            case IDENTIFIER:
062            case REGISTER:
063            case INTEGER_LITERAL:
064            case FLOAT_LITERAL:
065            case STRING_LITERAL:
066              ;
067              break;
068            default:
069              jj_la1[0] = jj_gen;
070              break label_1;
071            }
072            Statement();
073          }
074          jj_consume_token(0);
075         jjtree.closeNodeScope(jjtn000, true);
076         jjtc000 = false;
077         jjtreeCloseNodeScope(jjtn000);
078         {if (true) return jjtn000;}
079        } catch (Throwable jjte000) {
080         if (jjtc000) {
081           jjtree.clearNodeScope(jjtn000);
082           jjtc000 = false;
083         } else {
084           jjtree.popNode();
085         }
086         if (jjte000 instanceof RuntimeException) {
087           {if (true) throw (RuntimeException)jjte000;}
088         }
089         if (jjte000 instanceof ParseException) {
090           {if (true) throw (ParseException)jjte000;}
091         }
092         {if (true) throw (Error)jjte000;}
093        } finally {
094         if (jjtc000) {
095           jjtree.closeNodeScope(jjtn000, true);
096           jjtreeCloseNodeScope(jjtn000);
097         }
098        }
099        throw new Error("Missing return statement in function");
100      }
101    
102      final public void Statement() throws ParseException {
103        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
104        case SEMICOL:
105          jj_consume_token(SEMICOL);
106          break;
107        default:
108          jj_la1[1] = jj_gen;
109          if (jj_2_1(3)) {
110            Block();
111          } else {
112            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
113            case IF:
114              IfStatement();
115              break;
116            case FOR:
117            case FOREACH:
118              ForeachStatement();
119              break;
120            case WHILE:
121              WhileStatement();
122              break;
123            case NEW:
124            case EMPTY:
125            case SIZE:
126            case NULL:
127            case TRUE:
128            case FALSE:
129            case LPAREN:
130            case LCURLY:
131            case LBRACKET:
132            case not:
133            case minus:
134            case tilda:
135            case IDENTIFIER:
136            case REGISTER:
137            case INTEGER_LITERAL:
138            case FLOAT_LITERAL:
139            case STRING_LITERAL:
140              ExpressionStatement();
141              break;
142            case RETURN:
143              ReturnStatement();
144              break;
145            case VAR:
146              Var();
147              break;
148            default:
149              jj_la1[2] = jj_gen;
150              jj_consume_token(-1);
151              throw new ParseException();
152            }
153          }
154        }
155      }
156    
157      final public void Block() throws ParseException {
158                           /*@bgen(jjtree) Block */
159      ASTBlock jjtn000 = new ASTBlock(JJTBLOCK);
160      boolean jjtc000 = true;
161      jjtree.openNodeScope(jjtn000);
162      jjtreeOpenNodeScope(jjtn000);
163        try {
164          jj_consume_token(LCURLY);
165          label_2:
166          while (true) {
167            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
168            case IF:
169            case FOR:
170            case FOREACH:
171            case WHILE:
172            case NEW:
173            case VAR:
174            case EMPTY:
175            case SIZE:
176            case NULL:
177            case TRUE:
178            case FALSE:
179            case RETURN:
180            case LPAREN:
181            case LCURLY:
182            case LBRACKET:
183            case SEMICOL:
184            case not:
185            case minus:
186            case tilda:
187            case IDENTIFIER:
188            case REGISTER:
189            case INTEGER_LITERAL:
190            case FLOAT_LITERAL:
191            case STRING_LITERAL:
192              ;
193              break;
194            default:
195              jj_la1[3] = jj_gen;
196              break label_2;
197            }
198            Statement();
199          }
200          jj_consume_token(RCURLY);
201        } catch (Throwable jjte000) {
202          if (jjtc000) {
203            jjtree.clearNodeScope(jjtn000);
204            jjtc000 = false;
205          } else {
206            jjtree.popNode();
207          }
208          if (jjte000 instanceof RuntimeException) {
209            {if (true) throw (RuntimeException)jjte000;}
210          }
211          if (jjte000 instanceof ParseException) {
212            {if (true) throw (ParseException)jjte000;}
213          }
214          {if (true) throw (Error)jjte000;}
215        } finally {
216          if (jjtc000) {
217            jjtree.closeNodeScope(jjtn000, true);
218            jjtreeCloseNodeScope(jjtn000);
219          }
220        }
221      }
222    
223      final public void ExpressionStatement() throws ParseException {
224        Expression();
225        label_3:
226        while (true) {
227          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
228          case NEW:
229          case EMPTY:
230          case SIZE:
231          case NULL:
232          case TRUE:
233          case FALSE:
234          case LPAREN:
235          case LCURLY:
236          case LBRACKET:
237          case not:
238          case minus:
239          case tilda:
240          case IDENTIFIER:
241          case REGISTER:
242          case INTEGER_LITERAL:
243          case FLOAT_LITERAL:
244          case STRING_LITERAL:
245            ;
246            break;
247          default:
248            jj_la1[4] = jj_gen;
249            break label_3;
250          }
251                                     ASTAmbiguous jjtn001 = new ASTAmbiguous(JJTAMBIGUOUS);
252                                     boolean jjtc001 = true;
253                                     jjtree.openNodeScope(jjtn001);
254                                     jjtreeOpenNodeScope(jjtn001);
255          try {
256            Expression();
257          } catch (Throwable jjte001) {
258                                     if (jjtc001) {
259                                       jjtree.clearNodeScope(jjtn001);
260                                       jjtc001 = false;
261                                     } else {
262                                       jjtree.popNode();
263                                     }
264                                     if (jjte001 instanceof RuntimeException) {
265                                       {if (true) throw (RuntimeException)jjte001;}
266                                     }
267                                     if (jjte001 instanceof ParseException) {
268                                       {if (true) throw (ParseException)jjte001;}
269                                     }
270                                     {if (true) throw (Error)jjte001;}
271          } finally {
272                                     if (jjtc001) {
273                                       jjtree.closeNodeScope(jjtn001, true);
274                                       jjtreeCloseNodeScope(jjtn001);
275                                     }
276          }
277        }
278        if (jj_2_2(2)) {
279          jj_consume_token(SEMICOL);
280        } else {
281          ;
282        }
283      }
284    
285      final public void IfStatement() throws ParseException {
286                          /*@bgen(jjtree) IfStatement */
287      ASTIfStatement jjtn000 = new ASTIfStatement(JJTIFSTATEMENT);
288      boolean jjtc000 = true;
289      jjtree.openNodeScope(jjtn000);
290      jjtreeOpenNodeScope(jjtn000);
291        try {
292          jj_consume_token(IF);
293          jj_consume_token(LPAREN);
294          Expression();
295          jj_consume_token(RPAREN);
296          Statement();
297          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
298          case ELSE:
299            jj_consume_token(ELSE);
300            Statement();
301            break;
302          default:
303            jj_la1[5] = jj_gen;
304            ;
305          }
306        } catch (Throwable jjte000) {
307          if (jjtc000) {
308            jjtree.clearNodeScope(jjtn000);
309            jjtc000 = false;
310          } else {
311            jjtree.popNode();
312          }
313          if (jjte000 instanceof RuntimeException) {
314            {if (true) throw (RuntimeException)jjte000;}
315          }
316          if (jjte000 instanceof ParseException) {
317            {if (true) throw (ParseException)jjte000;}
318          }
319          {if (true) throw (Error)jjte000;}
320        } finally {
321          if (jjtc000) {
322            jjtree.closeNodeScope(jjtn000, true);
323            jjtreeCloseNodeScope(jjtn000);
324          }
325        }
326      }
327    
328      final public void WhileStatement() throws ParseException {
329                             /*@bgen(jjtree) WhileStatement */
330      ASTWhileStatement jjtn000 = new ASTWhileStatement(JJTWHILESTATEMENT);
331      boolean jjtc000 = true;
332      jjtree.openNodeScope(jjtn000);
333      jjtreeOpenNodeScope(jjtn000);
334        try {
335          jj_consume_token(WHILE);
336          jj_consume_token(LPAREN);
337          Expression();
338          jj_consume_token(RPAREN);
339          Statement();
340        } catch (Throwable jjte000) {
341          if (jjtc000) {
342            jjtree.clearNodeScope(jjtn000);
343            jjtc000 = false;
344          } else {
345            jjtree.popNode();
346          }
347          if (jjte000 instanceof RuntimeException) {
348            {if (true) throw (RuntimeException)jjte000;}
349          }
350          if (jjte000 instanceof ParseException) {
351            {if (true) throw (ParseException)jjte000;}
352          }
353          {if (true) throw (Error)jjte000;}
354        } finally {
355          if (jjtc000) {
356            jjtree.closeNodeScope(jjtn000, true);
357            jjtreeCloseNodeScope(jjtn000);
358          }
359        }
360      }
361    
362      final public void ForeachStatement() throws ParseException {
363                               /*@bgen(jjtree) ForeachStatement */
364      ASTForeachStatement jjtn000 = new ASTForeachStatement(JJTFOREACHSTATEMENT);
365      boolean jjtc000 = true;
366      jjtree.openNodeScope(jjtn000);
367      jjtreeOpenNodeScope(jjtn000);
368        try {
369          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
370          case FOR:
371            jj_consume_token(FOR);
372            jj_consume_token(LPAREN);
373            LValueVar();
374            jj_consume_token(COLON);
375            Expression();
376            jj_consume_token(RPAREN);
377            Statement();
378            break;
379          case FOREACH:
380            jj_consume_token(FOREACH);
381            jj_consume_token(LPAREN);
382            LValueVar();
383            jj_consume_token(IN);
384            Expression();
385            jj_consume_token(RPAREN);
386            Statement();
387            break;
388          default:
389            jj_la1[6] = jj_gen;
390            jj_consume_token(-1);
391            throw new ParseException();
392          }
393        } catch (Throwable jjte000) {
394          if (jjtc000) {
395            jjtree.clearNodeScope(jjtn000);
396            jjtc000 = false;
397          } else {
398            jjtree.popNode();
399          }
400          if (jjte000 instanceof RuntimeException) {
401            {if (true) throw (RuntimeException)jjte000;}
402          }
403          if (jjte000 instanceof ParseException) {
404            {if (true) throw (ParseException)jjte000;}
405          }
406          {if (true) throw (Error)jjte000;}
407        } finally {
408          if (jjtc000) {
409            jjtree.closeNodeScope(jjtn000, true);
410            jjtreeCloseNodeScope(jjtn000);
411          }
412        }
413      }
414    
415      final public void ReturnStatement() throws ParseException {
416                              /*@bgen(jjtree) ReturnStatement */
417      ASTReturnStatement jjtn000 = new ASTReturnStatement(JJTRETURNSTATEMENT);
418      boolean jjtc000 = true;
419      jjtree.openNodeScope(jjtn000);
420      jjtreeOpenNodeScope(jjtn000);
421        try {
422          jj_consume_token(RETURN);
423          Expression();
424        } catch (Throwable jjte000) {
425          if (jjtc000) {
426            jjtree.clearNodeScope(jjtn000);
427            jjtc000 = false;
428          } else {
429            jjtree.popNode();
430          }
431          if (jjte000 instanceof RuntimeException) {
432            {if (true) throw (RuntimeException)jjte000;}
433          }
434          if (jjte000 instanceof ParseException) {
435            {if (true) throw (ParseException)jjte000;}
436          }
437          {if (true) throw (Error)jjte000;}
438        } finally {
439          if (jjtc000) {
440            jjtree.closeNodeScope(jjtn000, true);
441            jjtreeCloseNodeScope(jjtn000);
442          }
443        }
444      }
445    
446    /***************************************
447     *      Expression syntax
448     ***************************************/
449      final public void Expression() throws ParseException {
450        ConditionalExpression();
451        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
452        case assign:
453          jj_consume_token(assign);
454                                                         ASTAssignment jjtn001 = new ASTAssignment(JJTASSIGNMENT);
455                                                         boolean jjtc001 = true;
456                                                         jjtree.openNodeScope(jjtn001);
457                                                         jjtreeOpenNodeScope(jjtn001);
458          try {
459            Expression();
460          } catch (Throwable jjte001) {
461                                                         if (jjtc001) {
462                                                           jjtree.clearNodeScope(jjtn001);
463                                                           jjtc001 = false;
464                                                         } else {
465                                                           jjtree.popNode();
466                                                         }
467                                                         if (jjte001 instanceof RuntimeException) {
468                                                           {if (true) throw (RuntimeException)jjte001;}
469                                                         }
470                                                         if (jjte001 instanceof ParseException) {
471                                                           {if (true) throw (ParseException)jjte001;}
472                                                         }
473                                                         {if (true) throw (Error)jjte001;}
474          } finally {
475                                                         if (jjtc001) {
476                                                           jjtree.closeNodeScope(jjtn001,  2);
477                                                           jjtreeCloseNodeScope(jjtn001);
478                                                         }
479          }
480          break;
481        default:
482          jj_la1[7] = jj_gen;
483          ;
484        }
485      }
486    
487      final public void Assignment() throws ParseException {
488                                        /*@bgen(jjtree) #Assignment( 2) */
489      ASTAssignment jjtn000 = new ASTAssignment(JJTASSIGNMENT);
490      boolean jjtc000 = true;
491      jjtree.openNodeScope(jjtn000);
492      jjtreeOpenNodeScope(jjtn000);
493        try {
494          ConditionalExpression();
495          jj_consume_token(assign);
496          Expression();
497        } catch (Throwable jjte000) {
498          if (jjtc000) {
499            jjtree.clearNodeScope(jjtn000);
500            jjtc000 = false;
501          } else {
502            jjtree.popNode();
503          }
504          if (jjte000 instanceof RuntimeException) {
505            {if (true) throw (RuntimeException)jjte000;}
506          }
507          if (jjte000 instanceof ParseException) {
508            {if (true) throw (ParseException)jjte000;}
509          }
510          {if (true) throw (Error)jjte000;}
511        } finally {
512          if (jjtc000) {
513            jjtree.closeNodeScope(jjtn000,  2);
514            jjtreeCloseNodeScope(jjtn000);
515          }
516        }
517      }
518    
519      final public void Var() throws ParseException {
520        jj_consume_token(VAR);
521        DeclareVar();
522        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
523        case assign:
524          jj_consume_token(assign);
525                                                    ASTAssignment jjtn001 = new ASTAssignment(JJTASSIGNMENT);
526                                                    boolean jjtc001 = true;
527                                                    jjtree.openNodeScope(jjtn001);
528                                                    jjtreeOpenNodeScope(jjtn001);
529          try {
530            Expression();
531          } catch (Throwable jjte001) {
532                                                    if (jjtc001) {
533                                                      jjtree.clearNodeScope(jjtn001);
534                                                      jjtc001 = false;
535                                                    } else {
536                                                      jjtree.popNode();
537                                                    }
538                                                    if (jjte001 instanceof RuntimeException) {
539                                                      {if (true) throw (RuntimeException)jjte001;}
540                                                    }
541                                                    if (jjte001 instanceof ParseException) {
542                                                      {if (true) throw (ParseException)jjte001;}
543                                                    }
544                                                    {if (true) throw (Error)jjte001;}
545          } finally {
546                                                    if (jjtc001) {
547                                                      jjtree.closeNodeScope(jjtn001,  2);
548                                                      jjtreeCloseNodeScope(jjtn001);
549                                                    }
550          }
551          break;
552        default:
553          jj_la1[8] = jj_gen;
554          ;
555        }
556      }
557    
558      final public void DeclareVar() throws ParseException {
559     /*@bgen(jjtree) Var */
560        ASTVar jjtn000 = new ASTVar(JJTVAR);
561        boolean jjtc000 = true;
562        jjtree.openNodeScope(jjtn000);
563        jjtreeOpenNodeScope(jjtn000);Token t;
564        try {
565          t = jj_consume_token(IDENTIFIER);
566                         jjtree.closeNodeScope(jjtn000, true);
567                         jjtc000 = false;
568                         jjtreeCloseNodeScope(jjtn000);
569                         declareVariable(jjtn000, t.image);
570        } finally {
571          if (jjtc000) {
572            jjtree.closeNodeScope(jjtn000, true);
573            jjtreeCloseNodeScope(jjtn000);
574          }
575        }
576      }
577    
578      final public void LValueVar() throws ParseException {
579                                   /*@bgen(jjtree) Reference */
580      ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
581      boolean jjtc000 = true;
582      jjtree.openNodeScope(jjtn000);
583      jjtreeOpenNodeScope(jjtn000);
584        try {
585          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
586          case VAR:
587            jj_consume_token(VAR);
588            DeclareVar();
589            DotReference();
590            break;
591          case IDENTIFIER:
592          case REGISTER:
593            Identifier(true);
594            DotReference();
595            break;
596          default:
597            jj_la1[9] = jj_gen;
598            jj_consume_token(-1);
599            throw new ParseException();
600          }
601        } catch (Throwable jjte000) {
602          if (jjtc000) {
603            jjtree.clearNodeScope(jjtn000);
604            jjtc000 = false;
605          } else {
606            jjtree.popNode();
607          }
608          if (jjte000 instanceof RuntimeException) {
609            {if (true) throw (RuntimeException)jjte000;}
610          }
611          if (jjte000 instanceof ParseException) {
612            {if (true) throw (ParseException)jjte000;}
613          }
614          {if (true) throw (Error)jjte000;}
615        } finally {
616          if (jjtc000) {
617            jjtree.closeNodeScope(jjtn000, true);
618            jjtreeCloseNodeScope(jjtn000);
619          }
620        }
621      }
622    
623    /***************************************
624     *      Conditional & relational
625     ***************************************/
626      final public void ConditionalExpression() throws ParseException {
627        ConditionalOrExpression();
628        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
629        case QMARK:
630        case ELVIS:
631          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
632          case QMARK:
633            jj_consume_token(QMARK);
634            Expression();
635            jj_consume_token(COLON);
636                                       ASTTernaryNode jjtn001 = new ASTTernaryNode(JJTTERNARYNODE);
637                                       boolean jjtc001 = true;
638                                       jjtree.openNodeScope(jjtn001);
639                                       jjtreeOpenNodeScope(jjtn001);
640            try {
641              Expression();
642            } catch (Throwable jjte001) {
643                                       if (jjtc001) {
644                                         jjtree.clearNodeScope(jjtn001);
645                                         jjtc001 = false;
646                                       } else {
647                                         jjtree.popNode();
648                                       }
649                                       if (jjte001 instanceof RuntimeException) {
650                                         {if (true) throw (RuntimeException)jjte001;}
651                                       }
652                                       if (jjte001 instanceof ParseException) {
653                                         {if (true) throw (ParseException)jjte001;}
654                                       }
655                                       {if (true) throw (Error)jjte001;}
656            } finally {
657                                       if (jjtc001) {
658                                         jjtree.closeNodeScope(jjtn001,  3);
659                                         jjtreeCloseNodeScope(jjtn001);
660                                       }
661            }
662            break;
663          case ELVIS:
664            jj_consume_token(ELVIS);
665                  ASTTernaryNode jjtn002 = new ASTTernaryNode(JJTTERNARYNODE);
666                  boolean jjtc002 = true;
667                  jjtree.openNodeScope(jjtn002);
668                  jjtreeOpenNodeScope(jjtn002);
669            try {
670              Expression();
671            } catch (Throwable jjte002) {
672                  if (jjtc002) {
673                    jjtree.clearNodeScope(jjtn002);
674                    jjtc002 = false;
675                  } else {
676                    jjtree.popNode();
677                  }
678                  if (jjte002 instanceof RuntimeException) {
679                    {if (true) throw (RuntimeException)jjte002;}
680                  }
681                  if (jjte002 instanceof ParseException) {
682                    {if (true) throw (ParseException)jjte002;}
683                  }
684                  {if (true) throw (Error)jjte002;}
685            } finally {
686                  if (jjtc002) {
687                    jjtree.closeNodeScope(jjtn002,  2);
688                    jjtreeCloseNodeScope(jjtn002);
689                  }
690            }
691            break;
692          default:
693            jj_la1[10] = jj_gen;
694            jj_consume_token(-1);
695            throw new ParseException();
696          }
697          break;
698        default:
699          jj_la1[11] = jj_gen;
700          ;
701        }
702      }
703    
704      final public void ConditionalOrExpression() throws ParseException {
705        ConditionalAndExpression();
706        label_4:
707        while (true) {
708          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
709          case OR:
710            ;
711            break;
712          default:
713            jj_la1[12] = jj_gen;
714            break label_4;
715          }
716          jj_consume_token(OR);
717               ASTOrNode jjtn001 = new ASTOrNode(JJTORNODE);
718               boolean jjtc001 = true;
719               jjtree.openNodeScope(jjtn001);
720               jjtreeOpenNodeScope(jjtn001);
721          try {
722            ConditionalAndExpression();
723          } catch (Throwable jjte001) {
724               if (jjtc001) {
725                 jjtree.clearNodeScope(jjtn001);
726                 jjtc001 = false;
727               } else {
728                 jjtree.popNode();
729               }
730               if (jjte001 instanceof RuntimeException) {
731                 {if (true) throw (RuntimeException)jjte001;}
732               }
733               if (jjte001 instanceof ParseException) {
734                 {if (true) throw (ParseException)jjte001;}
735               }
736               {if (true) throw (Error)jjte001;}
737          } finally {
738               if (jjtc001) {
739                 jjtree.closeNodeScope(jjtn001,  2);
740                 jjtreeCloseNodeScope(jjtn001);
741               }
742          }
743        }
744      }
745    
746      final public void ConditionalAndExpression() throws ParseException {
747        InclusiveOrExpression();
748        label_5:
749        while (true) {
750          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
751          case AND:
752            ;
753            break;
754          default:
755            jj_la1[13] = jj_gen;
756            break label_5;
757          }
758          jj_consume_token(AND);
759                ASTAndNode jjtn001 = new ASTAndNode(JJTANDNODE);
760                boolean jjtc001 = true;
761                jjtree.openNodeScope(jjtn001);
762                jjtreeOpenNodeScope(jjtn001);
763          try {
764            InclusiveOrExpression();
765          } catch (Throwable jjte001) {
766                if (jjtc001) {
767                  jjtree.clearNodeScope(jjtn001);
768                  jjtc001 = false;
769                } else {
770                  jjtree.popNode();
771                }
772                if (jjte001 instanceof RuntimeException) {
773                  {if (true) throw (RuntimeException)jjte001;}
774                }
775                if (jjte001 instanceof ParseException) {
776                  {if (true) throw (ParseException)jjte001;}
777                }
778                {if (true) throw (Error)jjte001;}
779          } finally {
780                if (jjtc001) {
781                  jjtree.closeNodeScope(jjtn001,  2);
782                  jjtreeCloseNodeScope(jjtn001);
783                }
784          }
785        }
786      }
787    
788      final public void InclusiveOrExpression() throws ParseException {
789        ExclusiveOrExpression();
790        label_6:
791        while (true) {
792          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
793          case or:
794            ;
795            break;
796          default:
797            jj_la1[14] = jj_gen;
798            break label_6;
799          }
800          jj_consume_token(or);
801               ASTBitwiseOrNode jjtn001 = new ASTBitwiseOrNode(JJTBITWISEORNODE);
802               boolean jjtc001 = true;
803               jjtree.openNodeScope(jjtn001);
804               jjtreeOpenNodeScope(jjtn001);
805          try {
806            ExclusiveOrExpression();
807          } catch (Throwable jjte001) {
808               if (jjtc001) {
809                 jjtree.clearNodeScope(jjtn001);
810                 jjtc001 = false;
811               } else {
812                 jjtree.popNode();
813               }
814               if (jjte001 instanceof RuntimeException) {
815                 {if (true) throw (RuntimeException)jjte001;}
816               }
817               if (jjte001 instanceof ParseException) {
818                 {if (true) throw (ParseException)jjte001;}
819               }
820               {if (true) throw (Error)jjte001;}
821          } finally {
822               if (jjtc001) {
823                 jjtree.closeNodeScope(jjtn001,  2);
824                 jjtreeCloseNodeScope(jjtn001);
825               }
826          }
827        }
828      }
829    
830      final public void ExclusiveOrExpression() throws ParseException {
831        AndExpression();
832        label_7:
833        while (true) {
834          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
835          case xor:
836            ;
837            break;
838          default:
839            jj_la1[15] = jj_gen;
840            break label_7;
841          }
842          jj_consume_token(xor);
843                ASTBitwiseXorNode jjtn001 = new ASTBitwiseXorNode(JJTBITWISEXORNODE);
844                boolean jjtc001 = true;
845                jjtree.openNodeScope(jjtn001);
846                jjtreeOpenNodeScope(jjtn001);
847          try {
848            AndExpression();
849          } catch (Throwable jjte001) {
850                if (jjtc001) {
851                  jjtree.clearNodeScope(jjtn001);
852                  jjtc001 = false;
853                } else {
854                  jjtree.popNode();
855                }
856                if (jjte001 instanceof RuntimeException) {
857                  {if (true) throw (RuntimeException)jjte001;}
858                }
859                if (jjte001 instanceof ParseException) {
860                  {if (true) throw (ParseException)jjte001;}
861                }
862                {if (true) throw (Error)jjte001;}
863          } finally {
864                if (jjtc001) {
865                  jjtree.closeNodeScope(jjtn001,  2);
866                  jjtreeCloseNodeScope(jjtn001);
867                }
868          }
869        }
870      }
871    
872      final public void AndExpression() throws ParseException {
873        EqualityExpression();
874        label_8:
875        while (true) {
876          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
877          case and:
878            ;
879            break;
880          default:
881            jj_la1[16] = jj_gen;
882            break label_8;
883          }
884          jj_consume_token(and);
885                ASTBitwiseAndNode jjtn001 = new ASTBitwiseAndNode(JJTBITWISEANDNODE);
886                boolean jjtc001 = true;
887                jjtree.openNodeScope(jjtn001);
888                jjtreeOpenNodeScope(jjtn001);
889          try {
890            EqualityExpression();
891          } catch (Throwable jjte001) {
892                if (jjtc001) {
893                  jjtree.clearNodeScope(jjtn001);
894                  jjtc001 = false;
895                } else {
896                  jjtree.popNode();
897                }
898                if (jjte001 instanceof RuntimeException) {
899                  {if (true) throw (RuntimeException)jjte001;}
900                }
901                if (jjte001 instanceof ParseException) {
902                  {if (true) throw (ParseException)jjte001;}
903                }
904                {if (true) throw (Error)jjte001;}
905          } finally {
906                if (jjtc001) {
907                  jjtree.closeNodeScope(jjtn001,  2);
908                  jjtreeCloseNodeScope(jjtn001);
909                }
910          }
911        }
912      }
913    
914      final public void EqualityExpression() throws ParseException {
915        RelationalExpression();
916        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
917        case eq:
918        case ne:
919          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
920          case eq:
921            jj_consume_token(eq);
922                ASTEQNode jjtn001 = new ASTEQNode(JJTEQNODE);
923                boolean jjtc001 = true;
924                jjtree.openNodeScope(jjtn001);
925                jjtreeOpenNodeScope(jjtn001);
926            try {
927              RelationalExpression();
928            } catch (Throwable jjte001) {
929                if (jjtc001) {
930                  jjtree.clearNodeScope(jjtn001);
931                  jjtc001 = false;
932                } else {
933                  jjtree.popNode();
934                }
935                if (jjte001 instanceof RuntimeException) {
936                  {if (true) throw (RuntimeException)jjte001;}
937                }
938                if (jjte001 instanceof ParseException) {
939                  {if (true) throw (ParseException)jjte001;}
940                }
941                {if (true) throw (Error)jjte001;}
942            } finally {
943                if (jjtc001) {
944                  jjtree.closeNodeScope(jjtn001,  2);
945                  jjtreeCloseNodeScope(jjtn001);
946                }
947            }
948            break;
949          case ne:
950            jj_consume_token(ne);
951                ASTNENode jjtn002 = new ASTNENode(JJTNENODE);
952                boolean jjtc002 = true;
953                jjtree.openNodeScope(jjtn002);
954                jjtreeOpenNodeScope(jjtn002);
955            try {
956              RelationalExpression();
957            } catch (Throwable jjte002) {
958                if (jjtc002) {
959                  jjtree.clearNodeScope(jjtn002);
960                  jjtc002 = false;
961                } else {
962                  jjtree.popNode();
963                }
964                if (jjte002 instanceof RuntimeException) {
965                  {if (true) throw (RuntimeException)jjte002;}
966                }
967                if (jjte002 instanceof ParseException) {
968                  {if (true) throw (ParseException)jjte002;}
969                }
970                {if (true) throw (Error)jjte002;}
971            } finally {
972                if (jjtc002) {
973                  jjtree.closeNodeScope(jjtn002,  2);
974                  jjtreeCloseNodeScope(jjtn002);
975                }
976            }
977            break;
978          default:
979            jj_la1[17] = jj_gen;
980            jj_consume_token(-1);
981            throw new ParseException();
982          }
983          break;
984        default:
985          jj_la1[18] = jj_gen;
986          ;
987        }
988      }
989    
990      final public void RelationalExpression() throws ParseException {
991        AdditiveExpression();
992        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
993        case req:
994        case rne:
995        case gt:
996        case ge:
997        case lt:
998        case le:
999          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1000          case lt:
1001            jj_consume_token(lt);
1002               ASTLTNode jjtn001 = new ASTLTNode(JJTLTNODE);
1003               boolean jjtc001 = true;
1004               jjtree.openNodeScope(jjtn001);
1005               jjtreeOpenNodeScope(jjtn001);
1006            try {
1007              AdditiveExpression();
1008            } catch (Throwable jjte001) {
1009               if (jjtc001) {
1010                 jjtree.clearNodeScope(jjtn001);
1011                 jjtc001 = false;
1012               } else {
1013                 jjtree.popNode();
1014               }
1015               if (jjte001 instanceof RuntimeException) {
1016                 {if (true) throw (RuntimeException)jjte001;}
1017               }
1018               if (jjte001 instanceof ParseException) {
1019                 {if (true) throw (ParseException)jjte001;}
1020               }
1021               {if (true) throw (Error)jjte001;}
1022            } finally {
1023               if (jjtc001) {
1024                 jjtree.closeNodeScope(jjtn001,  2);
1025                 jjtreeCloseNodeScope(jjtn001);
1026               }
1027            }
1028            break;
1029          case gt:
1030            jj_consume_token(gt);
1031               ASTGTNode jjtn002 = new ASTGTNode(JJTGTNODE);
1032               boolean jjtc002 = true;
1033               jjtree.openNodeScope(jjtn002);
1034               jjtreeOpenNodeScope(jjtn002);
1035            try {
1036              AdditiveExpression();
1037            } catch (Throwable jjte002) {
1038               if (jjtc002) {
1039                 jjtree.clearNodeScope(jjtn002);
1040                 jjtc002 = false;
1041               } else {
1042                 jjtree.popNode();
1043               }
1044               if (jjte002 instanceof RuntimeException) {
1045                 {if (true) throw (RuntimeException)jjte002;}
1046               }
1047               if (jjte002 instanceof ParseException) {
1048                 {if (true) throw (ParseException)jjte002;}
1049               }
1050               {if (true) throw (Error)jjte002;}
1051            } finally {
1052               if (jjtc002) {
1053                 jjtree.closeNodeScope(jjtn002,  2);
1054                 jjtreeCloseNodeScope(jjtn002);
1055               }
1056            }
1057            break;
1058          case le:
1059            jj_consume_token(le);
1060               ASTLENode jjtn003 = new ASTLENode(JJTLENODE);
1061               boolean jjtc003 = true;
1062               jjtree.openNodeScope(jjtn003);
1063               jjtreeOpenNodeScope(jjtn003);
1064            try {
1065              AdditiveExpression();
1066            } catch (Throwable jjte003) {
1067               if (jjtc003) {
1068                 jjtree.clearNodeScope(jjtn003);
1069                 jjtc003 = false;
1070               } else {
1071                 jjtree.popNode();
1072               }
1073               if (jjte003 instanceof RuntimeException) {
1074                 {if (true) throw (RuntimeException)jjte003;}
1075               }
1076               if (jjte003 instanceof ParseException) {
1077                 {if (true) throw (ParseException)jjte003;}
1078               }
1079               {if (true) throw (Error)jjte003;}
1080            } finally {
1081               if (jjtc003) {
1082                 jjtree.closeNodeScope(jjtn003,  2);
1083                 jjtreeCloseNodeScope(jjtn003);
1084               }
1085            }
1086            break;
1087          case ge:
1088            jj_consume_token(ge);
1089               ASTGENode jjtn004 = new ASTGENode(JJTGENODE);
1090               boolean jjtc004 = true;
1091               jjtree.openNodeScope(jjtn004);
1092               jjtreeOpenNodeScope(jjtn004);
1093            try {
1094              AdditiveExpression();
1095            } catch (Throwable jjte004) {
1096               if (jjtc004) {
1097                 jjtree.clearNodeScope(jjtn004);
1098                 jjtc004 = false;
1099               } else {
1100                 jjtree.popNode();
1101               }
1102               if (jjte004 instanceof RuntimeException) {
1103                 {if (true) throw (RuntimeException)jjte004;}
1104               }
1105               if (jjte004 instanceof ParseException) {
1106                 {if (true) throw (ParseException)jjte004;}
1107               }
1108               {if (true) throw (Error)jjte004;}
1109            } finally {
1110               if (jjtc004) {
1111                 jjtree.closeNodeScope(jjtn004,  2);
1112                 jjtreeCloseNodeScope(jjtn004);
1113               }
1114            }
1115            break;
1116          case req:
1117            jj_consume_token(req);
1118                ASTERNode jjtn005 = new ASTERNode(JJTERNODE);
1119                boolean jjtc005 = true;
1120                jjtree.openNodeScope(jjtn005);
1121                jjtreeOpenNodeScope(jjtn005);
1122            try {
1123              AdditiveExpression();
1124            } catch (Throwable jjte005) {
1125                if (jjtc005) {
1126                  jjtree.clearNodeScope(jjtn005);
1127                  jjtc005 = false;
1128                } else {
1129                  jjtree.popNode();
1130                }
1131                if (jjte005 instanceof RuntimeException) {
1132                  {if (true) throw (RuntimeException)jjte005;}
1133                }
1134                if (jjte005 instanceof ParseException) {
1135                  {if (true) throw (ParseException)jjte005;}
1136                }
1137                {if (true) throw (Error)jjte005;}
1138            } finally {
1139                if (jjtc005) {
1140                  jjtree.closeNodeScope(jjtn005,  2);
1141                  jjtreeCloseNodeScope(jjtn005);
1142                }
1143            }
1144            break;
1145          case rne:
1146            jj_consume_token(rne);
1147                ASTNRNode jjtn006 = new ASTNRNode(JJTNRNODE);
1148                boolean jjtc006 = true;
1149                jjtree.openNodeScope(jjtn006);
1150                jjtreeOpenNodeScope(jjtn006);
1151            try {
1152              AdditiveExpression();
1153            } catch (Throwable jjte006) {
1154                if (jjtc006) {
1155                  jjtree.clearNodeScope(jjtn006);
1156                  jjtc006 = false;
1157                } else {
1158                  jjtree.popNode();
1159                }
1160                if (jjte006 instanceof RuntimeException) {
1161                  {if (true) throw (RuntimeException)jjte006;}
1162                }
1163                if (jjte006 instanceof ParseException) {
1164                  {if (true) throw (ParseException)jjte006;}
1165                }
1166                {if (true) throw (Error)jjte006;}
1167            } finally {
1168                if (jjtc006) {
1169                  jjtree.closeNodeScope(jjtn006,  2);
1170                  jjtreeCloseNodeScope(jjtn006);
1171                }
1172            }
1173            break;
1174          default:
1175            jj_la1[19] = jj_gen;
1176            jj_consume_token(-1);
1177            throw new ParseException();
1178          }
1179          break;
1180        default:
1181          jj_la1[20] = jj_gen;
1182          ;
1183        }
1184      }
1185    
1186    /***************************************
1187     *      Arithmetic
1188     ***************************************/
1189      final public void AdditiveExpression() throws ParseException {
1190                                                   /*@bgen(jjtree) #AdditiveNode(> 1) */
1191      ASTAdditiveNode jjtn000 = new ASTAdditiveNode(JJTADDITIVENODE);
1192      boolean jjtc000 = true;
1193      jjtree.openNodeScope(jjtn000);
1194      jjtreeOpenNodeScope(jjtn000);
1195        try {
1196          MultiplicativeExpression();
1197          label_9:
1198          while (true) {
1199            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1200            case plus:
1201            case minus:
1202              ;
1203              break;
1204            default:
1205              jj_la1[21] = jj_gen;
1206              break label_9;
1207            }
1208            AdditiveOperator();
1209            MultiplicativeExpression();
1210          }
1211        } catch (Throwable jjte000) {
1212          if (jjtc000) {
1213            jjtree.clearNodeScope(jjtn000);
1214            jjtc000 = false;
1215          } else {
1216            jjtree.popNode();
1217          }
1218          if (jjte000 instanceof RuntimeException) {
1219            {if (true) throw (RuntimeException)jjte000;}
1220          }
1221          if (jjte000 instanceof ParseException) {
1222            {if (true) throw (ParseException)jjte000;}
1223          }
1224          {if (true) throw (Error)jjte000;}
1225        } finally {
1226          if (jjtc000) {
1227            jjtree.closeNodeScope(jjtn000, jjtree.nodeArity() > 1);
1228            jjtreeCloseNodeScope(jjtn000);
1229          }
1230        }
1231      }
1232    
1233      final public void AdditiveOperator() throws ParseException {
1234                               /*@bgen(jjtree) AdditiveOperator */
1235      ASTAdditiveOperator jjtn000 = new ASTAdditiveOperator(JJTADDITIVEOPERATOR);
1236      boolean jjtc000 = true;
1237      jjtree.openNodeScope(jjtn000);
1238      jjtreeOpenNodeScope(jjtn000);
1239        try {
1240          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1241          case plus:
1242            jj_consume_token(plus);
1243                 jjtree.closeNodeScope(jjtn000, true);
1244                 jjtc000 = false;
1245                 jjtreeCloseNodeScope(jjtn000);
1246                 jjtn000.image = "+";
1247            break;
1248          case minus:
1249            jj_consume_token(minus);
1250                  jjtree.closeNodeScope(jjtn000, true);
1251                  jjtc000 = false;
1252                  jjtreeCloseNodeScope(jjtn000);
1253                  jjtn000.image = "-";
1254            break;
1255          default:
1256            jj_la1[22] = jj_gen;
1257            jj_consume_token(-1);
1258            throw new ParseException();
1259          }
1260        } finally {
1261          if (jjtc000) {
1262            jjtree.closeNodeScope(jjtn000, true);
1263            jjtreeCloseNodeScope(jjtn000);
1264          }
1265        }
1266      }
1267    
1268      final public void MultiplicativeExpression() throws ParseException {
1269        UnaryExpression();
1270        label_10:
1271        while (true) {
1272          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1273          case mod:
1274          case div:
1275          case mult:
1276            ;
1277            break;
1278          default:
1279            jj_la1[23] = jj_gen;
1280            break label_10;
1281          }
1282          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1283          case mult:
1284            jj_consume_token(mult);
1285                 ASTMulNode jjtn001 = new ASTMulNode(JJTMULNODE);
1286                 boolean jjtc001 = true;
1287                 jjtree.openNodeScope(jjtn001);
1288                 jjtreeOpenNodeScope(jjtn001);
1289            try {
1290              UnaryExpression();
1291            } catch (Throwable jjte001) {
1292                 if (jjtc001) {
1293                   jjtree.clearNodeScope(jjtn001);
1294                   jjtc001 = false;
1295                 } else {
1296                   jjtree.popNode();
1297                 }
1298                 if (jjte001 instanceof RuntimeException) {
1299                   {if (true) throw (RuntimeException)jjte001;}
1300                 }
1301                 if (jjte001 instanceof ParseException) {
1302                   {if (true) throw (ParseException)jjte001;}
1303                 }
1304                 {if (true) throw (Error)jjte001;}
1305            } finally {
1306                 if (jjtc001) {
1307                   jjtree.closeNodeScope(jjtn001,  2);
1308                   jjtreeCloseNodeScope(jjtn001);
1309                 }
1310            }
1311            break;
1312          case div:
1313            jj_consume_token(div);
1314                ASTDivNode jjtn002 = new ASTDivNode(JJTDIVNODE);
1315                boolean jjtc002 = true;
1316                jjtree.openNodeScope(jjtn002);
1317                jjtreeOpenNodeScope(jjtn002);
1318            try {
1319              UnaryExpression();
1320            } catch (Throwable jjte002) {
1321                if (jjtc002) {
1322                  jjtree.clearNodeScope(jjtn002);
1323                  jjtc002 = false;
1324                } else {
1325                  jjtree.popNode();
1326                }
1327                if (jjte002 instanceof RuntimeException) {
1328                  {if (true) throw (RuntimeException)jjte002;}
1329                }
1330                if (jjte002 instanceof ParseException) {
1331                  {if (true) throw (ParseException)jjte002;}
1332                }
1333                {if (true) throw (Error)jjte002;}
1334            } finally {
1335                if (jjtc002) {
1336                  jjtree.closeNodeScope(jjtn002,  2);
1337                  jjtreeCloseNodeScope(jjtn002);
1338                }
1339            }
1340            break;
1341          case mod:
1342            jj_consume_token(mod);
1343                ASTModNode jjtn003 = new ASTModNode(JJTMODNODE);
1344                boolean jjtc003 = true;
1345                jjtree.openNodeScope(jjtn003);
1346                jjtreeOpenNodeScope(jjtn003);
1347            try {
1348              UnaryExpression();
1349            } catch (Throwable jjte003) {
1350                if (jjtc003) {
1351                  jjtree.clearNodeScope(jjtn003);
1352                  jjtc003 = false;
1353                } else {
1354                  jjtree.popNode();
1355                }
1356                if (jjte003 instanceof RuntimeException) {
1357                  {if (true) throw (RuntimeException)jjte003;}
1358                }
1359                if (jjte003 instanceof ParseException) {
1360                  {if (true) throw (ParseException)jjte003;}
1361                }
1362                {if (true) throw (Error)jjte003;}
1363            } finally {
1364                if (jjtc003) {
1365                  jjtree.closeNodeScope(jjtn003,  2);
1366                  jjtreeCloseNodeScope(jjtn003);
1367                }
1368            }
1369            break;
1370          default:
1371            jj_la1[24] = jj_gen;
1372            jj_consume_token(-1);
1373            throw new ParseException();
1374          }
1375        }
1376      }
1377    
1378      final public void UnaryExpression() throws ParseException {
1379        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1380        case minus:
1381          jj_consume_token(minus);
1382                ASTUnaryMinusNode jjtn001 = new ASTUnaryMinusNode(JJTUNARYMINUSNODE);
1383                boolean jjtc001 = true;
1384                jjtree.openNodeScope(jjtn001);
1385                jjtreeOpenNodeScope(jjtn001);
1386          try {
1387            UnaryExpression();
1388          } catch (Throwable jjte001) {
1389                if (jjtc001) {
1390                  jjtree.clearNodeScope(jjtn001);
1391                  jjtc001 = false;
1392                } else {
1393                  jjtree.popNode();
1394                }
1395                if (jjte001 instanceof RuntimeException) {
1396                  {if (true) throw (RuntimeException)jjte001;}
1397                }
1398                if (jjte001 instanceof ParseException) {
1399                  {if (true) throw (ParseException)jjte001;}
1400                }
1401                {if (true) throw (Error)jjte001;}
1402          } finally {
1403                if (jjtc001) {
1404                  jjtree.closeNodeScope(jjtn001,  1);
1405                  jjtreeCloseNodeScope(jjtn001);
1406                }
1407          }
1408          break;
1409        case tilda:
1410          jj_consume_token(tilda);
1411                ASTBitwiseComplNode jjtn002 = new ASTBitwiseComplNode(JJTBITWISECOMPLNODE);
1412                boolean jjtc002 = true;
1413                jjtree.openNodeScope(jjtn002);
1414                jjtreeOpenNodeScope(jjtn002);
1415          try {
1416            UnaryExpression();
1417          } catch (Throwable jjte002) {
1418                if (jjtc002) {
1419                  jjtree.clearNodeScope(jjtn002);
1420                  jjtc002 = false;
1421                } else {
1422                  jjtree.popNode();
1423                }
1424                if (jjte002 instanceof RuntimeException) {
1425                  {if (true) throw (RuntimeException)jjte002;}
1426                }
1427                if (jjte002 instanceof ParseException) {
1428                  {if (true) throw (ParseException)jjte002;}
1429                }
1430                {if (true) throw (Error)jjte002;}
1431          } finally {
1432                if (jjtc002) {
1433                  jjtree.closeNodeScope(jjtn002,  1);
1434                  jjtreeCloseNodeScope(jjtn002);
1435                }
1436          }
1437          break;
1438        case not:
1439          jj_consume_token(not);
1440              ASTNotNode jjtn003 = new ASTNotNode(JJTNOTNODE);
1441              boolean jjtc003 = true;
1442              jjtree.openNodeScope(jjtn003);
1443              jjtreeOpenNodeScope(jjtn003);
1444          try {
1445            UnaryExpression();
1446          } catch (Throwable jjte003) {
1447              if (jjtc003) {
1448                jjtree.clearNodeScope(jjtn003);
1449                jjtc003 = false;
1450              } else {
1451                jjtree.popNode();
1452              }
1453              if (jjte003 instanceof RuntimeException) {
1454                {if (true) throw (RuntimeException)jjte003;}
1455              }
1456              if (jjte003 instanceof ParseException) {
1457                {if (true) throw (ParseException)jjte003;}
1458              }
1459              {if (true) throw (Error)jjte003;}
1460          } finally {
1461              if (jjtc003) {
1462                jjtree.closeNodeScope(jjtn003,  1);
1463                jjtreeCloseNodeScope(jjtn003);
1464              }
1465          }
1466          break;
1467        case NEW:
1468        case EMPTY:
1469        case SIZE:
1470        case NULL:
1471        case TRUE:
1472        case FALSE:
1473        case LPAREN:
1474        case LCURLY:
1475        case LBRACKET:
1476        case IDENTIFIER:
1477        case REGISTER:
1478        case INTEGER_LITERAL:
1479        case FLOAT_LITERAL:
1480        case STRING_LITERAL:
1481          PrimaryExpression();
1482          break;
1483        default:
1484          jj_la1[25] = jj_gen;
1485          jj_consume_token(-1);
1486          throw new ParseException();
1487        }
1488      }
1489    
1490    /***************************************
1491     *      Identifier & Literals
1492     ***************************************/
1493      final public void Identifier(boolean top) throws ParseException {
1494     /*@bgen(jjtree) Identifier */
1495        ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER);
1496        boolean jjtc000 = true;
1497        jjtree.openNodeScope(jjtn000);
1498        jjtreeOpenNodeScope(jjtn000);Token t;
1499        try {
1500          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1501          case IDENTIFIER:
1502            t = jj_consume_token(IDENTIFIER);
1503                         jjtree.closeNodeScope(jjtn000, true);
1504                         jjtc000 = false;
1505                         jjtreeCloseNodeScope(jjtn000);
1506                         jjtn000.image = top? checkVariable(jjtn000, t.image) : t.image;
1507            break;
1508          case REGISTER:
1509            t = jj_consume_token(REGISTER);
1510                       jjtree.closeNodeScope(jjtn000, true);
1511                       jjtc000 = false;
1512                       jjtreeCloseNodeScope(jjtn000);
1513                       jjtn000.image = t.image; jjtn000.setRegister(t.image);
1514            break;
1515          default:
1516            jj_la1[26] = jj_gen;
1517            jj_consume_token(-1);
1518            throw new ParseException();
1519          }
1520        } finally {
1521          if (jjtc000) {
1522            jjtree.closeNodeScope(jjtn000, true);
1523            jjtreeCloseNodeScope(jjtn000);
1524          }
1525        }
1526      }
1527    
1528      final public void StringIdentifier() throws ParseException {
1529     /*@bgen(jjtree) Identifier */
1530        ASTIdentifier jjtn000 = new ASTIdentifier(JJTIDENTIFIER);
1531        boolean jjtc000 = true;
1532        jjtree.openNodeScope(jjtn000);
1533        jjtreeOpenNodeScope(jjtn000);Token t;
1534        try {
1535          t = jj_consume_token(STRING_LITERAL);
1536        jjtree.closeNodeScope(jjtn000, true);
1537        jjtc000 = false;
1538        jjtreeCloseNodeScope(jjtn000);
1539        jjtn000.image = Parser.buildString(t.image, true);
1540        } finally {
1541        if (jjtc000) {
1542          jjtree.closeNodeScope(jjtn000, true);
1543          jjtreeCloseNodeScope(jjtn000);
1544        }
1545        }
1546      }
1547    
1548      final public void Literal() throws ParseException {
1549       Token t;
1550        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1551        case INTEGER_LITERAL:
1552          IntegerLiteral();
1553          break;
1554        case FLOAT_LITERAL:
1555          FloatLiteral();
1556          break;
1557        case TRUE:
1558        case FALSE:
1559          BooleanLiteral();
1560          break;
1561        case STRING_LITERAL:
1562          StringLiteral();
1563          break;
1564        case NULL:
1565          NullLiteral();
1566          break;
1567        default:
1568          jj_la1[27] = jj_gen;
1569          jj_consume_token(-1);
1570          throw new ParseException();
1571        }
1572      }
1573    
1574      final public void NullLiteral() throws ParseException {
1575                          /*@bgen(jjtree) NullLiteral */
1576      ASTNullLiteral jjtn000 = new ASTNullLiteral(JJTNULLLITERAL);
1577      boolean jjtc000 = true;
1578      jjtree.openNodeScope(jjtn000);
1579      jjtreeOpenNodeScope(jjtn000);
1580        try {
1581          jj_consume_token(NULL);
1582        } finally {
1583          if (jjtc000) {
1584            jjtree.closeNodeScope(jjtn000, true);
1585            jjtreeCloseNodeScope(jjtn000);
1586          }
1587        }
1588      }
1589    
1590      final public void BooleanLiteral() throws ParseException {
1591        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1592        case TRUE:
1593        ASTTrueNode jjtn001 = new ASTTrueNode(JJTTRUENODE);
1594        boolean jjtc001 = true;
1595        jjtree.openNodeScope(jjtn001);
1596        jjtreeOpenNodeScope(jjtn001);
1597          try {
1598            jj_consume_token(TRUE);
1599          } finally {
1600        if (jjtc001) {
1601          jjtree.closeNodeScope(jjtn001, true);
1602          jjtreeCloseNodeScope(jjtn001);
1603        }
1604          }
1605          break;
1606        case FALSE:
1607        ASTFalseNode jjtn002 = new ASTFalseNode(JJTFALSENODE);
1608        boolean jjtc002 = true;
1609        jjtree.openNodeScope(jjtn002);
1610        jjtreeOpenNodeScope(jjtn002);
1611          try {
1612            jj_consume_token(FALSE);
1613          } finally {
1614        if (jjtc002) {
1615          jjtree.closeNodeScope(jjtn002, true);
1616          jjtreeCloseNodeScope(jjtn002);
1617        }
1618          }
1619          break;
1620        default:
1621          jj_la1[28] = jj_gen;
1622          jj_consume_token(-1);
1623          throw new ParseException();
1624        }
1625      }
1626    
1627      final public void IntegerLiteral() throws ParseException {
1628     /*@bgen(jjtree) NumberLiteral */
1629      ASTNumberLiteral jjtn000 = new ASTNumberLiteral(JJTNUMBERLITERAL);
1630      boolean jjtc000 = true;
1631      jjtree.openNodeScope(jjtn000);
1632      jjtreeOpenNodeScope(jjtn000);Token t;
1633        try {
1634          t = jj_consume_token(INTEGER_LITERAL);
1635        jjtree.closeNodeScope(jjtn000, true);
1636        jjtc000 = false;
1637        jjtreeCloseNodeScope(jjtn000);
1638        jjtn000.image = t.image; jjtn000.setNatural(t.image);
1639        } finally {
1640        if (jjtc000) {
1641          jjtree.closeNodeScope(jjtn000, true);
1642          jjtreeCloseNodeScope(jjtn000);
1643        }
1644        }
1645      }
1646    
1647      final public void FloatLiteral() throws ParseException {
1648     /*@bgen(jjtree) NumberLiteral */
1649      ASTNumberLiteral jjtn000 = new ASTNumberLiteral(JJTNUMBERLITERAL);
1650      boolean jjtc000 = true;
1651      jjtree.openNodeScope(jjtn000);
1652      jjtreeOpenNodeScope(jjtn000);Token t;
1653        try {
1654          t = jj_consume_token(FLOAT_LITERAL);
1655        jjtree.closeNodeScope(jjtn000, true);
1656        jjtc000 = false;
1657        jjtreeCloseNodeScope(jjtn000);
1658        jjtn000.image = t.image; jjtn000.setReal(t.image);
1659        } finally {
1660        if (jjtc000) {
1661          jjtree.closeNodeScope(jjtn000, true);
1662          jjtreeCloseNodeScope(jjtn000);
1663        }
1664        }
1665      }
1666    
1667      final public void StringLiteral() throws ParseException {
1668     /*@bgen(jjtree) StringLiteral */
1669       ASTStringLiteral jjtn000 = new ASTStringLiteral(JJTSTRINGLITERAL);
1670       boolean jjtc000 = true;
1671       jjtree.openNodeScope(jjtn000);
1672       jjtreeOpenNodeScope(jjtn000);Token t;
1673        try {
1674          t = jj_consume_token(STRING_LITERAL);
1675        jjtree.closeNodeScope(jjtn000, true);
1676        jjtc000 = false;
1677        jjtreeCloseNodeScope(jjtn000);
1678        jjtn000.image = Parser.buildString(t.image, true);
1679        } finally {
1680        if (jjtc000) {
1681          jjtree.closeNodeScope(jjtn000, true);
1682          jjtreeCloseNodeScope(jjtn000);
1683        }
1684        }
1685      }
1686    
1687      final public void ArrayLiteral() throws ParseException {
1688                           /*@bgen(jjtree) ArrayLiteral */
1689      ASTArrayLiteral jjtn000 = new ASTArrayLiteral(JJTARRAYLITERAL);
1690      boolean jjtc000 = true;
1691      jjtree.openNodeScope(jjtn000);
1692      jjtreeOpenNodeScope(jjtn000);
1693        try {
1694          jj_consume_token(LBRACKET);
1695          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1696          case NEW:
1697          case EMPTY:
1698          case SIZE:
1699          case NULL:
1700          case TRUE:
1701          case FALSE:
1702          case LPAREN:
1703          case LCURLY:
1704          case LBRACKET:
1705          case not:
1706          case minus:
1707          case tilda:
1708          case IDENTIFIER:
1709          case REGISTER:
1710          case INTEGER_LITERAL:
1711          case FLOAT_LITERAL:
1712          case STRING_LITERAL:
1713            Expression();
1714            label_11:
1715            while (true) {
1716              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1717              case COMMA:
1718                ;
1719                break;
1720              default:
1721                jj_la1[29] = jj_gen;
1722                break label_11;
1723              }
1724              jj_consume_token(COMMA);
1725              Expression();
1726            }
1727            break;
1728          default:
1729            jj_la1[30] = jj_gen;
1730            ;
1731          }
1732          jj_consume_token(RBRACKET);
1733        } catch (Throwable jjte000) {
1734        if (jjtc000) {
1735          jjtree.clearNodeScope(jjtn000);
1736          jjtc000 = false;
1737        } else {
1738          jjtree.popNode();
1739        }
1740        if (jjte000 instanceof RuntimeException) {
1741          {if (true) throw (RuntimeException)jjte000;}
1742        }
1743        if (jjte000 instanceof ParseException) {
1744          {if (true) throw (ParseException)jjte000;}
1745        }
1746        {if (true) throw (Error)jjte000;}
1747        } finally {
1748        if (jjtc000) {
1749          jjtree.closeNodeScope(jjtn000, true);
1750          jjtreeCloseNodeScope(jjtn000);
1751        }
1752        }
1753      }
1754    
1755      final public void MapLiteral() throws ParseException {
1756                         /*@bgen(jjtree) MapLiteral */
1757      ASTMapLiteral jjtn000 = new ASTMapLiteral(JJTMAPLITERAL);
1758      boolean jjtc000 = true;
1759      jjtree.openNodeScope(jjtn000);
1760      jjtreeOpenNodeScope(jjtn000);
1761        try {
1762          jj_consume_token(LCURLY);
1763          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1764          case NEW:
1765          case EMPTY:
1766          case SIZE:
1767          case NULL:
1768          case TRUE:
1769          case FALSE:
1770          case LPAREN:
1771          case LCURLY:
1772          case LBRACKET:
1773          case not:
1774          case minus:
1775          case tilda:
1776          case IDENTIFIER:
1777          case REGISTER:
1778          case INTEGER_LITERAL:
1779          case FLOAT_LITERAL:
1780          case STRING_LITERAL:
1781            MapEntry();
1782            label_12:
1783            while (true) {
1784              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1785              case COMMA:
1786                ;
1787                break;
1788              default:
1789                jj_la1[31] = jj_gen;
1790                break label_12;
1791              }
1792              jj_consume_token(COMMA);
1793              MapEntry();
1794            }
1795            break;
1796          case COLON:
1797            jj_consume_token(COLON);
1798            break;
1799          default:
1800            jj_la1[32] = jj_gen;
1801            jj_consume_token(-1);
1802            throw new ParseException();
1803          }
1804          jj_consume_token(RCURLY);
1805        } catch (Throwable jjte000) {
1806          if (jjtc000) {
1807            jjtree.clearNodeScope(jjtn000);
1808            jjtc000 = false;
1809          } else {
1810            jjtree.popNode();
1811          }
1812          if (jjte000 instanceof RuntimeException) {
1813            {if (true) throw (RuntimeException)jjte000;}
1814          }
1815          if (jjte000 instanceof ParseException) {
1816            {if (true) throw (ParseException)jjte000;}
1817          }
1818          {if (true) throw (Error)jjte000;}
1819        } finally {
1820          if (jjtc000) {
1821            jjtree.closeNodeScope(jjtn000, true);
1822            jjtreeCloseNodeScope(jjtn000);
1823          }
1824        }
1825      }
1826    
1827      final public void MapEntry() throws ParseException {
1828                       /*@bgen(jjtree) MapEntry */
1829      ASTMapEntry jjtn000 = new ASTMapEntry(JJTMAPENTRY);
1830      boolean jjtc000 = true;
1831      jjtree.openNodeScope(jjtn000);
1832      jjtreeOpenNodeScope(jjtn000);
1833        try {
1834          Expression();
1835          jj_consume_token(COLON);
1836          Expression();
1837        } catch (Throwable jjte000) {
1838          if (jjtc000) {
1839            jjtree.clearNodeScope(jjtn000);
1840            jjtc000 = false;
1841          } else {
1842            jjtree.popNode();
1843          }
1844          if (jjte000 instanceof RuntimeException) {
1845            {if (true) throw (RuntimeException)jjte000;}
1846          }
1847          if (jjte000 instanceof ParseException) {
1848            {if (true) throw (ParseException)jjte000;}
1849          }
1850          {if (true) throw (Error)jjte000;}
1851        } finally {
1852          if (jjtc000) {
1853            jjtree.closeNodeScope(jjtn000, true);
1854            jjtreeCloseNodeScope(jjtn000);
1855          }
1856        }
1857      }
1858    
1859    /***************************************
1860     *      Functions & Methods
1861     ***************************************/
1862      final public void EmptyFunction() throws ParseException {
1863                            /*@bgen(jjtree) EmptyFunction */
1864      ASTEmptyFunction jjtn000 = new ASTEmptyFunction(JJTEMPTYFUNCTION);
1865      boolean jjtc000 = true;
1866      jjtree.openNodeScope(jjtn000);
1867      jjtreeOpenNodeScope(jjtn000);
1868        try {
1869          if (jj_2_3(3)) {
1870            jj_consume_token(EMPTY);
1871            jj_consume_token(LPAREN);
1872            Expression();
1873            jj_consume_token(RPAREN);
1874          } else {
1875            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1876            case EMPTY:
1877              jj_consume_token(EMPTY);
1878              Reference();
1879              break;
1880            default:
1881              jj_la1[33] = jj_gen;
1882              jj_consume_token(-1);
1883              throw new ParseException();
1884            }
1885          }
1886        } catch (Throwable jjte000) {
1887          if (jjtc000) {
1888            jjtree.clearNodeScope(jjtn000);
1889            jjtc000 = false;
1890          } else {
1891            jjtree.popNode();
1892          }
1893          if (jjte000 instanceof RuntimeException) {
1894            {if (true) throw (RuntimeException)jjte000;}
1895          }
1896          if (jjte000 instanceof ParseException) {
1897            {if (true) throw (ParseException)jjte000;}
1898          }
1899          {if (true) throw (Error)jjte000;}
1900        } finally {
1901          if (jjtc000) {
1902            jjtree.closeNodeScope(jjtn000, true);
1903            jjtreeCloseNodeScope(jjtn000);
1904          }
1905        }
1906      }
1907    
1908      final public void SizeFunction() throws ParseException {
1909                           /*@bgen(jjtree) SizeFunction */
1910      ASTSizeFunction jjtn000 = new ASTSizeFunction(JJTSIZEFUNCTION);
1911      boolean jjtc000 = true;
1912      jjtree.openNodeScope(jjtn000);
1913      jjtreeOpenNodeScope(jjtn000);
1914        try {
1915          jj_consume_token(SIZE);
1916          jj_consume_token(LPAREN);
1917          Expression();
1918          jj_consume_token(RPAREN);
1919        } catch (Throwable jjte000) {
1920          if (jjtc000) {
1921            jjtree.clearNodeScope(jjtn000);
1922            jjtc000 = false;
1923          } else {
1924            jjtree.popNode();
1925          }
1926          if (jjte000 instanceof RuntimeException) {
1927            {if (true) throw (RuntimeException)jjte000;}
1928          }
1929          if (jjte000 instanceof ParseException) {
1930            {if (true) throw (ParseException)jjte000;}
1931          }
1932          {if (true) throw (Error)jjte000;}
1933        } finally {
1934          if (jjtc000) {
1935            jjtree.closeNodeScope(jjtn000, true);
1936            jjtreeCloseNodeScope(jjtn000);
1937          }
1938        }
1939      }
1940    
1941      final public void Function() throws ParseException {
1942                                    /*@bgen(jjtree) FunctionNode */
1943      ASTFunctionNode jjtn000 = new ASTFunctionNode(JJTFUNCTIONNODE);
1944      boolean jjtc000 = true;
1945      jjtree.openNodeScope(jjtn000);
1946      jjtreeOpenNodeScope(jjtn000);
1947        try {
1948          Identifier();
1949          jj_consume_token(COLON);
1950          Identifier();
1951          jj_consume_token(LPAREN);
1952          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1953          case NEW:
1954          case EMPTY:
1955          case SIZE:
1956          case NULL:
1957          case TRUE:
1958          case FALSE:
1959          case LPAREN:
1960          case LCURLY:
1961          case LBRACKET:
1962          case not:
1963          case minus:
1964          case tilda:
1965          case IDENTIFIER:
1966          case REGISTER:
1967          case INTEGER_LITERAL:
1968          case FLOAT_LITERAL:
1969          case STRING_LITERAL:
1970            Expression();
1971            label_13:
1972            while (true) {
1973              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1974              case COMMA:
1975                ;
1976                break;
1977              default:
1978                jj_la1[34] = jj_gen;
1979                break label_13;
1980              }
1981              jj_consume_token(COMMA);
1982              Expression();
1983            }
1984            break;
1985          default:
1986            jj_la1[35] = jj_gen;
1987            ;
1988          }
1989          jj_consume_token(RPAREN);
1990        } catch (Throwable jjte000) {
1991         if (jjtc000) {
1992           jjtree.clearNodeScope(jjtn000);
1993           jjtc000 = false;
1994         } else {
1995           jjtree.popNode();
1996         }
1997         if (jjte000 instanceof RuntimeException) {
1998           {if (true) throw (RuntimeException)jjte000;}
1999         }
2000         if (jjte000 instanceof ParseException) {
2001           {if (true) throw (ParseException)jjte000;}
2002         }
2003         {if (true) throw (Error)jjte000;}
2004        } finally {
2005         if (jjtc000) {
2006           jjtree.closeNodeScope(jjtn000, true);
2007           jjtreeCloseNodeScope(jjtn000);
2008         }
2009        }
2010      }
2011    
2012      final public void Method() throws ParseException {
2013                                /*@bgen(jjtree) MethodNode */
2014      ASTMethodNode jjtn000 = new ASTMethodNode(JJTMETHODNODE);
2015      boolean jjtc000 = true;
2016      jjtree.openNodeScope(jjtn000);
2017      jjtreeOpenNodeScope(jjtn000);
2018        try {
2019          Identifier();
2020          jj_consume_token(LPAREN);
2021          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2022          case NEW:
2023          case EMPTY:
2024          case SIZE:
2025          case NULL:
2026          case TRUE:
2027          case FALSE:
2028          case LPAREN:
2029          case LCURLY:
2030          case LBRACKET:
2031          case not:
2032          case minus:
2033          case tilda:
2034          case IDENTIFIER:
2035          case REGISTER:
2036          case INTEGER_LITERAL:
2037          case FLOAT_LITERAL:
2038          case STRING_LITERAL:
2039            Expression();
2040            label_14:
2041            while (true) {
2042              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2043              case COMMA:
2044                ;
2045                break;
2046              default:
2047                jj_la1[36] = jj_gen;
2048                break label_14;
2049              }
2050              jj_consume_token(COMMA);
2051              Expression();
2052            }
2053            break;
2054          default:
2055            jj_la1[37] = jj_gen;
2056            ;
2057          }
2058          jj_consume_token(RPAREN);
2059        } catch (Throwable jjte000) {
2060         if (jjtc000) {
2061           jjtree.clearNodeScope(jjtn000);
2062           jjtc000 = false;
2063         } else {
2064           jjtree.popNode();
2065         }
2066         if (jjte000 instanceof RuntimeException) {
2067           {if (true) throw (RuntimeException)jjte000;}
2068         }
2069         if (jjte000 instanceof ParseException) {
2070           {if (true) throw (ParseException)jjte000;}
2071         }
2072         {if (true) throw (Error)jjte000;}
2073        } finally {
2074         if (jjtc000) {
2075           jjtree.closeNodeScope(jjtn000, true);
2076           jjtreeCloseNodeScope(jjtn000);
2077         }
2078        }
2079      }
2080    
2081      final public void AnyMethod() throws ParseException {
2082        if (jj_2_4(2147483647)) {
2083          SizeMethod();
2084        } else if (jj_2_5(2147483647)) {
2085          Method();
2086        } else {
2087          jj_consume_token(-1);
2088          throw new ParseException();
2089        }
2090      }
2091    
2092      final public void SizeMethod() throws ParseException {
2093                         /*@bgen(jjtree) SizeMethod */
2094      ASTSizeMethod jjtn000 = new ASTSizeMethod(JJTSIZEMETHOD);
2095      boolean jjtc000 = true;
2096      jjtree.openNodeScope(jjtn000);
2097      jjtreeOpenNodeScope(jjtn000);
2098        try {
2099          jj_consume_token(SIZE);
2100          jj_consume_token(LPAREN);
2101          jj_consume_token(RPAREN);
2102        } finally {
2103          if (jjtc000) {
2104            jjtree.closeNodeScope(jjtn000, true);
2105            jjtreeCloseNodeScope(jjtn000);
2106          }
2107        }
2108      }
2109    
2110      final public void Constructor() throws ParseException {
2111                                             /*@bgen(jjtree) #ConstructorNode(true) */
2112      ASTConstructorNode jjtn000 = new ASTConstructorNode(JJTCONSTRUCTORNODE);
2113      boolean jjtc000 = true;
2114      jjtree.openNodeScope(jjtn000);
2115      jjtreeOpenNodeScope(jjtn000);
2116        try {
2117          jj_consume_token(NEW);
2118          jj_consume_token(LPAREN);
2119          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2120          case NEW:
2121          case EMPTY:
2122          case SIZE:
2123          case NULL:
2124          case TRUE:
2125          case FALSE:
2126          case LPAREN:
2127          case LCURLY:
2128          case LBRACKET:
2129          case not:
2130          case minus:
2131          case tilda:
2132          case IDENTIFIER:
2133          case REGISTER:
2134          case INTEGER_LITERAL:
2135          case FLOAT_LITERAL:
2136          case STRING_LITERAL:
2137            Expression();
2138            label_15:
2139            while (true) {
2140              switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2141              case COMMA:
2142                ;
2143                break;
2144              default:
2145                jj_la1[38] = jj_gen;
2146                break label_15;
2147              }
2148              jj_consume_token(COMMA);
2149              Expression();
2150            }
2151            break;
2152          default:
2153            jj_la1[39] = jj_gen;
2154            ;
2155          }
2156          jj_consume_token(RPAREN);
2157        } catch (Throwable jjte000) {
2158        if (jjtc000) {
2159          jjtree.clearNodeScope(jjtn000);
2160          jjtc000 = false;
2161        } else {
2162          jjtree.popNode();
2163        }
2164        if (jjte000 instanceof RuntimeException) {
2165          {if (true) throw (RuntimeException)jjte000;}
2166        }
2167        if (jjte000 instanceof ParseException) {
2168          {if (true) throw (ParseException)jjte000;}
2169        }
2170        {if (true) throw (Error)jjte000;}
2171        } finally {
2172        if (jjtc000) {
2173          jjtree.closeNodeScope(jjtn000, true);
2174          jjtreeCloseNodeScope(jjtn000);
2175        }
2176        }
2177      }
2178    
2179    /***************************************
2180     *     References
2181     ***************************************/
2182      final public void PrimaryExpression() throws ParseException {
2183        if (jj_2_6(2)) {
2184          Reference();
2185        } else if (jj_2_7(2147483647)) {
2186          EmptyFunction();
2187        } else if (jj_2_8(2147483647)) {
2188          SizeFunction();
2189        } else if (jj_2_9(2147483647)) {
2190          Constructor();
2191        } else if (jj_2_10(2147483647)) {
2192          MapLiteral();
2193        } else if (jj_2_11(2147483647)) {
2194          ArrayLiteral();
2195        } else {
2196          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2197          case NULL:
2198          case TRUE:
2199          case FALSE:
2200          case INTEGER_LITERAL:
2201          case FLOAT_LITERAL:
2202          case STRING_LITERAL:
2203            Literal();
2204            break;
2205          default:
2206            jj_la1[40] = jj_gen;
2207            jj_consume_token(-1);
2208            throw new ParseException();
2209          }
2210        }
2211      }
2212    
2213      final public void ArrayAccess() throws ParseException {
2214                          /*@bgen(jjtree) ArrayAccess */
2215      ASTArrayAccess jjtn000 = new ASTArrayAccess(JJTARRAYACCESS);
2216      boolean jjtc000 = true;
2217      jjtree.openNodeScope(jjtn000);
2218      jjtreeOpenNodeScope(jjtn000);
2219        try {
2220          Identifier();
2221          label_16:
2222          while (true) {
2223            jj_consume_token(LBRACKET);
2224            Expression();
2225            jj_consume_token(RBRACKET);
2226            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2227            case LBRACKET:
2228              ;
2229              break;
2230            default:
2231              jj_la1[41] = jj_gen;
2232              break label_16;
2233            }
2234          }
2235        } catch (Throwable jjte000) {
2236          if (jjtc000) {
2237            jjtree.clearNodeScope(jjtn000);
2238            jjtc000 = false;
2239          } else {
2240            jjtree.popNode();
2241          }
2242          if (jjte000 instanceof RuntimeException) {
2243            {if (true) throw (RuntimeException)jjte000;}
2244          }
2245          if (jjte000 instanceof ParseException) {
2246            {if (true) throw (ParseException)jjte000;}
2247          }
2248          {if (true) throw (Error)jjte000;}
2249        } finally {
2250          if (jjtc000) {
2251            jjtree.closeNodeScope(jjtn000, true);
2252            jjtreeCloseNodeScope(jjtn000);
2253          }
2254        }
2255      }
2256    
2257      final public void DotReference() throws ParseException {
2258        label_17:
2259        while (true) {
2260          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2261          case DOT:
2262            ;
2263            break;
2264          default:
2265            jj_la1[42] = jj_gen;
2266            break label_17;
2267          }
2268          jj_consume_token(DOT);
2269          if (jj_2_13(2147483647)) {
2270            ArrayAccess();
2271          } else {
2272            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2273            case SIZE:
2274            case IDENTIFIER:
2275            case REGISTER:
2276            case INTEGER_LITERAL:
2277            case STRING_LITERAL:
2278              if (jj_2_12(2)) {
2279                AnyMethod();
2280              } else {
2281                switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2282                case IDENTIFIER:
2283                case REGISTER:
2284                  Identifier();
2285                  break;
2286                case INTEGER_LITERAL:
2287                  IntegerLiteral();
2288                  break;
2289                case STRING_LITERAL:
2290                  StringIdentifier();
2291                  break;
2292                default:
2293                  jj_la1[43] = jj_gen;
2294                  jj_consume_token(-1);
2295                  throw new ParseException();
2296                }
2297              }
2298              break;
2299            default:
2300              jj_la1[44] = jj_gen;
2301              jj_consume_token(-1);
2302              throw new ParseException();
2303            }
2304          }
2305        }
2306      }
2307    
2308      final public void Reference() throws ParseException {
2309                        /*@bgen(jjtree) Reference */
2310      ASTReference jjtn000 = new ASTReference(JJTREFERENCE);
2311      boolean jjtc000 = true;
2312      jjtree.openNodeScope(jjtn000);
2313      jjtreeOpenNodeScope(jjtn000);
2314        try {
2315          if (jj_2_14(2147483647)) {
2316            Constructor();
2317          } else if (jj_2_15(2147483647)) {
2318            ArrayAccess();
2319          } else if (jj_2_16(2147483647)) {
2320            Function();
2321          } else if (jj_2_17(2147483647)) {
2322            Method();
2323          } else if (jj_2_18(2147483647)) {
2324            MapLiteral();
2325          } else if (jj_2_19(2147483647)) {
2326            ArrayLiteral();
2327          } else if (jj_2_20(2147483647)) {
2328            ReferenceExpression();
2329          } else {
2330            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2331            case STRING_LITERAL:
2332              StringLiteral();
2333              break;
2334            case IDENTIFIER:
2335            case REGISTER:
2336              Identifier(true);
2337              break;
2338            default:
2339              jj_la1[45] = jj_gen;
2340              jj_consume_token(-1);
2341              throw new ParseException();
2342            }
2343          }
2344          DotReference();
2345        } catch (Throwable jjte000) {
2346        if (jjtc000) {
2347          jjtree.clearNodeScope(jjtn000);
2348          jjtc000 = false;
2349        } else {
2350          jjtree.popNode();
2351        }
2352        if (jjte000 instanceof RuntimeException) {
2353          {if (true) throw (RuntimeException)jjte000;}
2354        }
2355        if (jjte000 instanceof ParseException) {
2356          {if (true) throw (ParseException)jjte000;}
2357        }
2358        {if (true) throw (Error)jjte000;}
2359        } finally {
2360        if (jjtc000) {
2361          jjtree.closeNodeScope(jjtn000, true);
2362          jjtreeCloseNodeScope(jjtn000);
2363        }
2364        }
2365      }
2366    
2367    /**
2368     * ReferenceExpression is a subclass of ArrayAccess
2369     */
2370      final public void ReferenceExpression() throws ParseException {
2371                                  /*@bgen(jjtree) ReferenceExpression */
2372      ASTReferenceExpression jjtn000 = new ASTReferenceExpression(JJTREFERENCEEXPRESSION);
2373      boolean jjtc000 = true;
2374      jjtree.openNodeScope(jjtn000);
2375      jjtreeOpenNodeScope(jjtn000);
2376        try {
2377          jj_consume_token(LPAREN);
2378          Expression();
2379          jj_consume_token(RPAREN);
2380          label_18:
2381          while (true) {
2382            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2383            case LBRACKET:
2384              ;
2385              break;
2386            default:
2387              jj_la1[46] = jj_gen;
2388              break label_18;
2389            }
2390            jj_consume_token(LBRACKET);
2391            Expression();
2392            jj_consume_token(RBRACKET);
2393          }
2394        } catch (Throwable jjte000) {
2395          if (jjtc000) {
2396            jjtree.clearNodeScope(jjtn000);
2397            jjtc000 = false;
2398          } else {
2399            jjtree.popNode();
2400          }
2401          if (jjte000 instanceof RuntimeException) {
2402            {if (true) throw (RuntimeException)jjte000;}
2403          }
2404          if (jjte000 instanceof ParseException) {
2405            {if (true) throw (ParseException)jjte000;}
2406          }
2407          {if (true) throw (Error)jjte000;}
2408        } finally {
2409          if (jjtc000) {
2410            jjtree.closeNodeScope(jjtn000, true);
2411            jjtreeCloseNodeScope(jjtn000);
2412          }
2413        }
2414      }
2415    
2416      private boolean jj_2_1(int xla) {
2417        jj_la = xla; jj_lastpos = jj_scanpos = token;
2418        try { return !jj_3_1(); }
2419        catch(LookaheadSuccess ls) { return true; }
2420        finally { jj_save(0, xla); }
2421      }
2422    
2423      private boolean jj_2_2(int xla) {
2424        jj_la = xla; jj_lastpos = jj_scanpos = token;
2425        try { return !jj_3_2(); }
2426        catch(LookaheadSuccess ls) { return true; }
2427        finally { jj_save(1, xla); }
2428      }
2429    
2430      private boolean jj_2_3(int xla) {
2431        jj_la = xla; jj_lastpos = jj_scanpos = token;
2432        try { return !jj_3_3(); }
2433        catch(LookaheadSuccess ls) { return true; }
2434        finally { jj_save(2, xla); }
2435      }
2436    
2437      private boolean jj_2_4(int xla) {
2438        jj_la = xla; jj_lastpos = jj_scanpos = token;
2439        try { return !jj_3_4(); }
2440        catch(LookaheadSuccess ls) { return true; }
2441        finally { jj_save(3, xla); }
2442      }
2443    
2444      private boolean jj_2_5(int xla) {
2445        jj_la = xla; jj_lastpos = jj_scanpos = token;
2446        try { return !jj_3_5(); }
2447        catch(LookaheadSuccess ls) { return true; }
2448        finally { jj_save(4, xla); }
2449      }
2450    
2451      private boolean jj_2_6(int xla) {
2452        jj_la = xla; jj_lastpos = jj_scanpos = token;
2453        try { return !jj_3_6(); }
2454        catch(LookaheadSuccess ls) { return true; }
2455        finally { jj_save(5, xla); }
2456      }
2457    
2458      private boolean jj_2_7(int xla) {
2459        jj_la = xla; jj_lastpos = jj_scanpos = token;
2460        try { return !jj_3_7(); }
2461        catch(LookaheadSuccess ls) { return true; }
2462        finally { jj_save(6, xla); }
2463      }
2464    
2465      private boolean jj_2_8(int xla) {
2466        jj_la = xla; jj_lastpos = jj_scanpos = token;
2467        try { return !jj_3_8(); }
2468        catch(LookaheadSuccess ls) { return true; }
2469        finally { jj_save(7, xla); }
2470      }
2471    
2472      private boolean jj_2_9(int xla) {
2473        jj_la = xla; jj_lastpos = jj_scanpos = token;
2474        try { return !jj_3_9(); }
2475        catch(LookaheadSuccess ls) { return true; }
2476        finally { jj_save(8, xla); }
2477      }
2478    
2479      private boolean jj_2_10(int xla) {
2480        jj_la = xla; jj_lastpos = jj_scanpos = token;
2481        try { return !jj_3_10(); }
2482        catch(LookaheadSuccess ls) { return true; }
2483        finally { jj_save(9, xla); }
2484      }
2485    
2486      private boolean jj_2_11(int xla) {
2487        jj_la = xla; jj_lastpos = jj_scanpos = token;
2488        try { return !jj_3_11(); }
2489        catch(LookaheadSuccess ls) { return true; }
2490        finally { jj_save(10, xla); }
2491      }
2492    
2493      private boolean jj_2_12(int xla) {
2494        jj_la = xla; jj_lastpos = jj_scanpos = token;
2495        try { return !jj_3_12(); }
2496        catch(LookaheadSuccess ls) { return true; }
2497        finally { jj_save(11, xla); }
2498      }
2499    
2500      private boolean jj_2_13(int xla) {
2501        jj_la = xla; jj_lastpos = jj_scanpos = token;
2502        try { return !jj_3_13(); }
2503        catch(LookaheadSuccess ls) { return true; }
2504        finally { jj_save(12, xla); }
2505      }
2506    
2507      private boolean jj_2_14(int xla) {
2508        jj_la = xla; jj_lastpos = jj_scanpos = token;
2509        try { return !jj_3_14(); }
2510        catch(LookaheadSuccess ls) { return true; }
2511        finally { jj_save(13, xla); }
2512      }
2513    
2514      private boolean jj_2_15(int xla) {
2515        jj_la = xla; jj_lastpos = jj_scanpos = token;
2516        try { return !jj_3_15(); }
2517        catch(LookaheadSuccess ls) { return true; }
2518        finally { jj_save(14, xla); }
2519      }
2520    
2521      private boolean jj_2_16(int xla) {
2522        jj_la = xla; jj_lastpos = jj_scanpos = token;
2523        try { return !jj_3_16(); }
2524        catch(LookaheadSuccess ls) { return true; }
2525        finally { jj_save(15, xla); }
2526      }
2527    
2528      private boolean jj_2_17(int xla) {
2529        jj_la = xla; jj_lastpos = jj_scanpos = token;
2530        try { return !jj_3_17(); }
2531        catch(LookaheadSuccess ls) { return true; }
2532        finally { jj_save(16, xla); }
2533      }
2534    
2535      private boolean jj_2_18(int xla) {
2536        jj_la = xla; jj_lastpos = jj_scanpos = token;
2537        try { return !jj_3_18(); }
2538        catch(LookaheadSuccess ls) { return true; }
2539        finally { jj_save(17, xla); }
2540      }
2541    
2542      private boolean jj_2_19(int xla) {
2543        jj_la = xla; jj_lastpos = jj_scanpos = token;
2544        try { return !jj_3_19(); }
2545        catch(LookaheadSuccess ls) { return true; }
2546        finally { jj_save(18, xla); }
2547      }
2548    
2549      private boolean jj_2_20(int xla) {
2550        jj_la = xla; jj_lastpos = jj_scanpos = token;
2551        try { return !jj_3_20(); }
2552        catch(LookaheadSuccess ls) { return true; }
2553        finally { jj_save(19, xla); }
2554      }
2555    
2556      private boolean jj_3R_94() {
2557        if (jj_3R_102()) return true;
2558        Token xsp;
2559        while (true) {
2560          xsp = jj_scanpos;
2561          if (jj_3R_103()) { jj_scanpos = xsp; break; }
2562        }
2563        return false;
2564      }
2565    
2566      private boolean jj_3R_113() {
2567        if (jj_scan_token(minus)) return true;
2568        return false;
2569      }
2570    
2571      private boolean jj_3R_104() {
2572        Token xsp;
2573        xsp = jj_scanpos;
2574        if (jj_3R_112()) {
2575        jj_scanpos = xsp;
2576        if (jj_3R_113()) return true;
2577        }
2578        return false;
2579      }
2580    
2581      private boolean jj_3R_112() {
2582        if (jj_scan_token(plus)) return true;
2583        return false;
2584      }
2585    
2586      private boolean jj_3R_90() {
2587        if (jj_3R_94()) return true;
2588        Token xsp;
2589        while (true) {
2590          xsp = jj_scanpos;
2591          if (jj_3R_95()) { jj_scanpos = xsp; break; }
2592        }
2593        return false;
2594      }
2595    
2596      private boolean jj_3R_101() {
2597        if (jj_scan_token(rne)) return true;
2598        if (jj_3R_90()) return true;
2599        return false;
2600      }
2601    
2602      private boolean jj_3R_100() {
2603        if (jj_scan_token(req)) return true;
2604        if (jj_3R_90()) return true;
2605        return false;
2606      }
2607    
2608      private boolean jj_3R_99() {
2609        if (jj_scan_token(ge)) return true;
2610        if (jj_3R_90()) return true;
2611        return false;
2612      }
2613    
2614      private boolean jj_3R_98() {
2615        if (jj_scan_token(le)) return true;
2616        if (jj_3R_90()) return true;
2617        return false;
2618      }
2619    
2620      private boolean jj_3R_97() {
2621        if (jj_scan_token(gt)) return true;
2622        if (jj_3R_90()) return true;
2623        return false;
2624      }
2625    
2626      private boolean jj_3R_91() {
2627        Token xsp;
2628        xsp = jj_scanpos;
2629        if (jj_3R_96()) {
2630        jj_scanpos = xsp;
2631        if (jj_3R_97()) {
2632        jj_scanpos = xsp;
2633        if (jj_3R_98()) {
2634        jj_scanpos = xsp;
2635        if (jj_3R_99()) {
2636        jj_scanpos = xsp;
2637        if (jj_3R_100()) {
2638        jj_scanpos = xsp;
2639        if (jj_3R_101()) return true;
2640        }
2641        }
2642        }
2643        }
2644        }
2645        return false;
2646      }
2647    
2648      private boolean jj_3R_96() {
2649        if (jj_scan_token(lt)) return true;
2650        if (jj_3R_90()) return true;
2651        return false;
2652      }
2653    
2654      private boolean jj_3R_88() {
2655        if (jj_3R_90()) return true;
2656        Token xsp;
2657        xsp = jj_scanpos;
2658        if (jj_3R_91()) jj_scanpos = xsp;
2659        return false;
2660      }
2661    
2662      private boolean jj_3R_93() {
2663        if (jj_scan_token(ne)) return true;
2664        if (jj_3R_88()) return true;
2665        return false;
2666      }
2667    
2668      private boolean jj_3R_89() {
2669        Token xsp;
2670        xsp = jj_scanpos;
2671        if (jj_3R_92()) {
2672        jj_scanpos = xsp;
2673        if (jj_3R_93()) return true;
2674        }
2675        return false;
2676      }
2677    
2678      private boolean jj_3R_92() {
2679        if (jj_scan_token(eq)) return true;
2680        if (jj_3R_88()) return true;
2681        return false;
2682      }
2683    
2684      private boolean jj_3R_86() {
2685        if (jj_3R_88()) return true;
2686        Token xsp;
2687        xsp = jj_scanpos;
2688        if (jj_3R_89()) jj_scanpos = xsp;
2689        return false;
2690      }
2691    
2692      private boolean jj_3R_87() {
2693        if (jj_scan_token(and)) return true;
2694        if (jj_3R_86()) return true;
2695        return false;
2696      }
2697    
2698      private boolean jj_3R_84() {
2699        if (jj_3R_86()) return true;
2700        Token xsp;
2701        while (true) {
2702          xsp = jj_scanpos;
2703          if (jj_3R_87()) { jj_scanpos = xsp; break; }
2704        }
2705        return false;
2706      }
2707    
2708      private boolean jj_3R_85() {
2709        if (jj_scan_token(xor)) return true;
2710        if (jj_3R_84()) return true;
2711        return false;
2712      }
2713    
2714      private boolean jj_3R_82() {
2715        if (jj_3R_84()) return true;
2716        Token xsp;
2717        while (true) {
2718          xsp = jj_scanpos;
2719          if (jj_3R_85()) { jj_scanpos = xsp; break; }
2720        }
2721        return false;
2722      }
2723    
2724      private boolean jj_3R_83() {
2725        if (jj_scan_token(or)) return true;
2726        if (jj_3R_82()) return true;
2727        return false;
2728      }
2729    
2730      private boolean jj_3R_75() {
2731        if (jj_3R_82()) return true;
2732        Token xsp;
2733        while (true) {
2734          xsp = jj_scanpos;
2735          if (jj_3R_83()) { jj_scanpos = xsp; break; }
2736        }
2737        return false;
2738      }
2739    
2740      private boolean jj_3R_77() {
2741        if (jj_scan_token(AND)) return true;
2742        if (jj_3R_75()) return true;
2743        return false;
2744      }
2745    
2746      private boolean jj_3R_62() {
2747        if (jj_3R_75()) return true;
2748        Token xsp;
2749        while (true) {
2750          xsp = jj_scanpos;
2751          if (jj_3R_77()) { jj_scanpos = xsp; break; }
2752        }
2753        return false;
2754      }
2755    
2756      private boolean jj_3R_66() {
2757        if (jj_scan_token(OR)) return true;
2758        if (jj_3R_62()) return true;
2759        return false;
2760      }
2761    
2762      private boolean jj_3R_44() {
2763        if (jj_3R_62()) return true;
2764        Token xsp;
2765        while (true) {
2766          xsp = jj_scanpos;
2767          if (jj_3R_66()) { jj_scanpos = xsp; break; }
2768        }
2769        return false;
2770      }
2771    
2772      private boolean jj_3R_68() {
2773        if (jj_scan_token(ELVIS)) return true;
2774        if (jj_3R_20()) return true;
2775        return false;
2776      }
2777    
2778      private boolean jj_3R_67() {
2779        if (jj_scan_token(QMARK)) return true;
2780        if (jj_3R_20()) return true;
2781        if (jj_scan_token(COLON)) return true;
2782        if (jj_3R_20()) return true;
2783        return false;
2784      }
2785    
2786      private boolean jj_3R_55() {
2787        Token xsp;
2788        xsp = jj_scanpos;
2789        if (jj_3R_67()) {
2790        jj_scanpos = xsp;
2791        if (jj_3R_68()) return true;
2792        }
2793        return false;
2794      }
2795    
2796      private boolean jj_3R_27() {
2797        if (jj_3R_44()) return true;
2798        Token xsp;
2799        xsp = jj_scanpos;
2800        if (jj_3R_55()) jj_scanpos = xsp;
2801        return false;
2802      }
2803    
2804      private boolean jj_3R_42() {
2805        if (jj_scan_token(assign)) return true;
2806        if (jj_3R_20()) return true;
2807        return false;
2808      }
2809    
2810      private boolean jj_3R_142() {
2811        if (jj_scan_token(LBRACKET)) return true;
2812        if (jj_3R_20()) return true;
2813        if (jj_scan_token(RBRACKET)) return true;
2814        return false;
2815      }
2816    
2817      private boolean jj_3_2() {
2818        if (jj_scan_token(SEMICOL)) return true;
2819        return false;
2820      }
2821    
2822      private boolean jj_3R_81() {
2823        if (jj_scan_token(IDENTIFIER)) return true;
2824        return false;
2825      }
2826    
2827      private boolean jj_3R_74() {
2828        if (jj_scan_token(VAR)) return true;
2829        if (jj_3R_81()) return true;
2830        return false;
2831      }
2832    
2833      private boolean jj_3R_20() {
2834        if (jj_3R_27()) return true;
2835        Token xsp;
2836        xsp = jj_scanpos;
2837        if (jj_3R_42()) jj_scanpos = xsp;
2838        return false;
2839      }
2840    
2841      private boolean jj_3R_73() {
2842        if (jj_scan_token(RETURN)) return true;
2843        if (jj_3R_20()) return true;
2844        return false;
2845      }
2846    
2847      private boolean jj_3R_51() {
2848        if (jj_scan_token(LPAREN)) return true;
2849        if (jj_3R_20()) return true;
2850        if (jj_scan_token(RPAREN)) return true;
2851        Token xsp;
2852        while (true) {
2853          xsp = jj_scanpos;
2854          if (jj_3R_142()) { jj_scanpos = xsp; break; }
2855        }
2856        return false;
2857      }
2858    
2859      private boolean jj_3_20() {
2860        if (jj_scan_token(LPAREN)) return true;
2861        if (jj_3R_20()) return true;
2862        return false;
2863      }
2864    
2865      private boolean jj_3R_79() {
2866        if (jj_scan_token(FOREACH)) return true;
2867        if (jj_scan_token(LPAREN)) return true;
2868        return false;
2869      }
2870    
2871      private boolean jj_3R_70() {
2872        Token xsp;
2873        xsp = jj_scanpos;
2874        if (jj_3R_78()) {
2875        jj_scanpos = xsp;
2876        if (jj_3R_79()) return true;
2877        }
2878        return false;
2879      }
2880    
2881      private boolean jj_3R_78() {
2882        if (jj_scan_token(FOR)) return true;
2883        if (jj_scan_token(LPAREN)) return true;
2884        return false;
2885      }
2886    
2887      private boolean jj_3_19() {
2888        if (jj_scan_token(LBRACKET)) return true;
2889        return false;
2890      }
2891    
2892      private boolean jj_3_18() {
2893        if (jj_scan_token(LCURLY)) return true;
2894        return false;
2895      }
2896    
2897      private boolean jj_3R_80() {
2898        if (jj_3R_20()) return true;
2899        return false;
2900      }
2901    
2902      private boolean jj_3R_38() {
2903        if (jj_3R_21()) return true;
2904        return false;
2905      }
2906    
2907      private boolean jj_3_17() {
2908        if (jj_3R_21()) return true;
2909        if (jj_scan_token(LPAREN)) return true;
2910        return false;
2911      }
2912    
2913      private boolean jj_3R_71() {
2914        if (jj_scan_token(WHILE)) return true;
2915        if (jj_scan_token(LPAREN)) return true;
2916        return false;
2917      }
2918    
2919      private boolean jj_3R_37() {
2920        if (jj_3R_52()) return true;
2921        return false;
2922      }
2923    
2924      private boolean jj_3_16() {
2925        if (jj_3R_21()) return true;
2926        if (jj_scan_token(COLON)) return true;
2927        if (jj_3R_21()) return true;
2928        if (jj_scan_token(LPAREN)) return true;
2929        return false;
2930      }
2931    
2932      private boolean jj_3R_36() {
2933        if (jj_3R_51()) return true;
2934        return false;
2935      }
2936    
2937      private boolean jj_3_15() {
2938        if (jj_3R_21()) return true;
2939        if (jj_scan_token(LBRACKET)) return true;
2940        return false;
2941      }
2942    
2943      private boolean jj_3R_35() {
2944        if (jj_3R_50()) return true;
2945        return false;
2946      }
2947    
2948      private boolean jj_3_14() {
2949        if (jj_scan_token(NEW)) return true;
2950        return false;
2951      }
2952    
2953      private boolean jj_3R_69() {
2954        if (jj_scan_token(IF)) return true;
2955        if (jj_scan_token(LPAREN)) return true;
2956        return false;
2957      }
2958    
2959      private boolean jj_3R_34() {
2960        if (jj_3R_49()) return true;
2961        return false;
2962      }
2963    
2964      private boolean jj_3R_26() {
2965        if (jj_3R_43()) return true;
2966        return false;
2967      }
2968    
2969      private boolean jj_3R_33() {
2970        if (jj_3R_48()) return true;
2971        return false;
2972      }
2973    
2974      private boolean jj_3R_32() {
2975        if (jj_3R_47()) return true;
2976        return false;
2977      }
2978    
2979      private boolean jj_3R_72() {
2980        if (jj_3R_20()) return true;
2981        Token xsp;
2982        while (true) {
2983          xsp = jj_scanpos;
2984          if (jj_3R_80()) { jj_scanpos = xsp; break; }
2985        }
2986        xsp = jj_scanpos;
2987        if (jj_3_2()) jj_scanpos = xsp;
2988        return false;
2989      }
2990    
2991      private boolean jj_3R_31() {
2992        if (jj_3R_46()) return true;
2993        return false;
2994      }
2995    
2996      private boolean jj_3R_149() {
2997        if (jj_3R_150()) return true;
2998        return false;
2999      }
3000    
3001      private boolean jj_3R_30() {
3002        if (jj_3R_45()) return true;
3003        return false;
3004      }
3005    
3006      private boolean jj_3R_148() {
3007        if (jj_3R_131()) return true;
3008        return false;
3009      }
3010    
3011      private boolean jj_3R_22() {
3012        Token xsp;
3013        xsp = jj_scanpos;
3014        if (jj_3R_30()) {
3015        jj_scanpos = xsp;
3016        if (jj_3R_31()) {
3017        jj_scanpos = xsp;
3018        if (jj_3R_32()) {
3019        jj_scanpos = xsp;
3020        if (jj_3R_33()) {
3021        jj_scanpos = xsp;
3022        if (jj_3R_34()) {
3023        jj_scanpos = xsp;
3024        if (jj_3R_35()) {
3025        jj_scanpos = xsp;
3026        if (jj_3R_36()) {
3027        jj_scanpos = xsp;
3028        if (jj_3R_37()) {
3029        jj_scanpos = xsp;
3030        if (jj_3R_38()) return true;
3031        }
3032        }
3033        }
3034        }
3035        }
3036        }
3037        }
3038        }
3039        if (jj_3R_39()) return true;
3040        return false;
3041      }
3042    
3043      private boolean jj_3R_147() {
3044        if (jj_3R_21()) return true;
3045        return false;
3046      }
3047    
3048      private boolean jj_3R_19() {
3049        if (jj_scan_token(LCURLY)) return true;
3050        Token xsp;
3051        while (true) {
3052          xsp = jj_scanpos;
3053          if (jj_3R_26()) { jj_scanpos = xsp; break; }
3054        }
3055        if (jj_scan_token(RCURLY)) return true;
3056        return false;
3057      }
3058    
3059      private boolean jj_3_13() {
3060        if (jj_3R_21()) return true;
3061        if (jj_scan_token(LBRACKET)) return true;
3062        return false;
3063      }
3064    
3065      private boolean jj_3R_61() {
3066        if (jj_3R_74()) return true;
3067        return false;
3068      }
3069    
3070      private boolean jj_3R_60() {
3071        if (jj_3R_73()) return true;
3072        return false;
3073      }
3074    
3075      private boolean jj_3R_59() {
3076        if (jj_3R_72()) return true;
3077        return false;
3078      }
3079    
3080      private boolean jj_3R_58() {
3081        if (jj_3R_71()) return true;
3082        return false;
3083      }
3084    
3085      private boolean jj_3R_63() {
3086        if (jj_scan_token(LBRACKET)) return true;
3087        if (jj_3R_20()) return true;
3088        if (jj_scan_token(RBRACKET)) return true;
3089        return false;
3090      }
3091    
3092      private boolean jj_3_12() {
3093        if (jj_3R_25()) return true;
3094        return false;
3095      }
3096    
3097      private boolean jj_3R_24() {
3098        if (jj_3R_20()) return true;
3099        return false;
3100      }
3101    
3102      private boolean jj_3R_57() {
3103        if (jj_3R_70()) return true;
3104        return false;
3105      }
3106    
3107      private boolean jj_3R_144() {
3108        Token xsp;
3109        xsp = jj_scanpos;
3110        if (jj_3_12()) {
3111        jj_scanpos = xsp;
3112        if (jj_3R_147()) {
3113        jj_scanpos = xsp;
3114        if (jj_3R_148()) {
3115        jj_scanpos = xsp;
3116        if (jj_3R_149()) return true;
3117        }
3118        }
3119        }
3120        return false;
3121      }
3122    
3123      private boolean jj_3R_56() {
3124        if (jj_3R_69()) return true;
3125        return false;
3126      }
3127    
3128      private boolean jj_3_1() {
3129        if (jj_3R_19()) return true;
3130        return false;
3131      }
3132    
3133      private boolean jj_3R_23() {
3134        if (jj_3R_20()) return true;
3135        return false;
3136      }
3137    
3138      private boolean jj_3R_145() {
3139        if (jj_scan_token(COMMA)) return true;
3140        if (jj_3R_20()) return true;
3141        return false;
3142      }
3143    
3144      private boolean jj_3R_143() {
3145        if (jj_3R_46()) return true;
3146        return false;
3147      }
3148    
3149      private boolean jj_3R_43() {
3150        Token xsp;
3151        xsp = jj_scanpos;
3152        if (jj_scan_token(29)) {
3153        jj_scanpos = xsp;
3154        if (jj_3_1()) {
3155        jj_scanpos = xsp;
3156        if (jj_3R_56()) {
3157        jj_scanpos = xsp;
3158        if (jj_3R_57()) {
3159        jj_scanpos = xsp;
3160        if (jj_3R_58()) {
3161        jj_scanpos = xsp;
3162        if (jj_3R_59()) {
3163        jj_scanpos = xsp;
3164        if (jj_3R_60()) {
3165        jj_scanpos = xsp;
3166        if (jj_3R_61()) return true;
3167        }
3168        }
3169        }
3170        }
3171        }
3172        }
3173        }
3174        return false;
3175      }
3176    
3177      private boolean jj_3R_53() {
3178        if (jj_scan_token(DOT)) return true;
3179        Token xsp;
3180        xsp = jj_scanpos;
3181        if (jj_3R_143()) {
3182        jj_scanpos = xsp;
3183        if (jj_3R_144()) return true;
3184        }
3185        return false;
3186      }
3187    
3188      private boolean jj_3R_39() {
3189        Token xsp;
3190        while (true) {
3191          xsp = jj_scanpos;
3192          if (jj_3R_53()) { jj_scanpos = xsp; break; }
3193        }
3194        return false;
3195      }
3196    
3197      private boolean jj_3_11() {
3198        if (jj_scan_token(LBRACKET)) return true;
3199        Token xsp;
3200        xsp = jj_scanpos;
3201        if (jj_3R_24()) {
3202        jj_scanpos = xsp;
3203        if (jj_scan_token(28)) return true;
3204        }
3205        return false;
3206      }
3207    
3208      private boolean jj_3R_135() {
3209        if (jj_scan_token(COMMA)) return true;
3210        if (jj_3R_20()) return true;
3211        return false;
3212      }
3213    
3214      private boolean jj_3R_46() {
3215        if (jj_3R_21()) return true;
3216        Token xsp;
3217        if (jj_3R_63()) return true;
3218        while (true) {
3219          xsp = jj_scanpos;
3220          if (jj_3R_63()) { jj_scanpos = xsp; break; }
3221        }
3222        return false;
3223      }
3224    
3225      private boolean jj_3_10() {
3226        if (jj_scan_token(LCURLY)) return true;
3227        Token xsp;
3228        xsp = jj_scanpos;
3229        if (jj_3R_23()) jj_scanpos = xsp;
3230        if (jj_scan_token(COLON)) return true;
3231        return false;
3232      }
3233    
3234      private boolean jj_3_9() {
3235        if (jj_scan_token(NEW)) return true;
3236        if (jj_scan_token(LPAREN)) return true;
3237        return false;
3238      }
3239    
3240      private boolean jj_3_8() {
3241        if (jj_scan_token(SIZE)) return true;
3242        return false;
3243      }
3244    
3245      private boolean jj_3_7() {
3246        if (jj_scan_token(EMPTY)) return true;
3247        return false;
3248      }
3249    
3250      private boolean jj_3R_140() {
3251        if (jj_3R_20()) return true;
3252        Token xsp;
3253        while (true) {
3254          xsp = jj_scanpos;
3255          if (jj_3R_145()) { jj_scanpos = xsp; break; }
3256        }
3257        return false;
3258      }
3259    
3260      private boolean jj_3R_146() {
3261        if (jj_scan_token(COMMA)) return true;
3262        if (jj_3R_20()) return true;
3263        return false;
3264      }
3265    
3266      private boolean jj_3R_120() {
3267        if (jj_3R_123()) return true;
3268        return false;
3269      }
3270    
3271      private boolean jj_3R_119() {
3272        if (jj_3R_50()) return true;
3273        return false;
3274      }
3275    
3276      private boolean jj_3R_118() {
3277        if (jj_3R_49()) return true;
3278        return false;
3279      }
3280    
3281      private boolean jj_3R_117() {
3282        if (jj_3R_45()) return true;
3283        return false;
3284      }
3285    
3286      private boolean jj_3R_130() {
3287        if (jj_3R_20()) return true;
3288        Token xsp;
3289        while (true) {
3290          xsp = jj_scanpos;
3291          if (jj_3R_135()) { jj_scanpos = xsp; break; }
3292        }
3293        return false;
3294      }
3295    
3296      private boolean jj_3R_116() {
3297        if (jj_3R_122()) return true;
3298        return false;
3299      }
3300    
3301      private boolean jj_3R_115() {
3302        if (jj_3R_121()) return true;
3303        return false;
3304      }
3305    
3306      private boolean jj_3_6() {
3307        if (jj_3R_22()) return true;
3308        return false;
3309      }
3310    
3311      private boolean jj_3R_114() {
3312        Token xsp;
3313        xsp = jj_scanpos;
3314        if (jj_3_6()) {
3315        jj_scanpos = xsp;
3316        if (jj_3R_115()) {
3317        jj_scanpos = xsp;
3318        if (jj_3R_116()) {
3319        jj_scanpos = xsp;
3320        if (jj_3R_117()) {
3321        jj_scanpos = xsp;
3322        if (jj_3R_118()) {
3323        jj_scanpos = xsp;
3324        if (jj_3R_119()) {
3325        jj_scanpos = xsp;
3326        if (jj_3R_120()) return true;
3327        }
3328        }
3329        }
3330        }
3331        }
3332        }
3333        return false;
3334      }
3335    
3336      private boolean jj_3R_141() {
3337        if (jj_3R_20()) return true;
3338        Token xsp;
3339        while (true) {
3340          xsp = jj_scanpos;
3341          if (jj_3R_146()) { jj_scanpos = xsp; break; }
3342        }
3343        return false;
3344      }
3345    
3346      private boolean jj_3_5() {
3347        if (jj_3R_21()) return true;
3348        if (jj_scan_token(LPAREN)) return true;
3349        return false;
3350      }
3351    
3352      private boolean jj_3R_45() {
3353        if (jj_scan_token(NEW)) return true;
3354        if (jj_scan_token(LPAREN)) return true;
3355        Token xsp;
3356        xsp = jj_scanpos;
3357        if (jj_3R_130()) jj_scanpos = xsp;
3358        if (jj_scan_token(RPAREN)) return true;
3359        return false;
3360      }
3361    
3362      private boolean jj_3_4() {
3363        if (jj_scan_token(SIZE)) return true;
3364        return false;
3365      }
3366    
3367      private boolean jj_3R_54() {
3368        if (jj_scan_token(SIZE)) return true;
3369        if (jj_scan_token(LPAREN)) return true;
3370        if (jj_scan_token(RPAREN)) return true;
3371        return false;
3372      }
3373    
3374      private boolean jj_3R_41() {
3375        if (jj_3R_48()) return true;
3376        return false;
3377      }
3378    
3379      private boolean jj_3R_40() {
3380        if (jj_3R_54()) return true;
3381        return false;
3382      }
3383    
3384      private boolean jj_3R_25() {
3385        Token xsp;
3386        xsp = jj_scanpos;
3387        if (jj_3R_40()) {
3388        jj_scanpos = xsp;
3389        if (jj_3R_41()) return true;
3390        }
3391        return false;
3392      }
3393    
3394      private boolean jj_3R_48() {
3395        if (jj_3R_21()) return true;
3396        if (jj_scan_token(LPAREN)) return true;
3397        Token xsp;
3398        xsp = jj_scanpos;
3399        if (jj_3R_141()) jj_scanpos = xsp;
3400        if (jj_scan_token(RPAREN)) return true;
3401        return false;
3402      }
3403    
3404      private boolean jj_3R_47() {
3405        if (jj_3R_21()) return true;
3406        if (jj_scan_token(COLON)) return true;
3407        if (jj_3R_21()) return true;
3408        if (jj_scan_token(LPAREN)) return true;
3409        Token xsp;
3410        xsp = jj_scanpos;
3411        if (jj_3R_140()) jj_scanpos = xsp;
3412        if (jj_scan_token(RPAREN)) return true;
3413        return false;
3414      }
3415    
3416      private boolean jj_3R_122() {
3417        if (jj_scan_token(SIZE)) return true;
3418        if (jj_scan_token(LPAREN)) return true;
3419        if (jj_3R_20()) return true;
3420        if (jj_scan_token(RPAREN)) return true;
3421        return false;
3422      }
3423    
3424      private boolean jj_3R_124() {
3425        if (jj_scan_token(EMPTY)) return true;
3426        if (jj_3R_22()) return true;
3427        return false;
3428      }
3429    
3430      private boolean jj_3_3() {
3431        if (jj_scan_token(EMPTY)) return true;
3432        if (jj_scan_token(LPAREN)) return true;
3433        if (jj_3R_20()) return true;
3434        if (jj_scan_token(RPAREN)) return true;
3435        return false;
3436      }
3437    
3438      private boolean jj_3R_121() {
3439        Token xsp;
3440        xsp = jj_scanpos;
3441        if (jj_3_3()) {
3442        jj_scanpos = xsp;
3443        if (jj_3R_124()) return true;
3444        }
3445        return false;
3446      }
3447    
3448      private boolean jj_3R_137() {
3449        if (jj_scan_token(COMMA)) return true;
3450        if (jj_3R_20()) return true;
3451        return false;
3452      }
3453    
3454      private boolean jj_3R_136() {
3455        if (jj_scan_token(COMMA)) return true;
3456        if (jj_3R_76()) return true;
3457        return false;
3458      }
3459    
3460      private boolean jj_3R_76() {
3461        if (jj_3R_20()) return true;
3462        if (jj_scan_token(COLON)) return true;
3463        if (jj_3R_20()) return true;
3464        return false;
3465      }
3466    
3467      private boolean jj_3R_64() {
3468        if (jj_3R_76()) return true;
3469        Token xsp;
3470        while (true) {
3471          xsp = jj_scanpos;
3472          if (jj_3R_136()) { jj_scanpos = xsp; break; }
3473        }
3474        return false;
3475      }
3476    
3477      private boolean jj_3R_65() {
3478        if (jj_3R_20()) return true;
3479        Token xsp;
3480        while (true) {
3481          xsp = jj_scanpos;
3482          if (jj_3R_137()) { jj_scanpos = xsp; break; }
3483        }
3484        return false;
3485      }
3486    
3487      private boolean jj_3R_49() {
3488        if (jj_scan_token(LCURLY)) return true;
3489        Token xsp;
3490        xsp = jj_scanpos;
3491        if (jj_3R_64()) {
3492        jj_scanpos = xsp;
3493        if (jj_scan_token(30)) return true;
3494        }
3495        if (jj_scan_token(RCURLY)) return true;
3496        return false;
3497      }
3498    
3499      private boolean jj_3R_50() {
3500        if (jj_scan_token(LBRACKET)) return true;
3501        Token xsp;
3502        xsp = jj_scanpos;
3503        if (jj_3R_65()) jj_scanpos = xsp;
3504        if (jj_scan_token(RBRACKET)) return true;
3505        return false;
3506      }
3507    
3508      private boolean jj_3R_52() {
3509        if (jj_scan_token(STRING_LITERAL)) return true;
3510        return false;
3511      }
3512    
3513      private boolean jj_3R_132() {
3514        if (jj_scan_token(FLOAT_LITERAL)) return true;
3515        return false;
3516      }
3517    
3518      private boolean jj_3R_131() {
3519        if (jj_scan_token(INTEGER_LITERAL)) return true;
3520        return false;
3521      }
3522    
3523      private boolean jj_3R_139() {
3524        if (jj_scan_token(FALSE)) return true;
3525        return false;
3526      }
3527    
3528      private boolean jj_3R_133() {
3529        Token xsp;
3530        xsp = jj_scanpos;
3531        if (jj_3R_138()) {
3532        jj_scanpos = xsp;
3533        if (jj_3R_139()) return true;
3534        }
3535        return false;
3536      }
3537    
3538      private boolean jj_3R_138() {
3539        if (jj_scan_token(TRUE)) return true;
3540        return false;
3541      }
3542    
3543      private boolean jj_3R_134() {
3544        if (jj_scan_token(NULL)) return true;
3545        return false;
3546      }
3547    
3548      private boolean jj_3R_129() {
3549        if (jj_3R_134()) return true;
3550        return false;
3551      }
3552    
3553      private boolean jj_3R_128() {
3554        if (jj_3R_52()) return true;
3555        return false;
3556      }
3557    
3558      private boolean jj_3R_127() {
3559        if (jj_3R_133()) return true;
3560        return false;
3561      }
3562    
3563      private boolean jj_3R_126() {
3564        if (jj_3R_132()) return true;
3565        return false;
3566      }
3567    
3568      private boolean jj_3R_123() {
3569        Token xsp;
3570        xsp = jj_scanpos;
3571        if (jj_3R_125()) {
3572        jj_scanpos = xsp;
3573        if (jj_3R_126()) {
3574        jj_scanpos = xsp;
3575        if (jj_3R_127()) {
3576        jj_scanpos = xsp;
3577        if (jj_3R_128()) {
3578        jj_scanpos = xsp;
3579        if (jj_3R_129()) return true;
3580        }
3581        }
3582        }
3583        }
3584        return false;
3585      }
3586    
3587      private boolean jj_3R_125() {
3588        if (jj_3R_131()) return true;
3589        return false;
3590      }
3591    
3592      private boolean jj_3R_150() {
3593        if (jj_scan_token(STRING_LITERAL)) return true;
3594        return false;
3595      }
3596    
3597      private boolean jj_3R_29() {
3598        if (jj_scan_token(REGISTER)) return true;
3599        return false;
3600      }
3601    
3602      private boolean jj_3R_21() {
3603        Token xsp;
3604        xsp = jj_scanpos;
3605        if (jj_3R_28()) {
3606        jj_scanpos = xsp;
3607        if (jj_3R_29()) return true;
3608        }
3609        return false;
3610      }
3611    
3612      private boolean jj_3R_28() {
3613        if (jj_scan_token(IDENTIFIER)) return true;
3614        return false;
3615      }
3616    
3617      private boolean jj_3R_95() {
3618        if (jj_3R_104()) return true;
3619        if (jj_3R_94()) return true;
3620        return false;
3621      }
3622    
3623      private boolean jj_3R_108() {
3624        if (jj_3R_114()) return true;
3625        return false;
3626      }
3627    
3628      private boolean jj_3R_107() {
3629        if (jj_scan_token(not)) return true;
3630        if (jj_3R_102()) return true;
3631        return false;
3632      }
3633    
3634      private boolean jj_3R_106() {
3635        if (jj_scan_token(tilda)) return true;
3636        if (jj_3R_102()) return true;
3637        return false;
3638      }
3639    
3640      private boolean jj_3R_102() {
3641        Token xsp;
3642        xsp = jj_scanpos;
3643        if (jj_3R_105()) {
3644        jj_scanpos = xsp;
3645        if (jj_3R_106()) {
3646        jj_scanpos = xsp;
3647        if (jj_3R_107()) {
3648        jj_scanpos = xsp;
3649        if (jj_3R_108()) return true;
3650        }
3651        }
3652        }
3653        return false;
3654      }
3655    
3656      private boolean jj_3R_105() {
3657        if (jj_scan_token(minus)) return true;
3658        if (jj_3R_102()) return true;
3659        return false;
3660      }
3661    
3662      private boolean jj_3R_111() {
3663        if (jj_scan_token(mod)) return true;
3664        if (jj_3R_102()) return true;
3665        return false;
3666      }
3667    
3668      private boolean jj_3R_110() {
3669        if (jj_scan_token(div)) return true;
3670        if (jj_3R_102()) return true;
3671        return false;
3672      }
3673    
3674      private boolean jj_3R_103() {
3675        Token xsp;
3676        xsp = jj_scanpos;
3677        if (jj_3R_109()) {
3678        jj_scanpos = xsp;
3679        if (jj_3R_110()) {
3680        jj_scanpos = xsp;
3681        if (jj_3R_111()) return true;
3682        }
3683        }
3684        return false;
3685      }
3686    
3687      private boolean jj_3R_109() {
3688        if (jj_scan_token(mult)) return true;
3689        if (jj_3R_102()) return true;
3690        return false;
3691      }
3692    
3693      /** Generated Token Manager. */
3694      public ParserTokenManager token_source;
3695      SimpleCharStream jj_input_stream;
3696      /** Current token. */
3697      public Token token;
3698      /** Next token. */
3699      public Token jj_nt;
3700      private int jj_ntk;
3701      private Token jj_scanpos, jj_lastpos;
3702      private int jj_la;
3703      private int jj_gen;
3704      final private int[] jj_la1 = new int[47];
3705      static private int[] jj_la1_0;
3706      static private int[] jj_la1_1;
3707      static {
3708          jj_la1_init_0();
3709          jj_la1_init_1();
3710       }
3711       private static void jj_la1_init_0() {
3712          jj_la1_0 = new int[] {0x2abffa00,0x20000000,0xabffa00,0x2abffa00,0xa9f4000,0x400,0x1800,0x0,0x0,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xa9f4000,0x0,0x1c0000,0x180000,0x80000000,0xa9f4000,0x80000000,0x4a9f4000,0x10000,0x80000000,0xa9f4000,0x80000000,0xa9f4000,0x80000000,0xa9f4000,0x1c0000,0x8000000,0x0,0x0,0x20000,0x0,0x8000000,};
3713       }
3714       private static void jj_la1_init_1() {
3715          jj_la1_1 = new int[] {0x79150000,0x0,0x79150000,0x79150000,0x79150000,0x0,0x0,0x2000,0x2000,0x9000000,0x6,0x6,0x10,0x8,0x400000,0x800000,0x200000,0x60,0x60,0x1f80,0x1f80,0x60000,0x60000,0x8c000,0x8c000,0x79150000,0x9000000,0x70000000,0x0,0x0,0x79150000,0x0,0x79150000,0x0,0x0,0x79150000,0x0,0x79150000,0x0,0x79150000,0x70000000,0x0,0x1,0x59000000,0x59000000,0x49000000,0x0,};
3716       }
3717      final private JJCalls[] jj_2_rtns = new JJCalls[20];
3718      private boolean jj_rescan = false;
3719      private int jj_gc = 0;
3720    
3721      /** Constructor with InputStream. */
3722      public Parser(java.io.InputStream stream) {
3723         this(stream, null);
3724      }
3725      /** Constructor with InputStream and supplied encoding */
3726      public Parser(java.io.InputStream stream, String encoding) {
3727        try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
3728        token_source = new ParserTokenManager(jj_input_stream);
3729        token = new Token();
3730        jj_ntk = -1;
3731        jj_gen = 0;
3732        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3733        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3734      }
3735    
3736      /** Reinitialise. */
3737      public void ReInit(java.io.InputStream stream) {
3738         ReInit(stream, null);
3739      }
3740      /** Reinitialise. */
3741      public void ReInit(java.io.InputStream stream, String encoding) {
3742        try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
3743        token_source.ReInit(jj_input_stream);
3744        token = new Token();
3745        jj_ntk = -1;
3746        jjtree.reset();
3747        jj_gen = 0;
3748        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3749        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3750      }
3751    
3752      /** Constructor. */
3753      public Parser(java.io.Reader stream) {
3754        jj_input_stream = new SimpleCharStream(stream, 1, 1);
3755        token_source = new ParserTokenManager(jj_input_stream);
3756        token = new Token();
3757        jj_ntk = -1;
3758        jj_gen = 0;
3759        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3760        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3761      }
3762    
3763      /** Reinitialise. */
3764      public void ReInit(java.io.Reader stream) {
3765        jj_input_stream.ReInit(stream, 1, 1);
3766        token_source.ReInit(jj_input_stream);
3767        token = new Token();
3768        jj_ntk = -1;
3769        jjtree.reset();
3770        jj_gen = 0;
3771        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3772        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3773      }
3774    
3775      /** Constructor with generated Token Manager. */
3776      public Parser(ParserTokenManager tm) {
3777        token_source = tm;
3778        token = new Token();
3779        jj_ntk = -1;
3780        jj_gen = 0;
3781        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3782        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3783      }
3784    
3785      /** Reinitialise. */
3786      public void ReInit(ParserTokenManager tm) {
3787        token_source = tm;
3788        token = new Token();
3789        jj_ntk = -1;
3790        jjtree.reset();
3791        jj_gen = 0;
3792        for (int i = 0; i < 47; i++) jj_la1[i] = -1;
3793        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3794      }
3795    
3796      private Token jj_consume_token(int kind) throws ParseException {
3797        Token oldToken;
3798        if ((oldToken = token).next != null) token = token.next;
3799        else token = token.next = token_source.getNextToken();
3800        jj_ntk = -1;
3801        if (token.kind == kind) {
3802          jj_gen++;
3803          if (++jj_gc > 100) {
3804            jj_gc = 0;
3805            for (int i = 0; i < jj_2_rtns.length; i++) {
3806              JJCalls c = jj_2_rtns[i];
3807              while (c != null) {
3808                if (c.gen < jj_gen) c.first = null;
3809                c = c.next;
3810              }
3811            }
3812          }
3813          return token;
3814        }
3815        token = oldToken;
3816        jj_kind = kind;
3817        throw generateParseException();
3818      }
3819    
3820      static private final class LookaheadSuccess extends java.lang.Error { }
3821      final private LookaheadSuccess jj_ls = new LookaheadSuccess();
3822      private boolean jj_scan_token(int kind) {
3823        if (jj_scanpos == jj_lastpos) {
3824          jj_la--;
3825          if (jj_scanpos.next == null) {
3826            jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3827          } else {
3828            jj_lastpos = jj_scanpos = jj_scanpos.next;
3829          }
3830        } else {
3831          jj_scanpos = jj_scanpos.next;
3832        }
3833        if (jj_rescan) {
3834          int i = 0; Token tok = token;
3835          while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3836          if (tok != null) jj_add_error_token(kind, i);
3837        }
3838        if (jj_scanpos.kind != kind) return true;
3839        if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
3840        return false;
3841      }
3842    
3843    
3844    /** Get the next Token. */
3845      final public Token getNextToken() {
3846        if (token.next != null) token = token.next;
3847        else token = token.next = token_source.getNextToken();
3848        jj_ntk = -1;
3849        jj_gen++;
3850        return token;
3851      }
3852    
3853    /** Get the specific Token. */
3854      final public Token getToken(int index) {
3855        Token t = token;
3856        for (int i = 0; i < index; i++) {
3857          if (t.next != null) t = t.next;
3858          else t = t.next = token_source.getNextToken();
3859        }
3860        return t;
3861      }
3862    
3863      private int jj_ntk() {
3864        if ((jj_nt=token.next) == null)
3865          return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3866        else
3867          return (jj_ntk = jj_nt.kind);
3868      }
3869    
3870      private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
3871      private int[] jj_expentry;
3872      private int jj_kind = -1;
3873      private int[] jj_lasttokens = new int[100];
3874      private int jj_endpos;
3875    
3876      private void jj_add_error_token(int kind, int pos) {
3877        if (pos >= 100) return;
3878        if (pos == jj_endpos + 1) {
3879          jj_lasttokens[jj_endpos++] = kind;
3880        } else if (jj_endpos != 0) {
3881          jj_expentry = new int[jj_endpos];
3882          for (int i = 0; i < jj_endpos; i++) {
3883            jj_expentry[i] = jj_lasttokens[i];
3884          }
3885          jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
3886            int[] oldentry = (int[])(it.next());
3887            if (oldentry.length == jj_expentry.length) {
3888              for (int i = 0; i < jj_expentry.length; i++) {
3889                if (oldentry[i] != jj_expentry[i]) {
3890                  continue jj_entries_loop;
3891                }
3892              }
3893              jj_expentries.add(jj_expentry);
3894              break jj_entries_loop;
3895            }
3896          }
3897          if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
3898        }
3899      }
3900    
3901      /** Generate ParseException. */
3902      public ParseException generateParseException() {
3903        jj_expentries.clear();
3904        boolean[] la1tokens = new boolean[63];
3905        if (jj_kind >= 0) {
3906          la1tokens[jj_kind] = true;
3907          jj_kind = -1;
3908        }
3909        for (int i = 0; i < 47; i++) {
3910          if (jj_la1[i] == jj_gen) {
3911            for (int j = 0; j < 32; j++) {
3912              if ((jj_la1_0[i] & (1<<j)) != 0) {
3913                la1tokens[j] = true;
3914              }
3915              if ((jj_la1_1[i] & (1<<j)) != 0) {
3916                la1tokens[32+j] = true;
3917              }
3918            }
3919          }
3920        }
3921        for (int i = 0; i < 63; i++) {
3922          if (la1tokens[i]) {
3923            jj_expentry = new int[1];
3924            jj_expentry[0] = i;
3925            jj_expentries.add(jj_expentry);
3926          }
3927        }
3928        jj_endpos = 0;
3929        jj_rescan_token();
3930        jj_add_error_token(0, 0);
3931        int[][] exptokseq = new int[jj_expentries.size()][];
3932        for (int i = 0; i < jj_expentries.size(); i++) {
3933          exptokseq[i] = jj_expentries.get(i);
3934        }
3935        return new ParseException(token, exptokseq, tokenImage);
3936      }
3937    
3938      /** Enable tracing. */
3939      final public void enable_tracing() {
3940      }
3941    
3942      /** Disable tracing. */
3943      final public void disable_tracing() {
3944      }
3945    
3946      private void jj_rescan_token() {
3947        jj_rescan = true;
3948        for (int i = 0; i < 20; i++) {
3949        try {
3950          JJCalls p = jj_2_rtns[i];
3951          do {
3952            if (p.gen > jj_gen) {
3953              jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
3954              switch (i) {
3955                case 0: jj_3_1(); break;
3956                case 1: jj_3_2(); break;
3957                case 2: jj_3_3(); break;
3958                case 3: jj_3_4(); break;
3959                case 4: jj_3_5(); break;
3960                case 5: jj_3_6(); break;
3961                case 6: jj_3_7(); break;
3962                case 7: jj_3_8(); break;
3963                case 8: jj_3_9(); break;
3964                case 9: jj_3_10(); break;
3965                case 10: jj_3_11(); break;
3966                case 11: jj_3_12(); break;
3967                case 12: jj_3_13(); break;
3968                case 13: jj_3_14(); break;
3969                case 14: jj_3_15(); break;
3970                case 15: jj_3_16(); break;
3971                case 16: jj_3_17(); break;
3972                case 17: jj_3_18(); break;
3973                case 18: jj_3_19(); break;
3974                case 19: jj_3_20(); break;
3975              }
3976            }
3977            p = p.next;
3978          } while (p != null);
3979          } catch(LookaheadSuccess ls) { }
3980        }
3981        jj_rescan = false;
3982      }
3983    
3984      private void jj_save(int index, int xla) {
3985        JJCalls p = jj_2_rtns[index];
3986        while (p.gen > jj_gen) {
3987          if (p.next == null) { p = p.next = new JJCalls(); break; }
3988          p = p.next;
3989        }
3990        p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
3991      }
3992    
3993      static final class JJCalls {
3994        int gen;
3995        Token first;
3996        int arg;
3997        JJCalls next;
3998      }
3999    
4000    }