View Javadoc

1   /* Generated By:JavaCC: Do not edit this line. OgnlParser.java */
2   package org.apache.commons.ognl;
3   
4   import java.math.*;
5   
6   /**
7    * OgnlParser is a JavaCC parser class; it translates OGNL expressions into abstract
8    * syntax trees (ASTs) that can then be interpreted by the getValue and setValue methods.
9    */
10  public class OgnlParser/*@bgen(jjtree)*/implements OgnlParserTreeConstants, OgnlParserConstants {/*@bgen(jjtree)*/
11    protected JJTOgnlParserState jjtree = new JJTOgnlParserState();
12  
13  /**
14   * This is the top-level construct of OGNL.
15   */
16    final public Node topLevelExpression() throws ParseException {
17      expression();
18      jj_consume_token(0);
19                           {if (true) return jjtree.rootNode();}
20      throw new Error("Missing return statement in function");
21    }
22  
23  // sequence (level 14)
24    final public void expression() throws ParseException {
25      assignmentExpression();
26      label_1:
27      while (true) {
28        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
29        case 1:
30          ;
31          break;
32        default:
33          jj_la1[0] = jj_gen;
34          break label_1;
35        }
36        jj_consume_token(1);
37                                     ASTSequence jjtn001 = new ASTSequence(JJTSEQUENCE);
38                                     boolean jjtc001 = true;
39                                     jjtree.openNodeScope(jjtn001);
40        try {
41          assignmentExpression();
42        } catch (Throwable jjte001) {
43                                     if (jjtc001) {
44                                       jjtree.clearNodeScope(jjtn001);
45                                       jjtc001 = false;
46                                     } else {
47                                       jjtree.popNode();
48                                     }
49                                     if (jjte001 instanceof RuntimeException) {
50                                       {if (true) throw (RuntimeException)jjte001;}
51                                     }
52                                     if (jjte001 instanceof ParseException) {
53                                       {if (true) throw (ParseException)jjte001;}
54                                     }
55                                     {if (true) throw (Error)jjte001;}
56        } finally {
57                                     if (jjtc001) {
58                                       jjtree.closeNodeScope(jjtn001,  2);
59                                     }
60        }
61      }
62    }
63  
64  // assignment expression (level 13)
65    final public void assignmentExpression() throws ParseException {
66      conditionalTestExpression();
67      switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
68      case 2:
69        jj_consume_token(2);
70                                          ASTAssign jjtn001 = new ASTAssign(JJTASSIGN);
71                                          boolean jjtc001 = true;
72                                          jjtree.openNodeScope(jjtn001);
73        try {
74          assignmentExpression();
75        } catch (Throwable jjte001) {
76                                          if (jjtc001) {
77                                            jjtree.clearNodeScope(jjtn001);
78                                            jjtc001 = false;
79                                          } else {
80                                            jjtree.popNode();
81                                          }
82                                          if (jjte001 instanceof RuntimeException) {
83                                            {if (true) throw (RuntimeException)jjte001;}
84                                          }
85                                          if (jjte001 instanceof ParseException) {
86                                            {if (true) throw (ParseException)jjte001;}
87                                          }
88                                          {if (true) throw (Error)jjte001;}
89        } finally {
90                                          if (jjtc001) {
91                                            jjtree.closeNodeScope(jjtn001,  2);
92                                          }
93        }
94        break;
95      default:
96        jj_la1[1] = jj_gen;
97        ;
98      }
99    }
100 
101 // conditional test (level 12)
102   final public void conditionalTestExpression() throws ParseException {
103     logicalOrExpression();
104     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
105     case 3:
106       jj_consume_token(3);
107       conditionalTestExpression();
108       jj_consume_token(4);
109                                                 ASTTest jjtn001 = new ASTTest(JJTTEST);
110                                                 boolean jjtc001 = true;
111                                                 jjtree.openNodeScope(jjtn001);
112       try {
113         conditionalTestExpression();
114       } catch (Throwable jjte001) {
115                                                 if (jjtc001) {
116                                                   jjtree.clearNodeScope(jjtn001);
117                                                   jjtc001 = false;
118                                                 } else {
119                                                   jjtree.popNode();
120                                                 }
121                                                 if (jjte001 instanceof RuntimeException) {
122                                                   {if (true) throw (RuntimeException)jjte001;}
123                                                 }
124                                                 if (jjte001 instanceof ParseException) {
125                                                   {if (true) throw (ParseException)jjte001;}
126                                                 }
127                                                 {if (true) throw (Error)jjte001;}
128       } finally {
129                                                 if (jjtc001) {
130                                                   jjtree.closeNodeScope(jjtn001,  3);
131                                                 }
132       }
133       break;
134     default:
135       jj_la1[2] = jj_gen;
136       ;
137     }
138   }
139 
140 // logical or (||)  (level 11)
141   final public void logicalOrExpression() throws ParseException {
142     logicalAndExpression();
143     label_2:
144     while (true) {
145       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
146       case 5:
147       case 6:
148         ;
149         break;
150       default:
151         jj_la1[3] = jj_gen;
152         break label_2;
153       }
154       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
155       case 5:
156         jj_consume_token(5);
157         break;
158       case 6:
159         jj_consume_token(6);
160         break;
161       default:
162         jj_la1[4] = jj_gen;
163         jj_consume_token(-1);
164         throw new ParseException();
165       }
166                                             ASTOr jjtn001 = new ASTOr(JJTOR);
167                                             boolean jjtc001 = true;
168                                             jjtree.openNodeScope(jjtn001);
169       try {
170         logicalAndExpression();
171       } catch (Throwable jjte001) {
172                                             if (jjtc001) {
173                                               jjtree.clearNodeScope(jjtn001);
174                                               jjtc001 = false;
175                                             } else {
176                                               jjtree.popNode();
177                                             }
178                                             if (jjte001 instanceof RuntimeException) {
179                                               {if (true) throw (RuntimeException)jjte001;}
180                                             }
181                                             if (jjte001 instanceof ParseException) {
182                                               {if (true) throw (ParseException)jjte001;}
183                                             }
184                                             {if (true) throw (Error)jjte001;}
185       } finally {
186                                             if (jjtc001) {
187                                               jjtree.closeNodeScope(jjtn001,  2);
188                                             }
189       }
190     }
191   }
192 
193 // logical and (&&)  (level 10)
194   final public void logicalAndExpression() throws ParseException {
195     inclusiveOrExpression();
196     label_3:
197     while (true) {
198       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
199       case 7:
200       case 8:
201         ;
202         break;
203       default:
204         jj_la1[5] = jj_gen;
205         break label_3;
206       }
207       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
208       case 7:
209         jj_consume_token(7);
210         break;
211       case 8:
212         jj_consume_token(8);
213         break;
214       default:
215         jj_la1[6] = jj_gen;
216         jj_consume_token(-1);
217         throw new ParseException();
218       }
219                                               ASTAnd jjtn001 = new ASTAnd(JJTAND);
220                                               boolean jjtc001 = true;
221                                               jjtree.openNodeScope(jjtn001);
222       try {
223         inclusiveOrExpression();
224       } catch (Throwable jjte001) {
225                                               if (jjtc001) {
226                                                 jjtree.clearNodeScope(jjtn001);
227                                                 jjtc001 = false;
228                                               } else {
229                                                 jjtree.popNode();
230                                               }
231                                               if (jjte001 instanceof RuntimeException) {
232                                                 {if (true) throw (RuntimeException)jjte001;}
233                                               }
234                                               if (jjte001 instanceof ParseException) {
235                                                 {if (true) throw (ParseException)jjte001;}
236                                               }
237                                               {if (true) throw (Error)jjte001;}
238       } finally {
239                                               if (jjtc001) {
240                                                 jjtree.closeNodeScope(jjtn001,  2);
241                                               }
242       }
243     }
244   }
245 
246 // bitwise or non-short-circuiting or (|)  (level 9)
247   final public void inclusiveOrExpression() throws ParseException {
248     exclusiveOrExpression();
249     label_4:
250     while (true) {
251       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
252       case 9:
253       case 10:
254         ;
255         break;
256       default:
257         jj_la1[7] = jj_gen;
258         break label_4;
259       }
260       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
261       case 9:
262         jj_consume_token(9);
263         break;
264       case 10:
265         jj_consume_token(10);
266         break;
267       default:
268         jj_la1[8] = jj_gen;
269         jj_consume_token(-1);
270         throw new ParseException();
271       }
272                                              ASTBitOr jjtn001 = new ASTBitOr(JJTBITOR);
273                                              boolean jjtc001 = true;
274                                              jjtree.openNodeScope(jjtn001);
275       try {
276         exclusiveOrExpression();
277       } catch (Throwable jjte001) {
278                                              if (jjtc001) {
279                                                jjtree.clearNodeScope(jjtn001);
280                                                jjtc001 = false;
281                                              } else {
282                                                jjtree.popNode();
283                                              }
284                                              if (jjte001 instanceof RuntimeException) {
285                                                {if (true) throw (RuntimeException)jjte001;}
286                                              }
287                                              if (jjte001 instanceof ParseException) {
288                                                {if (true) throw (ParseException)jjte001;}
289                                              }
290                                              {if (true) throw (Error)jjte001;}
291       } finally {
292                                              if (jjtc001) {
293                                                jjtree.closeNodeScope(jjtn001,  2);
294                                              }
295       }
296     }
297   }
298 
299 // exclusive or (^)  (level 8)
300   final public void exclusiveOrExpression() throws ParseException {
301     andExpression();
302     label_5:
303     while (true) {
304       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
305       case 11:
306       case 12:
307         ;
308         break;
309       default:
310         jj_la1[9] = jj_gen;
311         break label_5;
312       }
313       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
314       case 11:
315         jj_consume_token(11);
316         break;
317       case 12:
318         jj_consume_token(12);
319         break;
320       default:
321         jj_la1[10] = jj_gen;
322         jj_consume_token(-1);
323         throw new ParseException();
324       }
325                                      ASTXor jjtn001 = new ASTXor(JJTXOR);
326                                      boolean jjtc001 = true;
327                                      jjtree.openNodeScope(jjtn001);
328       try {
329         andExpression();
330       } catch (Throwable jjte001) {
331                                      if (jjtc001) {
332                                        jjtree.clearNodeScope(jjtn001);
333                                        jjtc001 = false;
334                                      } else {
335                                        jjtree.popNode();
336                                      }
337                                      if (jjte001 instanceof RuntimeException) {
338                                        {if (true) throw (RuntimeException)jjte001;}
339                                      }
340                                      if (jjte001 instanceof ParseException) {
341                                        {if (true) throw (ParseException)jjte001;}
342                                      }
343                                      {if (true) throw (Error)jjte001;}
344       } finally {
345                                      if (jjtc001) {
346                                        jjtree.closeNodeScope(jjtn001,  2);
347                                      }
348       }
349     }
350   }
351 
352 // bitwise or non-short-circuiting and (&)  (level 7)
353   final public void andExpression() throws ParseException {
354     equalityExpression();
355     label_6:
356     while (true) {
357       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
358       case 13:
359       case 14:
360         ;
361         break;
362       default:
363         jj_la1[11] = jj_gen;
364         break label_6;
365       }
366       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
367       case 13:
368         jj_consume_token(13);
369         break;
370       case 14:
371         jj_consume_token(14);
372         break;
373       default:
374         jj_la1[12] = jj_gen;
375         jj_consume_token(-1);
376         throw new ParseException();
377       }
378                                            ASTBitAnd jjtn001 = new ASTBitAnd(JJTBITAND);
379                                            boolean jjtc001 = true;
380                                            jjtree.openNodeScope(jjtn001);
381       try {
382         equalityExpression();
383       } catch (Throwable jjte001) {
384                                            if (jjtc001) {
385                                              jjtree.clearNodeScope(jjtn001);
386                                              jjtc001 = false;
387                                            } else {
388                                              jjtree.popNode();
389                                            }
390                                            if (jjte001 instanceof RuntimeException) {
391                                              {if (true) throw (RuntimeException)jjte001;}
392                                            }
393                                            if (jjte001 instanceof ParseException) {
394                                              {if (true) throw (ParseException)jjte001;}
395                                            }
396                                            {if (true) throw (Error)jjte001;}
397       } finally {
398                                            if (jjtc001) {
399                                              jjtree.closeNodeScope(jjtn001,  2);
400                                            }
401       }
402     }
403   }
404 
405 // equality/inequality (==/!=) (level 6)
406   final public void equalityExpression() throws ParseException {
407     relationalExpression();
408     label_7:
409     while (true) {
410       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
411       case 15:
412       case 16:
413       case 17:
414       case 18:
415         ;
416         break;
417       default:
418         jj_la1[13] = jj_gen;
419         break label_7;
420       }
421       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
422       case 15:
423       case 16:
424         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
425         case 15:
426           jj_consume_token(15);
427           break;
428         case 16:
429           jj_consume_token(16);
430           break;
431         default:
432           jj_la1[14] = jj_gen;
433           jj_consume_token(-1);
434           throw new ParseException();
435         }
436                         ASTEq jjtn001 = new ASTEq(JJTEQ);
437                         boolean jjtc001 = true;
438                         jjtree.openNodeScope(jjtn001);
439         try {
440           relationalExpression();
441         } catch (Throwable jjte001) {
442                         if (jjtc001) {
443                           jjtree.clearNodeScope(jjtn001);
444                           jjtc001 = false;
445                         } else {
446                           jjtree.popNode();
447                         }
448                         if (jjte001 instanceof RuntimeException) {
449                           {if (true) throw (RuntimeException)jjte001;}
450                         }
451                         if (jjte001 instanceof ParseException) {
452                           {if (true) throw (ParseException)jjte001;}
453                         }
454                         {if (true) throw (Error)jjte001;}
455         } finally {
456                         if (jjtc001) {
457                           jjtree.closeNodeScope(jjtn001,  2);
458                         }
459         }
460         break;
461       case 17:
462       case 18:
463         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
464         case 17:
465           jj_consume_token(17);
466           break;
467         case 18:
468           jj_consume_token(18);
469           break;
470         default:
471           jj_la1[15] = jj_gen;
472           jj_consume_token(-1);
473           throw new ParseException();
474         }
475                          ASTNotEq jjtn002 = new ASTNotEq(JJTNOTEQ);
476                          boolean jjtc002 = true;
477                          jjtree.openNodeScope(jjtn002);
478         try {
479           relationalExpression();
480         } catch (Throwable jjte002) {
481                          if (jjtc002) {
482                            jjtree.clearNodeScope(jjtn002);
483                            jjtc002 = false;
484                          } else {
485                            jjtree.popNode();
486                          }
487                          if (jjte002 instanceof RuntimeException) {
488                            {if (true) throw (RuntimeException)jjte002;}
489                          }
490                          if (jjte002 instanceof ParseException) {
491                            {if (true) throw (ParseException)jjte002;}
492                          }
493                          {if (true) throw (Error)jjte002;}
494         } finally {
495                          if (jjtc002) {
496                            jjtree.closeNodeScope(jjtn002,  2);
497                          }
498         }
499         break;
500       default:
501         jj_la1[16] = jj_gen;
502         jj_consume_token(-1);
503         throw new ParseException();
504       }
505     }
506   }
507 
508 // boolean relational expressions (level 5)
509   final public void relationalExpression() throws ParseException {
510     shiftExpression();
511     label_8:
512     while (true) {
513       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
514       case 19:
515       case 20:
516       case 21:
517       case 22:
518       case 23:
519       case 24:
520       case 25:
521       case 26:
522       case 27:
523       case 28:
524         ;
525         break;
526       default:
527         jj_la1[17] = jj_gen;
528         break label_8;
529       }
530       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
531       case 19:
532       case 20:
533         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
534         case 19:
535           jj_consume_token(19);
536           break;
537         case 20:
538           jj_consume_token(20);
539           break;
540         default:
541           jj_la1[18] = jj_gen;
542           jj_consume_token(-1);
543           throw new ParseException();
544         }
545                        ASTLess jjtn001 = new ASTLess(JJTLESS);
546                        boolean jjtc001 = true;
547                        jjtree.openNodeScope(jjtn001);
548         try {
549           shiftExpression();
550         } catch (Throwable jjte001) {
551                        if (jjtc001) {
552                          jjtree.clearNodeScope(jjtn001);
553                          jjtc001 = false;
554                        } else {
555                          jjtree.popNode();
556                        }
557                        if (jjte001 instanceof RuntimeException) {
558                          {if (true) throw (RuntimeException)jjte001;}
559                        }
560                        if (jjte001 instanceof ParseException) {
561                          {if (true) throw (ParseException)jjte001;}
562                        }
563                        {if (true) throw (Error)jjte001;}
564         } finally {
565                        if (jjtc001) {
566                          jjtree.closeNodeScope(jjtn001,  2);
567                        }
568         }
569         break;
570       case 21:
571       case 22:
572         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
573         case 21:
574           jj_consume_token(21);
575           break;
576         case 22:
577           jj_consume_token(22);
578           break;
579         default:
580           jj_la1[19] = jj_gen;
581           jj_consume_token(-1);
582           throw new ParseException();
583         }
584                        ASTGreater jjtn002 = new ASTGreater(JJTGREATER);
585                        boolean jjtc002 = true;
586                        jjtree.openNodeScope(jjtn002);
587         try {
588           shiftExpression();
589         } catch (Throwable jjte002) {
590                        if (jjtc002) {
591                          jjtree.clearNodeScope(jjtn002);
592                          jjtc002 = false;
593                        } else {
594                          jjtree.popNode();
595                        }
596                        if (jjte002 instanceof RuntimeException) {
597                          {if (true) throw (RuntimeException)jjte002;}
598                        }
599                        if (jjte002 instanceof ParseException) {
600                          {if (true) throw (ParseException)jjte002;}
601                        }
602                        {if (true) throw (Error)jjte002;}
603         } finally {
604                        if (jjtc002) {
605                          jjtree.closeNodeScope(jjtn002,  2);
606                        }
607         }
608         break;
609       case 23:
610       case 24:
611         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
612         case 23:
613           jj_consume_token(23);
614           break;
615         case 24:
616           jj_consume_token(24);
617           break;
618         default:
619           jj_la1[20] = jj_gen;
620           jj_consume_token(-1);
621           throw new ParseException();
622         }
623                          ASTLessEq jjtn003 = new ASTLessEq(JJTLESSEQ);
624                          boolean jjtc003 = true;
625                          jjtree.openNodeScope(jjtn003);
626         try {
627           shiftExpression();
628         } catch (Throwable jjte003) {
629                          if (jjtc003) {
630                            jjtree.clearNodeScope(jjtn003);
631                            jjtc003 = false;
632                          } else {
633                            jjtree.popNode();
634                          }
635                          if (jjte003 instanceof RuntimeException) {
636                            {if (true) throw (RuntimeException)jjte003;}
637                          }
638                          if (jjte003 instanceof ParseException) {
639                            {if (true) throw (ParseException)jjte003;}
640                          }
641                          {if (true) throw (Error)jjte003;}
642         } finally {
643                          if (jjtc003) {
644                            jjtree.closeNodeScope(jjtn003,  2);
645                          }
646         }
647         break;
648       case 25:
649       case 26:
650         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
651         case 25:
652           jj_consume_token(25);
653           break;
654         case 26:
655           jj_consume_token(26);
656           break;
657         default:
658           jj_la1[21] = jj_gen;
659           jj_consume_token(-1);
660           throw new ParseException();
661         }
662                          ASTGreaterEq jjtn004 = new ASTGreaterEq(JJTGREATEREQ);
663                          boolean jjtc004 = true;
664                          jjtree.openNodeScope(jjtn004);
665         try {
666           shiftExpression();
667         } catch (Throwable jjte004) {
668                          if (jjtc004) {
669                            jjtree.clearNodeScope(jjtn004);
670                            jjtc004 = false;
671                          } else {
672                            jjtree.popNode();
673                          }
674                          if (jjte004 instanceof RuntimeException) {
675                            {if (true) throw (RuntimeException)jjte004;}
676                          }
677                          if (jjte004 instanceof ParseException) {
678                            {if (true) throw (ParseException)jjte004;}
679                          }
680                          {if (true) throw (Error)jjte004;}
681         } finally {
682                          if (jjtc004) {
683                            jjtree.closeNodeScope(jjtn004,  2);
684                          }
685         }
686         break;
687       case 27:
688         jj_consume_token(27);
689                ASTIn jjtn005 = new ASTIn(JJTIN);
690                boolean jjtc005 = true;
691                jjtree.openNodeScope(jjtn005);
692         try {
693           shiftExpression();
694         } catch (Throwable jjte005) {
695                if (jjtc005) {
696                  jjtree.clearNodeScope(jjtn005);
697                  jjtc005 = false;
698                } else {
699                  jjtree.popNode();
700                }
701                if (jjte005 instanceof RuntimeException) {
702                  {if (true) throw (RuntimeException)jjte005;}
703                }
704                if (jjte005 instanceof ParseException) {
705                  {if (true) throw (ParseException)jjte005;}
706                }
707                {if (true) throw (Error)jjte005;}
708         } finally {
709                if (jjtc005) {
710                  jjtree.closeNodeScope(jjtn005,  2);
711                }
712         }
713         break;
714       case 28:
715         jj_consume_token(28);
716         jj_consume_token(27);
717                      ASTNotIn jjtn006 = new ASTNotIn(JJTNOTIN);
718                      boolean jjtc006 = true;
719                      jjtree.openNodeScope(jjtn006);
720         try {
721           shiftExpression();
722         } catch (Throwable jjte006) {
723                      if (jjtc006) {
724                        jjtree.clearNodeScope(jjtn006);
725                        jjtc006 = false;
726                      } else {
727                        jjtree.popNode();
728                      }
729                      if (jjte006 instanceof RuntimeException) {
730                        {if (true) throw (RuntimeException)jjte006;}
731                      }
732                      if (jjte006 instanceof ParseException) {
733                        {if (true) throw (ParseException)jjte006;}
734                      }
735                      {if (true) throw (Error)jjte006;}
736         } finally {
737                      if (jjtc006) {
738                        jjtree.closeNodeScope(jjtn006,  2);
739                      }
740         }
741         break;
742       default:
743         jj_la1[22] = jj_gen;
744         jj_consume_token(-1);
745         throw new ParseException();
746       }
747     }
748   }
749 
750 // bit shift expressions (level 4)
751   final public void shiftExpression() throws ParseException {
752     additiveExpression();
753     label_9:
754     while (true) {
755       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
756       case 29:
757       case 30:
758       case 31:
759       case 32:
760       case 33:
761       case 34:
762         ;
763         break;
764       default:
765         jj_la1[23] = jj_gen;
766         break label_9;
767       }
768       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
769       case 29:
770       case 30:
771         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
772         case 29:
773           jj_consume_token(29);
774           break;
775         case 30:
776           jj_consume_token(30);
777           break;
778         default:
779           jj_la1[24] = jj_gen;
780           jj_consume_token(-1);
781           throw new ParseException();
782         }
783                          ASTShiftLeft jjtn001 = new ASTShiftLeft(JJTSHIFTLEFT);
784                          boolean jjtc001 = true;
785                          jjtree.openNodeScope(jjtn001);
786         try {
787           additiveExpression();
788         } catch (Throwable jjte001) {
789                          if (jjtc001) {
790                            jjtree.clearNodeScope(jjtn001);
791                            jjtc001 = false;
792                          } else {
793                            jjtree.popNode();
794                          }
795                          if (jjte001 instanceof RuntimeException) {
796                            {if (true) throw (RuntimeException)jjte001;}
797                          }
798                          if (jjte001 instanceof ParseException) {
799                            {if (true) throw (ParseException)jjte001;}
800                          }
801                          {if (true) throw (Error)jjte001;}
802         } finally {
803                          if (jjtc001) {
804                            jjtree.closeNodeScope(jjtn001,  2);
805                          }
806         }
807         break;
808       case 31:
809       case 32:
810         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
811         case 31:
812           jj_consume_token(31);
813           break;
814         case 32:
815           jj_consume_token(32);
816           break;
817         default:
818           jj_la1[25] = jj_gen;
819           jj_consume_token(-1);
820           throw new ParseException();
821         }
822                          ASTShiftRight jjtn002 = new ASTShiftRight(JJTSHIFTRIGHT);
823                          boolean jjtc002 = true;
824                          jjtree.openNodeScope(jjtn002);
825         try {
826           additiveExpression();
827         } catch (Throwable jjte002) {
828                          if (jjtc002) {
829                            jjtree.clearNodeScope(jjtn002);
830                            jjtc002 = false;
831                          } else {
832                            jjtree.popNode();
833                          }
834                          if (jjte002 instanceof RuntimeException) {
835                            {if (true) throw (RuntimeException)jjte002;}
836                          }
837                          if (jjte002 instanceof ParseException) {
838                            {if (true) throw (ParseException)jjte002;}
839                          }
840                          {if (true) throw (Error)jjte002;}
841         } finally {
842                          if (jjtc002) {
843                            jjtree.closeNodeScope(jjtn002,  2);
844                          }
845         }
846         break;
847       case 33:
848       case 34:
849         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
850         case 33:
851           jj_consume_token(33);
852           break;
853         case 34:
854           jj_consume_token(34);
855           break;
856         default:
857           jj_la1[26] = jj_gen;
858           jj_consume_token(-1);
859           throw new ParseException();
860         }
861                            ASTUnsignedShiftRight jjtn003 = new ASTUnsignedShiftRight(JJTUNSIGNEDSHIFTRIGHT);
862                            boolean jjtc003 = true;
863                            jjtree.openNodeScope(jjtn003);
864         try {
865           additiveExpression();
866         } catch (Throwable jjte003) {
867                            if (jjtc003) {
868                              jjtree.clearNodeScope(jjtn003);
869                              jjtc003 = false;
870                            } else {
871                              jjtree.popNode();
872                            }
873                            if (jjte003 instanceof RuntimeException) {
874                              {if (true) throw (RuntimeException)jjte003;}
875                            }
876                            if (jjte003 instanceof ParseException) {
877                              {if (true) throw (ParseException)jjte003;}
878                            }
879                            {if (true) throw (Error)jjte003;}
880         } finally {
881                            if (jjtc003) {
882                              jjtree.closeNodeScope(jjtn003,  2);
883                            }
884         }
885         break;
886       default:
887         jj_la1[27] = jj_gen;
888         jj_consume_token(-1);
889         throw new ParseException();
890       }
891     }
892   }
893 
894 // binary addition/subtraction (level 3)
895   final public void additiveExpression() throws ParseException {
896     multiplicativeExpression();
897     label_10:
898     while (true) {
899       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
900       case 35:
901       case 36:
902         ;
903         break;
904       default:
905         jj_la1[28] = jj_gen;
906         break label_10;
907       }
908       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
909       case 35:
910         jj_consume_token(35);
911               ASTAdd jjtn001 = new ASTAdd(JJTADD);
912               boolean jjtc001 = true;
913               jjtree.openNodeScope(jjtn001);
914         try {
915           multiplicativeExpression();
916         } catch (Throwable jjte001) {
917               if (jjtc001) {
918                 jjtree.clearNodeScope(jjtn001);
919                 jjtc001 = false;
920               } else {
921                 jjtree.popNode();
922               }
923               if (jjte001 instanceof RuntimeException) {
924                 {if (true) throw (RuntimeException)jjte001;}
925               }
926               if (jjte001 instanceof ParseException) {
927                 {if (true) throw (ParseException)jjte001;}
928               }
929               {if (true) throw (Error)jjte001;}
930         } finally {
931               if (jjtc001) {
932                 jjtree.closeNodeScope(jjtn001,  2);
933               }
934         }
935         break;
936       case 36:
937         jj_consume_token(36);
938               ASTSubtract jjtn002 = new ASTSubtract(JJTSUBTRACT);
939               boolean jjtc002 = true;
940               jjtree.openNodeScope(jjtn002);
941         try {
942           multiplicativeExpression();
943         } catch (Throwable jjte002) {
944               if (jjtc002) {
945                 jjtree.clearNodeScope(jjtn002);
946                 jjtc002 = false;
947               } else {
948                 jjtree.popNode();
949               }
950               if (jjte002 instanceof RuntimeException) {
951                 {if (true) throw (RuntimeException)jjte002;}
952               }
953               if (jjte002 instanceof ParseException) {
954                 {if (true) throw (ParseException)jjte002;}
955               }
956               {if (true) throw (Error)jjte002;}
957         } finally {
958               if (jjtc002) {
959                 jjtree.closeNodeScope(jjtn002,  2);
960               }
961         }
962         break;
963       default:
964         jj_la1[29] = jj_gen;
965         jj_consume_token(-1);
966         throw new ParseException();
967       }
968     }
969   }
970 
971 // multiplication/division/remainder (level 2)
972   final public void multiplicativeExpression() throws ParseException {
973     unaryExpression();
974     label_11:
975     while (true) {
976       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
977       case 37:
978       case 38:
979       case 39:
980         ;
981         break;
982       default:
983         jj_la1[30] = jj_gen;
984         break label_11;
985       }
986       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
987       case 37:
988         jj_consume_token(37);
989               ASTMultiply jjtn001 = new ASTMultiply(JJTMULTIPLY);
990               boolean jjtc001 = true;
991               jjtree.openNodeScope(jjtn001);
992         try {
993           unaryExpression();
994         } catch (Throwable jjte001) {
995               if (jjtc001) {
996                 jjtree.clearNodeScope(jjtn001);
997                 jjtc001 = false;
998               } else {
999                 jjtree.popNode();
1000               }
1001               if (jjte001 instanceof RuntimeException) {
1002                 {if (true) throw (RuntimeException)jjte001;}
1003               }
1004               if (jjte001 instanceof ParseException) {
1005                 {if (true) throw (ParseException)jjte001;}
1006               }
1007               {if (true) throw (Error)jjte001;}
1008         } finally {
1009               if (jjtc001) {
1010                 jjtree.closeNodeScope(jjtn001,  2);
1011               }
1012         }
1013         break;
1014       case 38:
1015         jj_consume_token(38);
1016               ASTDivide jjtn002 = new ASTDivide(JJTDIVIDE);
1017               boolean jjtc002 = true;
1018               jjtree.openNodeScope(jjtn002);
1019         try {
1020           unaryExpression();
1021         } catch (Throwable jjte002) {
1022               if (jjtc002) {
1023                 jjtree.clearNodeScope(jjtn002);
1024                 jjtc002 = false;
1025               } else {
1026                 jjtree.popNode();
1027               }
1028               if (jjte002 instanceof RuntimeException) {
1029                 {if (true) throw (RuntimeException)jjte002;}
1030               }
1031               if (jjte002 instanceof ParseException) {
1032                 {if (true) throw (ParseException)jjte002;}
1033               }
1034               {if (true) throw (Error)jjte002;}
1035         } finally {
1036               if (jjtc002) {
1037                 jjtree.closeNodeScope(jjtn002,  2);
1038               }
1039         }
1040         break;
1041       case 39:
1042         jj_consume_token(39);
1043               ASTRemainder jjtn003 = new ASTRemainder(JJTREMAINDER);
1044               boolean jjtc003 = true;
1045               jjtree.openNodeScope(jjtn003);
1046         try {
1047           unaryExpression();
1048         } catch (Throwable jjte003) {
1049               if (jjtc003) {
1050                 jjtree.clearNodeScope(jjtn003);
1051                 jjtc003 = false;
1052               } else {
1053                 jjtree.popNode();
1054               }
1055               if (jjte003 instanceof RuntimeException) {
1056                 {if (true) throw (RuntimeException)jjte003;}
1057               }
1058               if (jjte003 instanceof ParseException) {
1059                 {if (true) throw (ParseException)jjte003;}
1060               }
1061               {if (true) throw (Error)jjte003;}
1062         } finally {
1063               if (jjtc003) {
1064                 jjtree.closeNodeScope(jjtn003,  2);
1065               }
1066         }
1067         break;
1068       default:
1069         jj_la1[31] = jj_gen;
1070         jj_consume_token(-1);
1071         throw new ParseException();
1072       }
1073     }
1074   }
1075 
1076 // unary (level 1)
1077   final public void unaryExpression() throws ParseException {
1078     StringBuilder stringBuilder;
1079     Token token;
1080     ASTInstanceof ionode;
1081     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1082     case 36:
1083       jj_consume_token(36);
1084               ASTNegate jjtn001 = new ASTNegate(JJTNEGATE);
1085               boolean jjtc001 = true;
1086               jjtree.openNodeScope(jjtn001);
1087       try {
1088         unaryExpression();
1089       } catch (Throwable jjte001) {
1090               if (jjtc001) {
1091                 jjtree.clearNodeScope(jjtn001);
1092                 jjtc001 = false;
1093               } else {
1094                 jjtree.popNode();
1095               }
1096               if (jjte001 instanceof RuntimeException) {
1097                 {if (true) throw (RuntimeException)jjte001;}
1098               }
1099               if (jjte001 instanceof ParseException) {
1100                 {if (true) throw (ParseException)jjte001;}
1101               }
1102               {if (true) throw (Error)jjte001;}
1103       } finally {
1104               if (jjtc001) {
1105                 jjtree.closeNodeScope(jjtn001,  1);
1106               }
1107       }
1108       break;
1109     case 35:
1110       jj_consume_token(35);
1111       unaryExpression();
1112       break;
1113     case 40:
1114       jj_consume_token(40);
1115               ASTBitNegate jjtn002 = new ASTBitNegate(JJTBITNEGATE);
1116               boolean jjtc002 = true;
1117               jjtree.openNodeScope(jjtn002);
1118       try {
1119         unaryExpression();
1120       } catch (Throwable jjte002) {
1121               if (jjtc002) {
1122                 jjtree.clearNodeScope(jjtn002);
1123                 jjtc002 = false;
1124               } else {
1125                 jjtree.popNode();
1126               }
1127               if (jjte002 instanceof RuntimeException) {
1128                 {if (true) throw (RuntimeException)jjte002;}
1129               }
1130               if (jjte002 instanceof ParseException) {
1131                 {if (true) throw (ParseException)jjte002;}
1132               }
1133               {if (true) throw (Error)jjte002;}
1134       } finally {
1135               if (jjtc002) {
1136                 jjtree.closeNodeScope(jjtn002,  1);
1137               }
1138       }
1139       break;
1140     case 28:
1141     case 41:
1142       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1143       case 41:
1144         jj_consume_token(41);
1145         break;
1146       case 28:
1147         jj_consume_token(28);
1148         break;
1149       default:
1150         jj_la1[32] = jj_gen;
1151         jj_consume_token(-1);
1152         throw new ParseException();
1153       }
1154                         ASTNot jjtn003 = new ASTNot(JJTNOT);
1155                         boolean jjtc003 = true;
1156                         jjtree.openNodeScope(jjtn003);
1157       try {
1158         unaryExpression();
1159       } catch (Throwable jjte003) {
1160                         if (jjtc003) {
1161                           jjtree.clearNodeScope(jjtn003);
1162                           jjtc003 = false;
1163                         } else {
1164                           jjtree.popNode();
1165                         }
1166                         if (jjte003 instanceof RuntimeException) {
1167                           {if (true) throw (RuntimeException)jjte003;}
1168                         }
1169                         if (jjte003 instanceof ParseException) {
1170                           {if (true) throw (ParseException)jjte003;}
1171                         }
1172                         {if (true) throw (Error)jjte003;}
1173       } finally {
1174                         if (jjtc003) {
1175                           jjtree.closeNodeScope(jjtn003,  1);
1176                         }
1177       }
1178       break;
1179     case 4:
1180     case 44:
1181     case 46:
1182     case 47:
1183     case 48:
1184     case 49:
1185     case 50:
1186     case 51:
1187     case 52:
1188     case 54:
1189     case 56:
1190     case 57:
1191     case IDENT:
1192     case DYNAMIC_SUBSCRIPT:
1193     case CHAR_LITERAL:
1194     case BACK_CHAR_LITERAL:
1195     case STRING_LITERAL:
1196     case INT_LITERAL:
1197     case FLT_LITERAL:
1198       navigationChain();
1199       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1200       case 42:
1201         jj_consume_token(42);
1202         token = jj_consume_token(IDENT);
1203                            ASTInstanceof jjtn004 = new ASTInstanceof(JJTINSTANCEOF);
1204                            boolean jjtc004 = true;
1205                            jjtree.openNodeScope(jjtn004);
1206         try {
1207                            jjtree.closeNodeScope(jjtn004,  1);
1208                            jjtc004 = false;
1209                                stringBuilder = new StringBuilder(token.image); ionode = jjtn004;
1210         } finally {
1211                            if (jjtc004) {
1212                              jjtree.closeNodeScope(jjtn004,  1);
1213                            }
1214         }
1215         label_12:
1216         while (true) {
1217           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1218           case 43:
1219             ;
1220             break;
1221           default:
1222             jj_la1[33] = jj_gen;
1223             break label_12;
1224           }
1225           jj_consume_token(43);
1226           token = jj_consume_token(IDENT);
1227                                               stringBuilder.append('.').append( token.image );
1228         }
1229                                           ionode.setTargetType( stringBuilder.toString() );
1230         break;
1231       default:
1232         jj_la1[34] = jj_gen;
1233         ;
1234       }
1235       break;
1236     default:
1237       jj_la1[35] = jj_gen;
1238       jj_consume_token(-1);
1239       throw new ParseException();
1240     }
1241   }
1242 
1243 // navigation chain: property references, method calls, projections, selections, etc.
1244   final public void navigationChain() throws ParseException {
1245     primaryExpression();
1246     label_13:
1247     while (true) {
1248       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1249       case 43:
1250       case 44:
1251       case 52:
1252       case DYNAMIC_SUBSCRIPT:
1253         ;
1254         break;
1255       default:
1256         jj_la1[36] = jj_gen;
1257         break label_13;
1258       }
1259       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1260       case 43:
1261         jj_consume_token(43);
1262           ASTChain jjtn001 = new ASTChain(JJTCHAIN);
1263           boolean jjtc001 = true;
1264           jjtree.openNodeScope(jjtn001);
1265         try {
1266           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1267           case IDENT:
1268             if (jj_2_1(2)) {
1269               methodCall();
1270             } else {
1271               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1272               case IDENT:
1273                 propertyName();
1274                 break;
1275               default:
1276                 jj_la1[37] = jj_gen;
1277                 jj_consume_token(-1);
1278                 throw new ParseException();
1279               }
1280             }
1281             break;
1282           case 54:
1283             if (jj_2_2(2)) {
1284               projection();
1285             } else {
1286               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1287               case 54:
1288                 selection();
1289                 break;
1290               default:
1291                 jj_la1[38] = jj_gen;
1292                 jj_consume_token(-1);
1293                 throw new ParseException();
1294               }
1295             }
1296             break;
1297           case 44:
1298             jj_consume_token(44);
1299             expression();
1300             jj_consume_token(45);
1301             break;
1302           default:
1303             jj_la1[39] = jj_gen;
1304             jj_consume_token(-1);
1305             throw new ParseException();
1306           }
1307         } catch (Throwable jjte001) {
1308           if (jjtc001) {
1309             jjtree.clearNodeScope(jjtn001);
1310             jjtc001 = false;
1311           } else {
1312             jjtree.popNode();
1313           }
1314           if (jjte001 instanceof RuntimeException) {
1315             {if (true) throw (RuntimeException)jjte001;}
1316           }
1317           if (jjte001 instanceof ParseException) {
1318             {if (true) throw (ParseException)jjte001;}
1319           }
1320           {if (true) throw (Error)jjte001;}
1321         } finally {
1322           if (jjtc001) {
1323             jjtree.closeNodeScope(jjtn001,  2);
1324           }
1325         }
1326         break;
1327       case 52:
1328       case DYNAMIC_SUBSCRIPT:
1329           ASTChain jjtn002 = new ASTChain(JJTCHAIN);
1330           boolean jjtc002 = true;
1331           jjtree.openNodeScope(jjtn002);
1332         try {
1333           index();
1334         } catch (Throwable jjte002) {
1335           if (jjtc002) {
1336             jjtree.clearNodeScope(jjtn002);
1337             jjtc002 = false;
1338           } else {
1339             jjtree.popNode();
1340           }
1341           if (jjte002 instanceof RuntimeException) {
1342             {if (true) throw (RuntimeException)jjte002;}
1343           }
1344           if (jjte002 instanceof ParseException) {
1345             {if (true) throw (ParseException)jjte002;}
1346           }
1347           {if (true) throw (Error)jjte002;}
1348         } finally {
1349           if (jjtc002) {
1350             jjtree.closeNodeScope(jjtn002,  2);
1351           }
1352         }
1353         break;
1354       case 44:
1355         jj_consume_token(44);
1356         expression();
1357                            ASTEval jjtn003 = new ASTEval(JJTEVAL);
1358                            boolean jjtc003 = true;
1359                            jjtree.openNodeScope(jjtn003);
1360         try {
1361           jj_consume_token(45);
1362         } finally {
1363                            if (jjtc003) {
1364                              jjtree.closeNodeScope(jjtn003,  2);
1365                            }
1366         }
1367         break;
1368       default:
1369         jj_la1[40] = jj_gen;
1370         jj_consume_token(-1);
1371         throw new ParseException();
1372       }
1373     }
1374   }
1375 
1376   final public void primaryExpression() throws ParseException {
1377     Token   token;
1378     String  className = null;
1379     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1380     case CHAR_LITERAL:
1381     case BACK_CHAR_LITERAL:
1382     case STRING_LITERAL:
1383     case INT_LITERAL:
1384     case FLT_LITERAL:
1385       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1386       case CHAR_LITERAL:
1387         jj_consume_token(CHAR_LITERAL);
1388         break;
1389       case BACK_CHAR_LITERAL:
1390         jj_consume_token(BACK_CHAR_LITERAL);
1391         break;
1392       case STRING_LITERAL:
1393         jj_consume_token(STRING_LITERAL);
1394         break;
1395       case INT_LITERAL:
1396         jj_consume_token(INT_LITERAL);
1397         break;
1398       case FLT_LITERAL:
1399         jj_consume_token(FLT_LITERAL);
1400         break;
1401       default:
1402         jj_la1[41] = jj_gen;
1403         jj_consume_token(-1);
1404         throw new ParseException();
1405       }
1406                                                   ASTConst jjtn001 = new ASTConst(JJTCONST);
1407                                                   boolean jjtc001 = true;
1408                                                   jjtree.openNodeScope(jjtn001);
1409       try {
1410                                                   jjtree.closeNodeScope(jjtn001,  0);
1411                                                   jjtc001 = false;
1412                                                   jjtn001.setValue( token_source.literalValue );
1413       } finally {
1414                                                   if (jjtc001) {
1415                                                     jjtree.closeNodeScope(jjtn001,  0);
1416                                                   }
1417       }
1418       break;
1419     case 46:
1420       jj_consume_token(46);
1421                                                   ASTConst jjtn002 = new ASTConst(JJTCONST);
1422                                                   boolean jjtc002 = true;
1423                                                   jjtree.openNodeScope(jjtn002);
1424       try {
1425                                                   jjtree.closeNodeScope(jjtn002,  0);
1426                                                   jjtc002 = false;
1427                                                   jjtn002.setValue( Boolean.TRUE );
1428       } finally {
1429                                                   if (jjtc002) {
1430                                                     jjtree.closeNodeScope(jjtn002,  0);
1431                                                   }
1432       }
1433       break;
1434     case 47:
1435       jj_consume_token(47);
1436                                                   ASTConst jjtn003 = new ASTConst(JJTCONST);
1437                                                   boolean jjtc003 = true;
1438                                                   jjtree.openNodeScope(jjtn003);
1439       try {
1440                                                   jjtree.closeNodeScope(jjtn003,  0);
1441                                                   jjtc003 = false;
1442                                                   jjtn003.setValue( Boolean.FALSE );
1443       } finally {
1444                                                   if (jjtc003) {
1445                                                     jjtree.closeNodeScope(jjtn003,  0);
1446                                                   }
1447       }
1448       break;
1449     case 48:
1450           ASTConst jjtn004 = new ASTConst(JJTCONST);
1451           boolean jjtc004 = true;
1452           jjtree.openNodeScope(jjtn004);
1453       try {
1454         jj_consume_token(48);
1455       } finally {
1456           if (jjtc004) {
1457             jjtree.closeNodeScope(jjtn004,  0);
1458           }
1459       }
1460       break;
1461     default:
1462       jj_la1[48] = jj_gen;
1463       if (jj_2_4(2)) {
1464         jj_consume_token(49);
1465                                                ASTThisVarRef jjtn005 = new ASTThisVarRef(JJTTHISVARREF);
1466                                                boolean jjtc005 = true;
1467                                                jjtree.openNodeScope(jjtn005);
1468         try {
1469                                                jjtree.closeNodeScope(jjtn005,  0);
1470                                                jjtc005 = false;
1471                                                jjtn005.setName( "this" );
1472         } finally {
1473                                                if (jjtc005) {
1474                                                  jjtree.closeNodeScope(jjtn005,  0);
1475                                                }
1476         }
1477       } else if (jj_2_5(2)) {
1478         jj_consume_token(50);
1479                                                ASTRootVarRef jjtn006 = new ASTRootVarRef(JJTROOTVARREF);
1480                                                boolean jjtc006 = true;
1481                                                jjtree.openNodeScope(jjtn006);
1482         try {
1483                                                jjtree.closeNodeScope(jjtn006,  0);
1484                                                jjtc006 = false;
1485                                                jjtn006.setName( "root" );
1486         } finally {
1487                                                if (jjtc006) {
1488                                                  jjtree.closeNodeScope(jjtn006,  0);
1489                                                }
1490         }
1491       } else if (jj_2_6(2)) {
1492         jj_consume_token(51);
1493         token = jj_consume_token(IDENT);
1494                                                   ASTVarRef jjtn007 = new ASTVarRef(JJTVARREF);
1495                                                   boolean jjtc007 = true;
1496                                                   jjtree.openNodeScope(jjtn007);
1497         try {
1498                                                   jjtree.closeNodeScope(jjtn007,  0);
1499                                                   jjtc007 = false;
1500                                                       jjtn007.setName( token.image );
1501         } finally {
1502                                                   if (jjtc007) {
1503                                                     jjtree.closeNodeScope(jjtn007,  0);
1504                                                   }
1505         }
1506       } else if (jj_2_7(2)) {
1507         jj_consume_token(4);
1508         jj_consume_token(52);
1509         expression();
1510         jj_consume_token(53);
1511                                                   ASTConst jjtn008 = new ASTConst(JJTCONST);
1512                                                   boolean jjtc008 = true;
1513                                                   jjtree.openNodeScope(jjtn008);
1514         try {
1515                                                   jjtree.closeNodeScope(jjtn008,  1);
1516                                                   jjtc008 = false;
1517                                                   jjtn008.setValue( jjtn008.jjtGetChild(0) );
1518         } finally {
1519                                                   if (jjtc008) {
1520                                                     jjtree.closeNodeScope(jjtn008,  1);
1521                                                   }
1522         }
1523       } else {
1524         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1525         case 56:
1526           staticReference();
1527           break;
1528         default:
1529           jj_la1[49] = jj_gen;
1530           if (jj_2_8(2)) {
1531             constructorCall();
1532           } else {
1533             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1534             case IDENT:
1535               if (jj_2_3(2)) {
1536                 methodCall();
1537               } else {
1538                 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1539                 case IDENT:
1540                   propertyName();
1541                   break;
1542                 default:
1543                   jj_la1[42] = jj_gen;
1544                   jj_consume_token(-1);
1545                   throw new ParseException();
1546                 }
1547               }
1548               break;
1549             case 52:
1550             case DYNAMIC_SUBSCRIPT:
1551               index();
1552               break;
1553             case 44:
1554               jj_consume_token(44);
1555               expression();
1556               jj_consume_token(45);
1557               break;
1558             case 54:
1559               jj_consume_token(54);
1560               ASTList jjtn009 = new ASTList(JJTLIST);
1561               boolean jjtc009 = true;
1562               jjtree.openNodeScope(jjtn009);
1563               try {
1564                 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1565                 case 4:
1566                 case 28:
1567                 case 35:
1568                 case 36:
1569                 case 40:
1570                 case 41:
1571                 case 44:
1572                 case 46:
1573                 case 47:
1574                 case 48:
1575                 case 49:
1576                 case 50:
1577                 case 51:
1578                 case 52:
1579                 case 54:
1580                 case 56:
1581                 case 57:
1582                 case IDENT:
1583                 case DYNAMIC_SUBSCRIPT:
1584                 case CHAR_LITERAL:
1585                 case BACK_CHAR_LITERAL:
1586                 case STRING_LITERAL:
1587                 case INT_LITERAL:
1588                 case FLT_LITERAL:
1589                   assignmentExpression();
1590                   label_14:
1591                   while (true) {
1592                     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1593                     case 1:
1594                       ;
1595                       break;
1596                     default:
1597                       jj_la1[43] = jj_gen;
1598                       break label_14;
1599                     }
1600                     jj_consume_token(1);
1601                     assignmentExpression();
1602                   }
1603                   break;
1604                 default:
1605                   jj_la1[44] = jj_gen;
1606                   ;
1607                 }
1608               } catch (Throwable jjte009) {
1609               if (jjtc009) {
1610                 jjtree.clearNodeScope(jjtn009);
1611                 jjtc009 = false;
1612               } else {
1613                 jjtree.popNode();
1614               }
1615               if (jjte009 instanceof RuntimeException) {
1616                 {if (true) throw (RuntimeException)jjte009;}
1617               }
1618               if (jjte009 instanceof ParseException) {
1619                 {if (true) throw (ParseException)jjte009;}
1620               }
1621               {if (true) throw (Error)jjte009;}
1622               } finally {
1623               if (jjtc009) {
1624                 jjtree.closeNodeScope(jjtn009, true);
1625               }
1626               }
1627               jj_consume_token(55);
1628               break;
1629             default:
1630               jj_la1[50] = jj_gen;
1631               if (jj_2_9(2)) {
1632                        ASTMap jjtn010 = new ASTMap(JJTMAP);
1633                        boolean jjtc010 = true;
1634                        jjtree.openNodeScope(jjtn010);
1635                 try {
1636                   jj_consume_token(51);
1637                   switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1638                   case 56:
1639                     className = classReference();
1640                     break;
1641                   default:
1642                     jj_la1[45] = jj_gen;
1643                     ;
1644                   }
1645                   jj_consume_token(54);
1646                   switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1647                   case 4:
1648                   case 28:
1649                   case 35:
1650                   case 36:
1651                   case 40:
1652                   case 41:
1653                   case 44:
1654                   case 46:
1655                   case 47:
1656                   case 48:
1657                   case 49:
1658                   case 50:
1659                   case 51:
1660                   case 52:
1661                   case 54:
1662                   case 56:
1663                   case 57:
1664                   case IDENT:
1665                   case DYNAMIC_SUBSCRIPT:
1666                   case CHAR_LITERAL:
1667                   case BACK_CHAR_LITERAL:
1668                   case STRING_LITERAL:
1669                   case INT_LITERAL:
1670                   case FLT_LITERAL:
1671                     keyValueExpression();
1672                     label_15:
1673                     while (true) {
1674                       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1675                       case 1:
1676                         ;
1677                         break;
1678                       default:
1679                         jj_la1[46] = jj_gen;
1680                         break label_15;
1681                       }
1682                       jj_consume_token(1);
1683                       keyValueExpression();
1684                     }
1685                     break;
1686                   default:
1687                     jj_la1[47] = jj_gen;
1688                     ;
1689                   }
1690                                                                                                                   jjtn010.setClassName(className);
1691                   jj_consume_token(55);
1692                 } catch (Throwable jjte010) {
1693                        if (jjtc010) {
1694                          jjtree.clearNodeScope(jjtn010);
1695                          jjtc010 = false;
1696                        } else {
1697                          jjtree.popNode();
1698                        }
1699                        if (jjte010 instanceof RuntimeException) {
1700                          {if (true) throw (RuntimeException)jjte010;}
1701                        }
1702                        if (jjte010 instanceof ParseException) {
1703                          {if (true) throw (ParseException)jjte010;}
1704                        }
1705                        {if (true) throw (Error)jjte010;}
1706                 } finally {
1707                        if (jjtc010) {
1708                          jjtree.closeNodeScope(jjtn010, true);
1709                        }
1710                 }
1711               } else {
1712                 jj_consume_token(-1);
1713                 throw new ParseException();
1714               }
1715             }
1716           }
1717         }
1718       }
1719     }
1720   }
1721 
1722   final public void keyValueExpression() throws ParseException {
1723           ASTKeyValue jjtn001 = new ASTKeyValue(JJTKEYVALUE);
1724           boolean jjtc001 = true;
1725           jjtree.openNodeScope(jjtn001);
1726     try {
1727       assignmentExpression();
1728       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1729       case 4:
1730         jj_consume_token(4);
1731         assignmentExpression();
1732         break;
1733       default:
1734         jj_la1[51] = jj_gen;
1735         ;
1736       }
1737     } catch (Throwable jjte001) {
1738           if (jjtc001) {
1739             jjtree.clearNodeScope(jjtn001);
1740             jjtc001 = false;
1741           } else {
1742             jjtree.popNode();
1743           }
1744           if (jjte001 instanceof RuntimeException) {
1745             {if (true) throw (RuntimeException)jjte001;}
1746           }
1747           if (jjte001 instanceof ParseException) {
1748             {if (true) throw (ParseException)jjte001;}
1749           }
1750           {if (true) throw (Error)jjte001;}
1751     } finally {
1752           if (jjtc001) {
1753             jjtree.closeNodeScope(jjtn001, true);
1754           }
1755     }
1756   }
1757 
1758   final public void staticReference() throws ParseException {
1759     String className = "java.lang.Math";
1760     Token token;
1761     className = classReference();
1762     if (jj_2_10(2)) {
1763       staticMethodCall(className);
1764     } else {
1765       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1766       case IDENT:
1767         token = jj_consume_token(IDENT);
1768                                       ASTStaticField jjtn001 = new ASTStaticField(JJTSTATICFIELD);
1769                                       boolean jjtc001 = true;
1770                                       jjtree.openNodeScope(jjtn001);
1771         try {
1772                                       jjtree.closeNodeScope(jjtn001,  0);
1773                                       jjtc001 = false;
1774                                           jjtn001.init( className, token.image );
1775         } finally {
1776                                       if (jjtc001) {
1777                                         jjtree.closeNodeScope(jjtn001,  0);
1778                                       }
1779         }
1780         break;
1781       default:
1782         jj_la1[52] = jj_gen;
1783         jj_consume_token(-1);
1784         throw new ParseException();
1785       }
1786     }
1787   }
1788 
1789   final public String classReference() throws ParseException {
1790     String      result = "java.lang.Math";
1791     jj_consume_token(56);
1792     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1793     case IDENT:
1794       result = className();
1795       break;
1796     default:
1797       jj_la1[53] = jj_gen;
1798       ;
1799     }
1800     jj_consume_token(56);
1801                                       {if (true) return result;}
1802     throw new Error("Missing return statement in function");
1803   }
1804 
1805   final public String className() throws ParseException {
1806     Token token;
1807     StringBuilder result;
1808     token = jj_consume_token(IDENT);
1809                                   result = new StringBuilder( token.image );
1810     label_16:
1811     while (true) {
1812       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1813       case 43:
1814         ;
1815         break;
1816       default:
1817         jj_la1[54] = jj_gen;
1818         break label_16;
1819       }
1820       jj_consume_token(43);
1821       token = jj_consume_token(IDENT);
1822                                   result.append('.').append( token.image );
1823     }
1824                               {if (true) return result.toString();}
1825     throw new Error("Missing return statement in function");
1826   }
1827 
1828   final public void constructorCall() throws ParseException {
1829                                 /*@bgen(jjtree) Ctor */
1830     ASTCtor jjtn000 = new ASTCtor(JJTCTOR);
1831     boolean jjtc000 = true;
1832     jjtree.openNodeScope(jjtn000);String className;
1833     Token token;
1834     StringBuilder stringBuilder;
1835     try {
1836       jj_consume_token(57);
1837       className = className();
1838       if (jj_2_11(2)) {
1839         jj_consume_token(44);
1840         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1841         case 4:
1842         case 28:
1843         case 35:
1844         case 36:
1845         case 40:
1846         case 41:
1847         case 44:
1848         case 46:
1849         case 47:
1850         case 48:
1851         case 49:
1852         case 50:
1853         case 51:
1854         case 52:
1855         case 54:
1856         case 56:
1857         case 57:
1858         case IDENT:
1859         case DYNAMIC_SUBSCRIPT:
1860         case CHAR_LITERAL:
1861         case BACK_CHAR_LITERAL:
1862         case STRING_LITERAL:
1863         case INT_LITERAL:
1864         case FLT_LITERAL:
1865           assignmentExpression();
1866           label_17:
1867           while (true) {
1868             switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1869             case 1:
1870               ;
1871               break;
1872             default:
1873               jj_la1[55] = jj_gen;
1874               break label_17;
1875             }
1876             jj_consume_token(1);
1877             assignmentExpression();
1878           }
1879           break;
1880         default:
1881           jj_la1[56] = jj_gen;
1882           ;
1883         }
1884         jj_consume_token(45);
1885                       jjtree.closeNodeScope(jjtn000, true);
1886                       jjtc000 = false;
1887                         jjtn000.setClassName(className);
1888       } else if (jj_2_12(2)) {
1889         jj_consume_token(52);
1890         jj_consume_token(53);
1891         jj_consume_token(54);
1892                               ASTList jjtn001 = new ASTList(JJTLIST);
1893                               boolean jjtc001 = true;
1894                               jjtree.openNodeScope(jjtn001);
1895         try {
1896           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1897           case 4:
1898           case 28:
1899           case 35:
1900           case 36:
1901           case 40:
1902           case 41:
1903           case 44:
1904           case 46:
1905           case 47:
1906           case 48:
1907           case 49:
1908           case 50:
1909           case 51:
1910           case 52:
1911           case 54:
1912           case 56:
1913           case 57:
1914           case IDENT:
1915           case DYNAMIC_SUBSCRIPT:
1916           case CHAR_LITERAL:
1917           case BACK_CHAR_LITERAL:
1918           case STRING_LITERAL:
1919           case INT_LITERAL:
1920           case FLT_LITERAL:
1921             assignmentExpression();
1922             label_18:
1923             while (true) {
1924               switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1925               case 1:
1926                 ;
1927                 break;
1928               default:
1929                 jj_la1[57] = jj_gen;
1930                 break label_18;
1931               }
1932               jj_consume_token(1);
1933               assignmentExpression();
1934             }
1935             break;
1936           default:
1937             jj_la1[58] = jj_gen;
1938             ;
1939           }
1940         } catch (Throwable jjte001) {
1941                               if (jjtc001) {
1942                                 jjtree.clearNodeScope(jjtn001);
1943                                 jjtc001 = false;
1944                               } else {
1945                                 jjtree.popNode();
1946                               }
1947                               if (jjte001 instanceof RuntimeException) {
1948                                 {if (true) throw (RuntimeException)jjte001;}
1949                               }
1950                               if (jjte001 instanceof ParseException) {
1951                                 {if (true) throw (ParseException)jjte001;}
1952                               }
1953                               {if (true) throw (Error)jjte001;}
1954         } finally {
1955                               if (jjtc001) {
1956                                 jjtree.closeNodeScope(jjtn001, true);
1957                               }
1958         }
1959         jj_consume_token(55);
1960                       jjtree.closeNodeScope(jjtn000, true);
1961                       jjtc000 = false;
1962                         jjtn000.setClassName(className);
1963                         jjtn000.setArray(true);
1964       } else if (jj_2_13(2)) {
1965         jj_consume_token(52);
1966         assignmentExpression();
1967         jj_consume_token(53);
1968                       jjtree.closeNodeScope(jjtn000, true);
1969                       jjtc000 = false;
1970                         jjtn000.setClassName(className);
1971                         jjtn000.setArray(true);
1972       } else {
1973         jj_consume_token(-1);
1974         throw new ParseException();
1975       }
1976     } catch (Throwable jjte000) {
1977       if (jjtc000) {
1978         jjtree.clearNodeScope(jjtn000);
1979         jjtc000 = false;
1980       } else {
1981         jjtree.popNode();
1982       }
1983       if (jjte000 instanceof RuntimeException) {
1984         {if (true) throw (RuntimeException)jjte000;}
1985       }
1986       if (jjte000 instanceof ParseException) {
1987         {if (true) throw (ParseException)jjte000;}
1988       }
1989       {if (true) throw (Error)jjte000;}
1990     } finally {
1991       if (jjtc000) {
1992         jjtree.closeNodeScope(jjtn000, true);
1993       }
1994     }
1995   }
1996 
1997   final public void propertyName() throws ParseException {
1998                                  /*@bgen(jjtree) Property */
1999     ASTProperty jjtn000 = new ASTProperty(JJTPROPERTY);
2000     boolean jjtc000 = true;
2001     jjtree.openNodeScope(jjtn000);Token token;
2002     try {
2003       token = jj_consume_token(IDENT);
2004                 ASTConst jjtn001 = new ASTConst(JJTCONST);
2005                 boolean jjtc001 = true;
2006                 jjtree.openNodeScope(jjtn001);
2007       try {
2008                 jjtree.closeNodeScope(jjtn001, true);
2009                 jjtc001 = false;
2010                     jjtn001.setValue( token.image );
2011       } finally {
2012                 if (jjtc001) {
2013                   jjtree.closeNodeScope(jjtn001, true);
2014                 }
2015       }
2016     } finally {
2017       if (jjtc000) {
2018         jjtree.closeNodeScope(jjtn000, true);
2019       }
2020     }
2021   }
2022 
2023   final public void staticMethodCall(String className) throws ParseException {
2024                                                            /*@bgen(jjtree) StaticMethod */
2025     ASTStaticMethod jjtn000 = new ASTStaticMethod(JJTSTATICMETHOD);
2026     boolean jjtc000 = true;
2027     jjtree.openNodeScope(jjtn000);Token token;
2028     try {
2029       token = jj_consume_token(IDENT);
2030       jj_consume_token(44);
2031       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2032       case 4:
2033       case 28:
2034       case 35:
2035       case 36:
2036       case 40:
2037       case 41:
2038       case 44:
2039       case 46:
2040       case 47:
2041       case 48:
2042       case 49:
2043       case 50:
2044       case 51:
2045       case 52:
2046       case 54:
2047       case 56:
2048       case 57:
2049       case IDENT:
2050       case DYNAMIC_SUBSCRIPT:
2051       case CHAR_LITERAL:
2052       case BACK_CHAR_LITERAL:
2053       case STRING_LITERAL:
2054       case INT_LITERAL:
2055       case FLT_LITERAL:
2056         assignmentExpression();
2057         label_19:
2058         while (true) {
2059           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2060           case 1:
2061             ;
2062             break;
2063           default:
2064             jj_la1[59] = jj_gen;
2065             break label_19;
2066           }
2067           jj_consume_token(1);
2068           assignmentExpression();
2069         }
2070         break;
2071       default:
2072         jj_la1[60] = jj_gen;
2073         ;
2074       }
2075       jj_consume_token(45);
2076                                           jjtree.closeNodeScope(jjtn000, true);
2077                                           jjtc000 = false;
2078                                           jjtn000.init( className, token.image );
2079     } catch (Throwable jjte000) {
2080       if (jjtc000) {
2081         jjtree.clearNodeScope(jjtn000);
2082         jjtc000 = false;
2083       } else {
2084         jjtree.popNode();
2085       }
2086       if (jjte000 instanceof RuntimeException) {
2087         {if (true) throw (RuntimeException)jjte000;}
2088       }
2089       if (jjte000 instanceof ParseException) {
2090         {if (true) throw (ParseException)jjte000;}
2091       }
2092       {if (true) throw (Error)jjte000;}
2093     } finally {
2094       if (jjtc000) {
2095         jjtree.closeNodeScope(jjtn000, true);
2096       }
2097     }
2098   }
2099 
2100   final public void methodCall() throws ParseException {
2101                              /*@bgen(jjtree) Method */
2102     ASTMethod jjtn000 = new ASTMethod(JJTMETHOD);
2103     boolean jjtc000 = true;
2104     jjtree.openNodeScope(jjtn000);Token token;
2105     try {
2106       token = jj_consume_token(IDENT);
2107       jj_consume_token(44);
2108       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2109       case 4:
2110       case 28:
2111       case 35:
2112       case 36:
2113       case 40:
2114       case 41:
2115       case 44:
2116       case 46:
2117       case 47:
2118       case 48:
2119       case 49:
2120       case 50:
2121       case 51:
2122       case 52:
2123       case 54:
2124       case 56:
2125       case 57:
2126       case IDENT:
2127       case DYNAMIC_SUBSCRIPT:
2128       case CHAR_LITERAL:
2129       case BACK_CHAR_LITERAL:
2130       case STRING_LITERAL:
2131       case INT_LITERAL:
2132       case FLT_LITERAL:
2133         assignmentExpression();
2134         label_20:
2135         while (true) {
2136           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2137           case 1:
2138             ;
2139             break;
2140           default:
2141             jj_la1[61] = jj_gen;
2142             break label_20;
2143           }
2144           jj_consume_token(1);
2145           assignmentExpression();
2146         }
2147         break;
2148       default:
2149         jj_la1[62] = jj_gen;
2150         ;
2151       }
2152       jj_consume_token(45);
2153                                           jjtree.closeNodeScope(jjtn000, true);
2154                                           jjtc000 = false;
2155                                           jjtn000.setMethodName( token.image );
2156     } catch (Throwable jjte000) {
2157       if (jjtc000) {
2158         jjtree.clearNodeScope(jjtn000);
2159         jjtc000 = false;
2160       } else {
2161         jjtree.popNode();
2162       }
2163       if (jjte000 instanceof RuntimeException) {
2164         {if (true) throw (RuntimeException)jjte000;}
2165       }
2166       if (jjte000 instanceof ParseException) {
2167         {if (true) throw (ParseException)jjte000;}
2168       }
2169       {if (true) throw (Error)jjte000;}
2170     } finally {
2171       if (jjtc000) {
2172         jjtree.closeNodeScope(jjtn000, true);
2173       }
2174     }
2175   }
2176 
2177 /**
2178  * Apply an expression to all elements of a collection, creating a new collection
2179  * as the result.
2180  */
2181   final public void projection() throws ParseException {
2182                               /*@bgen(jjtree) Project */
2183   ASTProject jjtn000 = new ASTProject(JJTPROJECT);
2184   boolean jjtc000 = true;
2185   jjtree.openNodeScope(jjtn000);
2186     try {
2187       jj_consume_token(54);
2188       expression();
2189       jj_consume_token(55);
2190     } catch (Throwable jjte000) {
2191       if (jjtc000) {
2192         jjtree.clearNodeScope(jjtn000);
2193         jjtc000 = false;
2194       } else {
2195         jjtree.popNode();
2196       }
2197       if (jjte000 instanceof RuntimeException) {
2198         {if (true) throw (RuntimeException)jjte000;}
2199       }
2200       if (jjte000 instanceof ParseException) {
2201         {if (true) throw (ParseException)jjte000;}
2202       }
2203       {if (true) throw (Error)jjte000;}
2204     } finally {
2205       if (jjtc000) {
2206         jjtree.closeNodeScope(jjtn000, true);
2207       }
2208     }
2209   }
2210 
2211   final public void selection() throws ParseException {
2212     if (jj_2_14(2)) {
2213       selectAll();
2214     } else if (jj_2_15(2)) {
2215       selectFirst();
2216     } else if (jj_2_16(2)) {
2217       selectLast();
2218     } else {
2219       jj_consume_token(-1);
2220       throw new ParseException();
2221     }
2222   }
2223 
2224 /**
2225  * Apply a boolean expression to all elements of a collection, creating a new collection
2226  * containing those elements for which the expression returned true.
2227  */
2228   final public void selectAll() throws ParseException {
2229                             /*@bgen(jjtree) Select */
2230   ASTSelect jjtn000 = new ASTSelect(JJTSELECT);
2231   boolean jjtc000 = true;
2232   jjtree.openNodeScope(jjtn000);
2233     try {
2234       jj_consume_token(54);
2235       jj_consume_token(3);
2236       expression();
2237       jj_consume_token(55);
2238     } catch (Throwable jjte000) {
2239       if (jjtc000) {
2240         jjtree.clearNodeScope(jjtn000);
2241         jjtc000 = false;
2242       } else {
2243         jjtree.popNode();
2244       }
2245       if (jjte000 instanceof RuntimeException) {
2246         {if (true) throw (RuntimeException)jjte000;}
2247       }
2248       if (jjte000 instanceof ParseException) {
2249         {if (true) throw (ParseException)jjte000;}
2250       }
2251       {if (true) throw (Error)jjte000;}
2252     } finally {
2253       if (jjtc000) {
2254         jjtree.closeNodeScope(jjtn000, true);
2255       }
2256     }
2257   }
2258 
2259 /**
2260  * Apply a boolean expression to all elements of a collection, creating a new collection
2261  * containing those elements for the first element for which the expression returned true.
2262  */
2263   final public void selectFirst() throws ParseException {
2264                                    /*@bgen(jjtree) SelectFirst */
2265   ASTSelectFirst jjtn000 = new ASTSelectFirst(JJTSELECTFIRST);
2266   boolean jjtc000 = true;
2267   jjtree.openNodeScope(jjtn000);
2268     try {
2269       jj_consume_token(54);
2270       jj_consume_token(11);
2271       expression();
2272       jj_consume_token(55);
2273     } catch (Throwable jjte000) {
2274       if (jjtc000) {
2275         jjtree.clearNodeScope(jjtn000);
2276         jjtc000 = false;
2277       } else {
2278         jjtree.popNode();
2279       }
2280       if (jjte000 instanceof RuntimeException) {
2281         {if (true) throw (RuntimeException)jjte000;}
2282       }
2283       if (jjte000 instanceof ParseException) {
2284         {if (true) throw (ParseException)jjte000;}
2285       }
2286       {if (true) throw (Error)jjte000;}
2287     } finally {
2288       if (jjtc000) {
2289         jjtree.closeNodeScope(jjtn000, true);
2290       }
2291     }
2292   }
2293 
2294 /**
2295  * Apply a boolean expression to all elements of a collection, creating a new collection
2296  * containing those elements for the first element for which the expression returned true.
2297  */
2298   final public void selectLast() throws ParseException {
2299                                  /*@bgen(jjtree) SelectLast */
2300   ASTSelectLast jjtn000 = new ASTSelectLast(JJTSELECTLAST);
2301   boolean jjtc000 = true;
2302   jjtree.openNodeScope(jjtn000);
2303     try {
2304       jj_consume_token(54);
2305       jj_consume_token(58);
2306       expression();
2307       jj_consume_token(55);
2308     } catch (Throwable jjte000) {
2309       if (jjtc000) {
2310         jjtree.clearNodeScope(jjtn000);
2311         jjtc000 = false;
2312       } else {
2313         jjtree.popNode();
2314       }
2315       if (jjte000 instanceof RuntimeException) {
2316         {if (true) throw (RuntimeException)jjte000;}
2317       }
2318       if (jjte000 instanceof ParseException) {
2319         {if (true) throw (ParseException)jjte000;}
2320       }
2321       {if (true) throw (Error)jjte000;}
2322     } finally {
2323       if (jjtc000) {
2324         jjtree.closeNodeScope(jjtn000, true);
2325       }
2326     }
2327   }
2328 
2329   final public void index() throws ParseException {
2330                           /*@bgen(jjtree) Property */
2331   ASTProperty jjtn000 = new ASTProperty(JJTPROPERTY);
2332   boolean jjtc000 = true;
2333   jjtree.openNodeScope(jjtn000);
2334     try {
2335       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2336       case 52:
2337         jj_consume_token(52);
2338         expression();
2339         jj_consume_token(53);
2340                            jjtree.closeNodeScope(jjtn000, true);
2341                            jjtc000 = false;
2342                            jjtn000.setIndexedAccess(true);
2343         break;
2344       case DYNAMIC_SUBSCRIPT:
2345         jj_consume_token(DYNAMIC_SUBSCRIPT);
2346                           ASTConst jjtn001 = new ASTConst(JJTCONST);
2347                           boolean jjtc001 = true;
2348                           jjtree.openNodeScope(jjtn001);
2349         try {
2350                           jjtree.closeNodeScope(jjtn001, true);
2351                           jjtc001 = false;
2352                           jjtn001.setValue( token_source.literalValue );
2353         } finally {
2354                           if (jjtc001) {
2355                             jjtree.closeNodeScope(jjtn001, true);
2356                           }
2357         }
2358       jjtree.closeNodeScope(jjtn000, true);
2359       jjtc000 = false;
2360         jjtn000.setIndexedAccess(true);
2361         break;
2362       default:
2363         jj_la1[63] = jj_gen;
2364         jj_consume_token(-1);
2365         throw new ParseException();
2366       }
2367     } catch (Throwable jjte000) {
2368       if (jjtc000) {
2369         jjtree.clearNodeScope(jjtn000);
2370         jjtc000 = false;
2371       } else {
2372         jjtree.popNode();
2373       }
2374       if (jjte000 instanceof RuntimeException) {
2375         {if (true) throw (RuntimeException)jjte000;}
2376       }
2377       if (jjte000 instanceof ParseException) {
2378         {if (true) throw (ParseException)jjte000;}
2379       }
2380       {if (true) throw (Error)jjte000;}
2381     } finally {
2382       if (jjtc000) {
2383         jjtree.closeNodeScope(jjtn000, true);
2384       }
2385     }
2386   }
2387 
2388   private boolean jj_2_1(int xla) {
2389     jj_la = xla; jj_lastpos = jj_scanpos = token;
2390     try { return !jj_3_1(); }
2391     catch(LookaheadSuccess ls) { return true; }
2392     finally { jj_save(0, xla); }
2393   }
2394 
2395   private boolean jj_2_2(int xla) {
2396     jj_la = xla; jj_lastpos = jj_scanpos = token;
2397     try { return !jj_3_2(); }
2398     catch(LookaheadSuccess ls) { return true; }
2399     finally { jj_save(1, xla); }
2400   }
2401 
2402   private boolean jj_2_3(int xla) {
2403     jj_la = xla; jj_lastpos = jj_scanpos = token;
2404     try { return !jj_3_3(); }
2405     catch(LookaheadSuccess ls) { return true; }
2406     finally { jj_save(2, xla); }
2407   }
2408 
2409   private boolean jj_2_4(int xla) {
2410     jj_la = xla; jj_lastpos = jj_scanpos = token;
2411     try { return !jj_3_4(); }
2412     catch(LookaheadSuccess ls) { return true; }
2413     finally { jj_save(3, xla); }
2414   }
2415 
2416   private boolean jj_2_5(int xla) {
2417     jj_la = xla; jj_lastpos = jj_scanpos = token;
2418     try { return !jj_3_5(); }
2419     catch(LookaheadSuccess ls) { return true; }
2420     finally { jj_save(4, xla); }
2421   }
2422 
2423   private boolean jj_2_6(int xla) {
2424     jj_la = xla; jj_lastpos = jj_scanpos = token;
2425     try { return !jj_3_6(); }
2426     catch(LookaheadSuccess ls) { return true; }
2427     finally { jj_save(5, xla); }
2428   }
2429 
2430   private boolean jj_2_7(int xla) {
2431     jj_la = xla; jj_lastpos = jj_scanpos = token;
2432     try { return !jj_3_7(); }
2433     catch(LookaheadSuccess ls) { return true; }
2434     finally { jj_save(6, xla); }
2435   }
2436 
2437   private boolean jj_2_8(int xla) {
2438     jj_la = xla; jj_lastpos = jj_scanpos = token;
2439     try { return !jj_3_8(); }
2440     catch(LookaheadSuccess ls) { return true; }
2441     finally { jj_save(7, xla); }
2442   }
2443 
2444   private boolean jj_2_9(int xla) {
2445     jj_la = xla; jj_lastpos = jj_scanpos = token;
2446     try { return !jj_3_9(); }
2447     catch(LookaheadSuccess ls) { return true; }
2448     finally { jj_save(8, xla); }
2449   }
2450 
2451   private boolean jj_2_10(int xla) {
2452     jj_la = xla; jj_lastpos = jj_scanpos = token;
2453     try { return !jj_3_10(); }
2454     catch(LookaheadSuccess ls) { return true; }
2455     finally { jj_save(9, xla); }
2456   }
2457 
2458   private boolean jj_2_11(int xla) {
2459     jj_la = xla; jj_lastpos = jj_scanpos = token;
2460     try { return !jj_3_11(); }
2461     catch(LookaheadSuccess ls) { return true; }
2462     finally { jj_save(10, xla); }
2463   }
2464 
2465   private boolean jj_2_12(int xla) {
2466     jj_la = xla; jj_lastpos = jj_scanpos = token;
2467     try { return !jj_3_12(); }
2468     catch(LookaheadSuccess ls) { return true; }
2469     finally { jj_save(11, xla); }
2470   }
2471 
2472   private boolean jj_2_13(int xla) {
2473     jj_la = xla; jj_lastpos = jj_scanpos = token;
2474     try { return !jj_3_13(); }
2475     catch(LookaheadSuccess ls) { return true; }
2476     finally { jj_save(12, xla); }
2477   }
2478 
2479   private boolean jj_2_14(int xla) {
2480     jj_la = xla; jj_lastpos = jj_scanpos = token;
2481     try { return !jj_3_14(); }
2482     catch(LookaheadSuccess ls) { return true; }
2483     finally { jj_save(13, xla); }
2484   }
2485 
2486   private boolean jj_2_15(int xla) {
2487     jj_la = xla; jj_lastpos = jj_scanpos = token;
2488     try { return !jj_3_15(); }
2489     catch(LookaheadSuccess ls) { return true; }
2490     finally { jj_save(14, xla); }
2491   }
2492 
2493   private boolean jj_2_16(int xla) {
2494     jj_la = xla; jj_lastpos = jj_scanpos = token;
2495     try { return !jj_3_16(); }
2496     catch(LookaheadSuccess ls) { return true; }
2497     finally { jj_save(15, xla); }
2498   }
2499 
2500   private boolean jj_3R_57() {
2501     if (jj_3R_62()) return true;
2502     return false;
2503   }
2504 
2505   private boolean jj_3R_25() {
2506     if (jj_scan_token(IDENT)) return true;
2507     if (jj_scan_token(44)) return true;
2508     return false;
2509   }
2510 
2511   private boolean jj_3R_34() {
2512     if (jj_3R_35()) return true;
2513     return false;
2514   }
2515 
2516   private boolean jj_3_7() {
2517     if (jj_scan_token(4)) return true;
2518     if (jj_scan_token(52)) return true;
2519     return false;
2520   }
2521 
2522   private boolean jj_3_6() {
2523     if (jj_scan_token(51)) return true;
2524     if (jj_scan_token(IDENT)) return true;
2525     return false;
2526   }
2527 
2528   private boolean jj_3_5() {
2529     if (jj_scan_token(50)) return true;
2530     return false;
2531   }
2532 
2533   private boolean jj_3R_27() {
2534     if (jj_3R_34()) return true;
2535     return false;
2536   }
2537 
2538   private boolean jj_3_4() {
2539     if (jj_scan_token(49)) return true;
2540     return false;
2541   }
2542 
2543   private boolean jj_3R_65() {
2544     if (jj_scan_token(IDENT)) return true;
2545     return false;
2546   }
2547 
2548   private boolean jj_3R_43() {
2549     if (jj_3R_44()) return true;
2550     return false;
2551   }
2552 
2553   private boolean jj_3R_56() {
2554     if (jj_scan_token(48)) return true;
2555     return false;
2556   }
2557 
2558   private boolean jj_3R_55() {
2559     if (jj_scan_token(47)) return true;
2560     return false;
2561   }
2562 
2563   private boolean jj_3R_54() {
2564     if (jj_scan_token(46)) return true;
2565     return false;
2566   }
2567 
2568   private boolean jj_3R_31() {
2569     if (jj_3R_27()) return true;
2570     return false;
2571   }
2572 
2573   private boolean jj_3_13() {
2574     if (jj_scan_token(52)) return true;
2575     if (jj_3R_27()) return true;
2576     return false;
2577   }
2578 
2579   private boolean jj_3R_53() {
2580     Token xsp;
2581     xsp = jj_scanpos;
2582     if (jj_scan_token(73)) {
2583     jj_scanpos = xsp;
2584     if (jj_scan_token(76)) {
2585     jj_scanpos = xsp;
2586     if (jj_scan_token(79)) {
2587     jj_scanpos = xsp;
2588     if (jj_scan_token(80)) {
2589     jj_scanpos = xsp;
2590     if (jj_scan_token(81)) return true;
2591     }
2592     }
2593     }
2594     }
2595     return false;
2596   }
2597 
2598   private boolean jj_3R_26() {
2599     if (jj_3R_27()) return true;
2600     return false;
2601   }
2602 
2603   private boolean jj_3R_52() {
2604     Token xsp;
2605     xsp = jj_scanpos;
2606     if (jj_3R_53()) {
2607     jj_scanpos = xsp;
2608     if (jj_3R_54()) {
2609     jj_scanpos = xsp;
2610     if (jj_3R_55()) {
2611     jj_scanpos = xsp;
2612     if (jj_3R_56()) {
2613     jj_scanpos = xsp;
2614     if (jj_3_4()) {
2615     jj_scanpos = xsp;
2616     if (jj_3_5()) {
2617     jj_scanpos = xsp;
2618     if (jj_3_6()) {
2619     jj_scanpos = xsp;
2620     if (jj_3_7()) {
2621     jj_scanpos = xsp;
2622     if (jj_3R_57()) {
2623     jj_scanpos = xsp;
2624     if (jj_3_8()) {
2625     jj_scanpos = xsp;
2626     if (jj_3R_58()) {
2627     jj_scanpos = xsp;
2628     if (jj_3R_59()) {
2629     jj_scanpos = xsp;
2630     if (jj_3R_60()) {
2631     jj_scanpos = xsp;
2632     if (jj_3R_61()) {
2633     jj_scanpos = xsp;
2634     if (jj_3_9()) return true;
2635     }
2636     }
2637     }
2638     }
2639     }
2640     }
2641     }
2642     }
2643     }
2644     }
2645     }
2646     }
2647     }
2648     }
2649     return false;
2650   }
2651 
2652   private boolean jj_3R_42() {
2653     if (jj_3R_43()) return true;
2654     return false;
2655   }
2656 
2657   private boolean jj_3_12() {
2658     if (jj_scan_token(52)) return true;
2659     if (jj_scan_token(53)) return true;
2660     return false;
2661   }
2662 
2663   private boolean jj_3_11() {
2664     if (jj_scan_token(44)) return true;
2665     Token xsp;
2666     xsp = jj_scanpos;
2667     if (jj_3R_26()) jj_scanpos = xsp;
2668     if (jj_scan_token(45)) return true;
2669     return false;
2670   }
2671 
2672   private boolean jj_3R_67() {
2673     if (jj_scan_token(DYNAMIC_SUBSCRIPT)) return true;
2674     return false;
2675   }
2676 
2677   private boolean jj_3_2() {
2678     if (jj_3R_22()) return true;
2679     return false;
2680   }
2681 
2682   private boolean jj_3R_66() {
2683     if (jj_scan_token(52)) return true;
2684     return false;
2685   }
2686 
2687   private boolean jj_3R_64() {
2688     Token xsp;
2689     xsp = jj_scanpos;
2690     if (jj_3R_66()) {
2691     jj_scanpos = xsp;
2692     if (jj_3R_67()) return true;
2693     }
2694     return false;
2695   }
2696 
2697   private boolean jj_3_1() {
2698     if (jj_3R_21()) return true;
2699     return false;
2700   }
2701 
2702   private boolean jj_3R_23() {
2703     if (jj_scan_token(57)) return true;
2704     if (jj_3R_32()) return true;
2705     return false;
2706   }
2707 
2708   private boolean jj_3R_41() {
2709     if (jj_3R_42()) return true;
2710     return false;
2711   }
2712 
2713   private boolean jj_3R_30() {
2714     if (jj_scan_token(54)) return true;
2715     if (jj_scan_token(58)) return true;
2716     return false;
2717   }
2718 
2719   private boolean jj_3R_32() {
2720     if (jj_scan_token(IDENT)) return true;
2721     return false;
2722   }
2723 
2724   private boolean jj_3R_51() {
2725     if (jj_3R_52()) return true;
2726     return false;
2727   }
2728 
2729   private boolean jj_3R_29() {
2730     if (jj_scan_token(54)) return true;
2731     if (jj_scan_token(11)) return true;
2732     return false;
2733   }
2734 
2735   private boolean jj_3R_40() {
2736     if (jj_3R_41()) return true;
2737     return false;
2738   }
2739 
2740   private boolean jj_3R_33() {
2741     if (jj_scan_token(56)) return true;
2742     return false;
2743   }
2744 
2745   private boolean jj_3R_63() {
2746     if (jj_3R_65()) return true;
2747     return false;
2748   }
2749 
2750   private boolean jj_3R_28() {
2751     if (jj_scan_token(54)) return true;
2752     if (jj_scan_token(3)) return true;
2753     return false;
2754   }
2755 
2756   private boolean jj_3R_50() {
2757     if (jj_3R_51()) return true;
2758     return false;
2759   }
2760 
2761   private boolean jj_3R_39() {
2762     if (jj_3R_40()) return true;
2763     return false;
2764   }
2765 
2766   private boolean jj_3_10() {
2767     if (jj_3R_25()) return true;
2768     return false;
2769   }
2770 
2771   private boolean jj_3R_24() {
2772     if (jj_3R_33()) return true;
2773     return false;
2774   }
2775 
2776   private boolean jj_3R_49() {
2777     Token xsp;
2778     xsp = jj_scanpos;
2779     if (jj_scan_token(41)) {
2780     jj_scanpos = xsp;
2781     if (jj_scan_token(28)) return true;
2782     }
2783     return false;
2784   }
2785 
2786   private boolean jj_3R_48() {
2787     if (jj_scan_token(40)) return true;
2788     return false;
2789   }
2790 
2791   private boolean jj_3_16() {
2792     if (jj_3R_30()) return true;
2793     return false;
2794   }
2795 
2796   private boolean jj_3R_47() {
2797     if (jj_scan_token(35)) return true;
2798     return false;
2799   }
2800 
2801   private boolean jj_3_15() {
2802     if (jj_3R_29()) return true;
2803     return false;
2804   }
2805 
2806   private boolean jj_3R_38() {
2807     if (jj_3R_39()) return true;
2808     return false;
2809   }
2810 
2811   private boolean jj_3R_46() {
2812     if (jj_scan_token(36)) return true;
2813     return false;
2814   }
2815 
2816   private boolean jj_3_14() {
2817     if (jj_3R_28()) return true;
2818     return false;
2819   }
2820 
2821   private boolean jj_3R_62() {
2822     if (jj_3R_33()) return true;
2823     return false;
2824   }
2825 
2826   private boolean jj_3R_45() {
2827     Token xsp;
2828     xsp = jj_scanpos;
2829     if (jj_3R_46()) {
2830     jj_scanpos = xsp;
2831     if (jj_3R_47()) {
2832     jj_scanpos = xsp;
2833     if (jj_3R_48()) {
2834     jj_scanpos = xsp;
2835     if (jj_3R_49()) {
2836     jj_scanpos = xsp;
2837     if (jj_3R_50()) return true;
2838     }
2839     }
2840     }
2841     }
2842     return false;
2843   }
2844 
2845   private boolean jj_3R_37() {
2846     if (jj_3R_38()) return true;
2847     return false;
2848   }
2849 
2850   private boolean jj_3R_22() {
2851     if (jj_scan_token(54)) return true;
2852     if (jj_3R_31()) return true;
2853     return false;
2854   }
2855 
2856   private boolean jj_3_9() {
2857     if (jj_scan_token(51)) return true;
2858     Token xsp;
2859     xsp = jj_scanpos;
2860     if (jj_3R_24()) jj_scanpos = xsp;
2861     if (jj_scan_token(54)) return true;
2862     return false;
2863   }
2864 
2865   private boolean jj_3R_36() {
2866     if (jj_3R_37()) return true;
2867     return false;
2868   }
2869 
2870   private boolean jj_3R_61() {
2871     if (jj_scan_token(54)) return true;
2872     return false;
2873   }
2874 
2875   private boolean jj_3R_60() {
2876     if (jj_scan_token(44)) return true;
2877     return false;
2878   }
2879 
2880   private boolean jj_3R_59() {
2881     if (jj_3R_64()) return true;
2882     return false;
2883   }
2884 
2885   private boolean jj_3_3() {
2886     if (jj_3R_21()) return true;
2887     return false;
2888   }
2889 
2890   private boolean jj_3R_21() {
2891     if (jj_scan_token(IDENT)) return true;
2892     if (jj_scan_token(44)) return true;
2893     return false;
2894   }
2895 
2896   private boolean jj_3R_58() {
2897     Token xsp;
2898     xsp = jj_scanpos;
2899     if (jj_3_3()) {
2900     jj_scanpos = xsp;
2901     if (jj_3R_63()) return true;
2902     }
2903     return false;
2904   }
2905 
2906   private boolean jj_3R_35() {
2907     if (jj_3R_36()) return true;
2908     return false;
2909   }
2910 
2911   private boolean jj_3R_44() {
2912     if (jj_3R_45()) return true;
2913     return false;
2914   }
2915 
2916   private boolean jj_3_8() {
2917     if (jj_3R_23()) return true;
2918     return false;
2919   }
2920 
2921   /** Generated Token Manager. */
2922   public OgnlParserTokenManager token_source;
2923   JavaCharStream jj_input_stream;
2924   /** Current token. */
2925   public Token token;
2926   /** Next token. */
2927   public Token jj_nt;
2928   private int jj_ntk;
2929   private Token jj_scanpos, jj_lastpos;
2930   private int jj_la;
2931   private int jj_gen;
2932   final private int[] jj_la1 = new int[64];
2933   static private int[] jj_la1_0;
2934   static private int[] jj_la1_1;
2935   static private int[] jj_la1_2;
2936   static {
2937       jj_la1_init_0();
2938       jj_la1_init_1();
2939       jj_la1_init_2();
2940    }
2941    private static void jj_la1_init_0() {
2942       jj_la1_0 = new int[] {0x2,0x4,0x8,0x60,0x60,0x180,0x180,0x600,0x600,0x1800,0x1800,0x6000,0x6000,0x78000,0x18000,0x60000,0x78000,0x1ff80000,0x180000,0x600000,0x1800000,0x6000000,0x1ff80000,0xe0000000,0x60000000,0x80000000,0x0,0xe0000000,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x10000010,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x10000010,0x0,0x2,0x10000010,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x2,0x10000010,0x2,0x10000010,0x2,0x10000010,0x2,0x10000010,0x0,};
2943    }
2944    private static void jj_la1_init_1() {
2945       jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x7,0x0,0x1,0x6,0x7,0x18,0x18,0xe0,0xe0,0x200,0x800,0x400,0x35fd318,0x101800,0x0,0x400000,0x401000,0x101800,0x0,0x0,0x0,0x35fd318,0x1000000,0x0,0x35fd318,0x1c000,0x1000000,0x501000,0x0,0x0,0x0,0x800,0x0,0x35fd318,0x0,0x35fd318,0x0,0x35fd318,0x0,0x35fd318,0x100000,};
2946    }
2947    private static void jj_la1_init_2() {
2948       jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x39209,0x8,0x1,0x0,0x1,0x8,0x39200,0x1,0x0,0x39209,0x0,0x0,0x39209,0x39200,0x0,0x9,0x0,0x1,0x1,0x0,0x0,0x39209,0x0,0x39209,0x0,0x39209,0x0,0x39209,0x8,};
2949    }
2950   final private JJCalls[] jj_2_rtns = new JJCalls[16];
2951   private boolean jj_rescan = false;
2952   private int jj_gc = 0;
2953 
2954   /** Constructor with InputStream. */
2955   public OgnlParser(java.io.InputStream stream) {
2956      this(stream, null);
2957   }
2958   /** Constructor with InputStream and supplied encoding */
2959   public OgnlParser(java.io.InputStream stream, String encoding) {
2960     try { jj_input_stream = new JavaCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2961     token_source = new OgnlParserTokenManager(jj_input_stream);
2962     token = new Token();
2963     jj_ntk = -1;
2964     jj_gen = 0;
2965     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
2966     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2967   }
2968 
2969   /** Reinitialise. */
2970   public void ReInit(java.io.InputStream stream) {
2971      ReInit(stream, null);
2972   }
2973   /** Reinitialise. */
2974   public void ReInit(java.io.InputStream stream, String encoding) {
2975     try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
2976     token_source.ReInit(jj_input_stream);
2977     token = new Token();
2978     jj_ntk = -1;
2979     jj_gen = 0;
2980     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
2981     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2982   }
2983 
2984   /** Constructor. */
2985   public OgnlParser(java.io.Reader stream) {
2986     jj_input_stream = new JavaCharStream(stream, 1, 1);
2987     token_source = new OgnlParserTokenManager(jj_input_stream);
2988     token = new Token();
2989     jj_ntk = -1;
2990     jj_gen = 0;
2991     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
2992     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2993   }
2994 
2995   /** Reinitialise. */
2996   public void ReInit(java.io.Reader stream) {
2997     jj_input_stream.ReInit(stream, 1, 1);
2998     token_source.ReInit(jj_input_stream);
2999     token = new Token();
3000     jj_ntk = -1;
3001     jj_gen = 0;
3002     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
3003     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3004   }
3005 
3006   /** Constructor with generated Token Manager. */
3007   public OgnlParser(OgnlParserTokenManager tm) {
3008     token_source = tm;
3009     token = new Token();
3010     jj_ntk = -1;
3011     jj_gen = 0;
3012     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
3013     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3014   }
3015 
3016   /** Reinitialise. */
3017   public void ReInit(OgnlParserTokenManager tm) {
3018     token_source = tm;
3019     token = new Token();
3020     jj_ntk = -1;
3021     jj_gen = 0;
3022     for (int i = 0; i < 64; i++) jj_la1[i] = -1;
3023     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3024   }
3025 
3026   private Token jj_consume_token(int kind) throws ParseException {
3027     Token oldToken;
3028     if ((oldToken = token).next != null) token = token.next;
3029     else token = token.next = token_source.getNextToken();
3030     jj_ntk = -1;
3031     if (token.kind == kind) {
3032       jj_gen++;
3033       if (++jj_gc > 100) {
3034         jj_gc = 0;
3035         for (int i = 0; i < jj_2_rtns.length; i++) {
3036           JJCalls c = jj_2_rtns[i];
3037           while (c != null) {
3038             if (c.gen < jj_gen) c.first = null;
3039             c = c.next;
3040           }
3041         }
3042       }
3043       return token;
3044     }
3045     token = oldToken;
3046     jj_kind = kind;
3047     throw generateParseException();
3048   }
3049 
3050   static private final class LookaheadSuccess extends java.lang.Error { }
3051   final private LookaheadSuccess jj_ls = new LookaheadSuccess();
3052   private boolean jj_scan_token(int kind) {
3053     if (jj_scanpos == jj_lastpos) {
3054       jj_la--;
3055       if (jj_scanpos.next == null) {
3056         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3057       } else {
3058         jj_lastpos = jj_scanpos = jj_scanpos.next;
3059       }
3060     } else {
3061       jj_scanpos = jj_scanpos.next;
3062     }
3063     if (jj_rescan) {
3064       int i = 0; Token tok = token;
3065       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3066       if (tok != null) jj_add_error_token(kind, i);
3067     }
3068     if (jj_scanpos.kind != kind) return true;
3069     if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
3070     return false;
3071   }
3072 
3073 
3074 /** Get the next Token. */
3075   final public Token getNextToken() {
3076     if (token.next != null) token = token.next;
3077     else token = token.next = token_source.getNextToken();
3078     jj_ntk = -1;
3079     jj_gen++;
3080     return token;
3081   }
3082 
3083 /** Get the specific Token. */
3084   final public Token getToken(int index) {
3085     Token t = token;
3086     for (int i = 0; i < index; i++) {
3087       if (t.next != null) t = t.next;
3088       else t = t.next = token_source.getNextToken();
3089     }
3090     return t;
3091   }
3092 
3093   private int jj_ntk() {
3094     if ((jj_nt=token.next) == null)
3095       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3096     else
3097       return (jj_ntk = jj_nt.kind);
3098   }
3099 
3100   private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>();
3101   private int[] jj_expentry;
3102   private int jj_kind = -1;
3103   private int[] jj_lasttokens = new int[100];
3104   private int jj_endpos;
3105 
3106   private void jj_add_error_token(int kind, int pos) {
3107     if (pos >= 100) return;
3108     if (pos == jj_endpos + 1) {
3109       jj_lasttokens[jj_endpos++] = kind;
3110     } else if (jj_endpos != 0) {
3111       jj_expentry = new int[jj_endpos];
3112       for (int i = 0; i < jj_endpos; i++) {
3113         jj_expentry[i] = jj_lasttokens[i];
3114       }
3115       jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) {
3116         int[] oldentry = (int[])(it.next());
3117         if (oldentry.length == jj_expentry.length) {
3118           for (int i = 0; i < jj_expentry.length; i++) {
3119             if (oldentry[i] != jj_expentry[i]) {
3120               continue jj_entries_loop;
3121             }
3122           }
3123           jj_expentries.add(jj_expentry);
3124           break jj_entries_loop;
3125         }
3126       }
3127       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
3128     }
3129   }
3130 
3131   /** Generate ParseException. */
3132   public ParseException generateParseException() {
3133     jj_expentries.clear();
3134     boolean[] la1tokens = new boolean[86];
3135     if (jj_kind >= 0) {
3136       la1tokens[jj_kind] = true;
3137       jj_kind = -1;
3138     }
3139     for (int i = 0; i < 64; i++) {
3140       if (jj_la1[i] == jj_gen) {
3141         for (int j = 0; j < 32; j++) {
3142           if ((jj_la1_0[i] & (1<<j)) != 0) {
3143             la1tokens[j] = true;
3144           }
3145           if ((jj_la1_1[i] & (1<<j)) != 0) {
3146             la1tokens[32+j] = true;
3147           }
3148           if ((jj_la1_2[i] & (1<<j)) != 0) {
3149             la1tokens[64+j] = true;
3150           }
3151         }
3152       }
3153     }
3154     for (int i = 0; i < 86; i++) {
3155       if (la1tokens[i]) {
3156         jj_expentry = new int[1];
3157         jj_expentry[0] = i;
3158         jj_expentries.add(jj_expentry);
3159       }
3160     }
3161     jj_endpos = 0;
3162     jj_rescan_token();
3163     jj_add_error_token(0, 0);
3164     int[][] exptokseq = new int[jj_expentries.size()][];
3165     for (int i = 0; i < jj_expentries.size(); i++) {
3166       exptokseq[i] = jj_expentries.get(i);
3167     }
3168     return new ParseException(token, exptokseq, tokenImage);
3169   }
3170 
3171   /** Enable tracing. */
3172   final public void enable_tracing() {
3173   }
3174 
3175   /** Disable tracing. */
3176   final public void disable_tracing() {
3177   }
3178 
3179   private void jj_rescan_token() {
3180     jj_rescan = true;
3181     for (int i = 0; i < 16; i++) {
3182     try {
3183       JJCalls p = jj_2_rtns[i];
3184       do {
3185         if (p.gen > jj_gen) {
3186           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
3187           switch (i) {
3188             case 0: jj_3_1(); break;
3189             case 1: jj_3_2(); break;
3190             case 2: jj_3_3(); break;
3191             case 3: jj_3_4(); break;
3192             case 4: jj_3_5(); break;
3193             case 5: jj_3_6(); break;
3194             case 6: jj_3_7(); break;
3195             case 7: jj_3_8(); break;
3196             case 8: jj_3_9(); break;
3197             case 9: jj_3_10(); break;
3198             case 10: jj_3_11(); break;
3199             case 11: jj_3_12(); break;
3200             case 12: jj_3_13(); break;
3201             case 13: jj_3_14(); break;
3202             case 14: jj_3_15(); break;
3203             case 15: jj_3_16(); break;
3204           }
3205         }
3206         p = p.next;
3207       } while (p != null);
3208       } catch(LookaheadSuccess ls) { }
3209     }
3210     jj_rescan = false;
3211   }
3212 
3213   private void jj_save(int index, int xla) {
3214     JJCalls p = jj_2_rtns[index];
3215     while (p.gen > jj_gen) {
3216       if (p.next == null) { p = p.next = new JJCalls(); break; }
3217       p = p.next;
3218     }
3219     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
3220   }
3221 
3222   static final class JJCalls {
3223     int gen;
3224     Token first;
3225     int arg;
3226     JJCalls next;
3227   }
3228 
3229 }