KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > lang > jpath > expression > Parser


1 /*
2  * Copyright 1999,2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 /* Generated By:JJTree&JavaCC: Do not edit this line. Parser.java */
18 package org.apache.taglibs.standard.lang.jpath.expression;
19
20 import java.io.StringReader;
21
22 public class Parser/*@bgen(jjtree)*/implements ParserTreeConstants, ParserConstants {/*@bgen(jjtree)*/
23   protected JJTParserState jjtree = new JJTParserState();public static Expression parse(String expressionText)
24             throws ParseException {
25         Parser parser;
26         Expression expression;
27         parser = new Parser(new StringReader(expressionText));
28         parser.Expression();
29         expression = (Expression)parser.jjtree.rootNode();
30         return expression;
31     }
32
33     void jjtreeOpenNodeScope(Node n) {
34         ((SimpleNode)n).firstToken = getToken(0);
35     }
36
37     void jjtreeCloseNodeScope(Node n) {
38         ((SimpleNode)n).lastToken = getToken(0);
39     }
40
41 /*
42  * Expression syntax follows.
43  */

44   final public void Expression() throws ParseException {
45  /*@bgen(jjtree) #Expression( 1) */
46   Expression jjtn000 = new Expression(JJTEXPRESSION);
47   boolean jjtc000 = true;
48   jjtree.openNodeScope(jjtn000);
49   jjtreeOpenNodeScope(jjtn000);
50     try {
51       Expr();
52       jj_consume_token(0);
53     } catch (Throwable jjte000) {
54     if (jjtc000) {
55       jjtree.clearNodeScope(jjtn000);
56       jjtc000 = false;
57     } else {
58       jjtree.popNode();
59     }
60     if (jjte000 instanceof RuntimeException) {
61       {if (true) throw (RuntimeException)jjte000;}
62     }
63     if (jjte000 instanceof ParseException) {
64       {if (true) throw (ParseException)jjte000;}
65     }
66     {if (true) throw (Error)jjte000;}
67     } finally {
68     if (jjtc000) {
69       jjtree.closeNodeScope(jjtn000, 1);
70       jjtreeCloseNodeScope(jjtn000);
71     }
72     }
73   }
74
75 /* [1] Expr ::= OrExpr */
76   final public void Expr() throws ParseException {
77     OrExpr();
78   }
79
80 /* [2] OrExpr ::= AndExpr ( 'or' AndExpr )* */
81   final public void OrExpr() throws ParseException {
82     AndExpr();
83     label_1:
84     while (true) {
85       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
86       case OR:
87         ;
88         break;
89       default:
90         jj_la1[0] = jj_gen;
91         break label_1;
92       }
93       jj_consume_token(OR);
94            OrOperator jjtn001 = new OrOperator(JJTOROPERATOR);
95            boolean jjtc001 = true;
96            jjtree.openNodeScope(jjtn001);
97            jjtreeOpenNodeScope(jjtn001);
98       try {
99         AndExpr();
100       } catch (Throwable jjte001) {
101            if (jjtc001) {
102              jjtree.clearNodeScope(jjtn001);
103              jjtc001 = false;
104            } else {
105              jjtree.popNode();
106            }
107            if (jjte001 instanceof RuntimeException) {
108              {if (true) throw (RuntimeException)jjte001;}
109            }
110            if (jjte001 instanceof ParseException) {
111              {if (true) throw (ParseException)jjte001;}
112            }
113            {if (true) throw (Error)jjte001;}
114       } finally {
115            if (jjtc001) {
116              jjtree.closeNodeScope(jjtn001, 2);
117              jjtreeCloseNodeScope(jjtn001);
118            }
119       }
120     }
121   }
122
123 /* [3] AndExpr ::= EqualityExpr ( 'and' EqualityExpr )* */
124   final public void AndExpr() throws ParseException {
125     EqualityExpr();
126     label_2:
127     while (true) {
128       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
129       case AND:
130         ;
131         break;
132       default:
133         jj_la1[1] = jj_gen;
134         break label_2;
135       }
136       jj_consume_token(AND);
137             AndOperator jjtn001 = new AndOperator(JJTANDOPERATOR);
138             boolean jjtc001 = true;
139             jjtree.openNodeScope(jjtn001);
140             jjtreeOpenNodeScope(jjtn001);
141       try {
142         EqualityExpr();
143       } catch (Throwable jjte001) {
144             if (jjtc001) {
145               jjtree.clearNodeScope(jjtn001);
146               jjtc001 = false;
147             } else {
148               jjtree.popNode();
149             }
150             if (jjte001 instanceof RuntimeException) {
151               {if (true) throw (RuntimeException)jjte001;}
152             }
153             if (jjte001 instanceof ParseException) {
154               {if (true) throw (ParseException)jjte001;}
155             }
156             {if (true) throw (Error)jjte001;}
157       } finally {
158             if (jjtc001) {
159               jjtree.closeNodeScope(jjtn001, 2);
160               jjtreeCloseNodeScope(jjtn001);
161             }
162       }
163     }
164   }
165
166 /* [4] EqualityExpr ::= RelationalExpr ( ( '=' | '!-' ) RelationExpr )* */
167   final public void EqualityExpr() throws ParseException {
168     RelationalExpr();
169     label_3:
170     while (true) {
171       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
172       case EQ:
173       case NEQ:
174         ;
175         break;
176       default:
177         jj_la1[2] = jj_gen;
178         break label_3;
179       }
180       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
181       case EQ:
182         jj_consume_token(EQ);
183             EqualsOperator jjtn001 = new EqualsOperator(JJTEQUALSOPERATOR);
184             boolean jjtc001 = true;
185             jjtree.openNodeScope(jjtn001);
186             jjtreeOpenNodeScope(jjtn001);
187         try {
188           RelationalExpr();
189         } catch (Throwable jjte001) {
190             if (jjtc001) {
191               jjtree.clearNodeScope(jjtn001);
192               jjtc001 = false;
193             } else {
194               jjtree.popNode();
195             }
196             if (jjte001 instanceof RuntimeException) {
197               {if (true) throw (RuntimeException)jjte001;}
198             }
199             if (jjte001 instanceof ParseException) {
200               {if (true) throw (ParseException)jjte001;}
201             }
202             {if (true) throw (Error)jjte001;}
203         } finally {
204             if (jjtc001) {
205               jjtree.closeNodeScope(jjtn001, 2);
206               jjtreeCloseNodeScope(jjtn001);
207             }
208         }
209         break;
210       case NEQ:
211         jj_consume_token(NEQ);
212              NotEqualsOperator jjtn002 = new NotEqualsOperator(JJTNOTEQUALSOPERATOR);
213              boolean jjtc002 = true;
214              jjtree.openNodeScope(jjtn002);
215              jjtreeOpenNodeScope(jjtn002);
216         try {
217           RelationalExpr();
218         } catch (Throwable jjte002) {
219              if (jjtc002) {
220                jjtree.clearNodeScope(jjtn002);
221                jjtc002 = false;
222              } else {
223                jjtree.popNode();
224              }
225              if (jjte002 instanceof RuntimeException) {
226                {if (true) throw (RuntimeException)jjte002;}
227              }
228              if (jjte002 instanceof ParseException) {
229                {if (true) throw (ParseException)jjte002;}
230              }
231              {if (true) throw (Error)jjte002;}
232         } finally {
233              if (jjtc002) {
234                jjtree.closeNodeScope(jjtn002, 2);
235                jjtreeCloseNodeScope(jjtn002);
236              }
237         }
238         break;
239       default:
240         jj_la1[3] = jj_gen;
241         jj_consume_token(-1);
242         throw new ParseException();
243       }
244     }
245   }
246
247 /* [5] RelationalExpr ::= AdditiveExpr ( ( '<' | '>' | '<=' | '>=' ) AdditiveExpr )* */
248   final public void RelationalExpr() throws ParseException {
249     AdditiveExpr();
250     label_4:
251     while (true) {
252       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
253       case LT:
254       case LTE:
255       case GT:
256       case GTE:
257         ;
258         break;
259       default:
260         jj_la1[4] = jj_gen;
261         break label_4;
262       }
263       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
264       case LT:
265         jj_consume_token(LT);
266            LessThanOperator jjtn001 = new LessThanOperator(JJTLESSTHANOPERATOR);
267            boolean jjtc001 = true;
268            jjtree.openNodeScope(jjtn001);
269            jjtreeOpenNodeScope(jjtn001);
270         try {
271           AdditiveExpr();
272         } catch (Throwable jjte001) {
273            if (jjtc001) {
274              jjtree.clearNodeScope(jjtn001);
275              jjtc001 = false;
276            } else {
277              jjtree.popNode();
278            }
279            if (jjte001 instanceof RuntimeException) {
280              {if (true) throw (RuntimeException)jjte001;}
281            }
282            if (jjte001 instanceof ParseException) {
283              {if (true) throw (ParseException)jjte001;}
284            }
285            {if (true) throw (Error)jjte001;}
286         } finally {
287            if (jjtc001) {
288              jjtree.closeNodeScope(jjtn001, 2);
289              jjtreeCloseNodeScope(jjtn001);
290            }
291         }
292         break;
293       case GT:
294         jj_consume_token(GT);
295            GreaterThanOperator jjtn002 = new GreaterThanOperator(JJTGREATERTHANOPERATOR);
296            boolean jjtc002 = true;
297            jjtree.openNodeScope(jjtn002);
298            jjtreeOpenNodeScope(jjtn002);
299         try {
300           AdditiveExpr();
301         } catch (Throwable jjte002) {
302            if (jjtc002) {
303              jjtree.clearNodeScope(jjtn002);
304              jjtc002 = false;
305            } else {
306              jjtree.popNode();
307            }
308            if (jjte002 instanceof RuntimeException) {
309              {if (true) throw (RuntimeException)jjte002;}
310            }
311            if (jjte002 instanceof ParseException) {
312              {if (true) throw (ParseException)jjte002;}
313            }
314            {if (true) throw (Error)jjte002;}
315         } finally {
316            if (jjtc002) {
317              jjtree.closeNodeScope(jjtn002, 2);
318              jjtreeCloseNodeScope(jjtn002);
319            }
320         }
321         break;
322       case LTE:
323         jj_consume_token(LTE);
324             LessThanEqualOperator jjtn003 = new LessThanEqualOperator(JJTLESSTHANEQUALOPERATOR);
325             boolean jjtc003 = true;
326             jjtree.openNodeScope(jjtn003);
327             jjtreeOpenNodeScope(jjtn003);
328         try {
329           AdditiveExpr();
330         } catch (Throwable jjte003) {
331             if (jjtc003) {
332               jjtree.clearNodeScope(jjtn003);
333               jjtc003 = false;
334             } else {
335               jjtree.popNode();
336             }
337             if (jjte003 instanceof RuntimeException) {
338               {if (true) throw (RuntimeException)jjte003;}
339             }
340             if (jjte003 instanceof ParseException) {
341               {if (true) throw (ParseException)jjte003;}
342             }
343             {if (true) throw (Error)jjte003;}
344         } finally {
345             if (jjtc003) {
346               jjtree.closeNodeScope(jjtn003, 2);
347               jjtreeCloseNodeScope(jjtn003);
348             }
349         }
350         break;
351       case GTE:
352         jj_consume_token(GTE);
353             GreaterThanEqualOperator jjtn004 = new GreaterThanEqualOperator(JJTGREATERTHANEQUALOPERATOR);
354             boolean jjtc004 = true;
355             jjtree.openNodeScope(jjtn004);
356             jjtreeOpenNodeScope(jjtn004);
357         try {
358           AdditiveExpr();
359         } catch (Throwable jjte004) {
360             if (jjtc004) {
361               jjtree.clearNodeScope(jjtn004);
362               jjtc004 = false;
363             } else {
364               jjtree.popNode();
365             }
366             if (jjte004 instanceof RuntimeException) {
367               {if (true) throw (RuntimeException)jjte004;}
368             }
369             if (jjte004 instanceof ParseException) {
370               {if (true) throw (ParseException)jjte004;}
371             }
372             {if (true) throw (Error)jjte004;}
373         } finally {
374             if (jjtc004) {
375               jjtree.closeNodeScope(jjtn004, 2);
376               jjtreeCloseNodeScope(jjtn004);
377             }
378         }
379         break;
380       default:
381         jj_la1[5] = jj_gen;
382         jj_consume_token(-1);
383         throw new ParseException();
384       }
385     }
386   }
387
388 /* [6] AdditiveExpr ::= MultiplicitiveExpr ( ( '+' | '-' ) MultiplicitiveExpr )* */
389   final public void AdditiveExpr() throws ParseException {
390     MultiplicativeExpr();
391     label_5:
392     while (true) {
393       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
394       case PLUS:
395       case MINUS:
396         ;
397         break;
398       default:
399         jj_la1[6] = jj_gen;
400         break label_5;
401       }
402       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
403       case PLUS:
404         jj_consume_token(PLUS);
405              AdditionOperator jjtn001 = new AdditionOperator(JJTADDITIONOPERATOR);
406              boolean jjtc001 = true;
407              jjtree.openNodeScope(jjtn001);
408              jjtreeOpenNodeScope(jjtn001);
409         try {
410           MultiplicativeExpr();
411         } catch (Throwable jjte001) {
412              if (jjtc001) {
413                jjtree.clearNodeScope(jjtn001);
414                jjtc001 = false;
415              } else {
416                jjtree.popNode();
417              }
418              if (jjte001 instanceof RuntimeException) {
419                {if (true) throw (RuntimeException)jjte001;}
420              }
421              if (jjte001 instanceof ParseException) {
422                {if (true) throw (ParseException)jjte001;}
423              }
424              {if (true) throw (Error)jjte001;}
425         } finally {
426              if (jjtc001) {
427                jjtree.closeNodeScope(jjtn001, 2);
428                jjtreeCloseNodeScope(jjtn001);
429              }
430         }
431         break;
432       case MINUS:
433         jj_consume_token(MINUS);
434               SubtractionOperator jjtn002 = new SubtractionOperator(JJTSUBTRACTIONOPERATOR);
435               boolean jjtc002 = true;
436               jjtree.openNodeScope(jjtn002);
437               jjtreeOpenNodeScope(jjtn002);
438         try {
439           MultiplicativeExpr();
440         } catch (Throwable jjte002) {
441               if (jjtc002) {
442                 jjtree.clearNodeScope(jjtn002);
443                 jjtc002 = false;
444               } else {
445                 jjtree.popNode();
446               }
447               if (jjte002 instanceof RuntimeException) {
448                 {if (true) throw (RuntimeException)jjte002;}
449               }
450               if (jjte002 instanceof ParseException) {
451                 {if (true) throw (ParseException)jjte002;}
452               }
453               {if (true) throw (Error)jjte002;}
454         } finally {
455               if (jjtc002) {
456                 jjtree.closeNodeScope(jjtn002, 2);
457                 jjtreeCloseNodeScope(jjtn002);
458               }
459         }
460         break;
461       default:
462         jj_la1[7] = jj_gen;
463         jj_consume_token(-1);
464         throw new ParseException();
465       }
466     }
467   }
468
469 /* [7] MultiplicitiveExpr ::= UnaryExpr ( ( '*' | '/' | '%' ) UnaryExpr )* */
470   final public void MultiplicativeExpr() throws ParseException {
471     UnaryExpr();
472     label_6:
473     while (true) {
474       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
475       case DIV:
476       case MULT:
477       case MOD:
478         ;
479         break;
480       default:
481         jj_la1[8] = jj_gen;
482         break label_6;
483       }
484       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
485       case MULT:
486         jj_consume_token(MULT);
487              MultiplicationOperator jjtn001 = new MultiplicationOperator(JJTMULTIPLICATIONOPERATOR);
488              boolean jjtc001 = true;
489              jjtree.openNodeScope(jjtn001);
490              jjtreeOpenNodeScope(jjtn001);
491         try {
492           UnaryExpr();
493         } catch (Throwable jjte001) {
494              if (jjtc001) {
495                jjtree.clearNodeScope(jjtn001);
496                jjtc001 = false;
497              } else {
498                jjtree.popNode();
499              }
500              if (jjte001 instanceof RuntimeException) {
501                {if (true) throw (RuntimeException)jjte001;}
502              }
503              if (jjte001 instanceof ParseException) {
504                {if (true) throw (ParseException)jjte001;}
505              }
506              {if (true) throw (Error)jjte001;}
507         } finally {
508              if (jjtc001) {
509                jjtree.closeNodeScope(jjtn001, 2);
510                jjtreeCloseNodeScope(jjtn001);
511              }
512         }
513         break;
514       case DIV:
515         jj_consume_token(DIV);
516             DivisionOperator jjtn002 = new DivisionOperator(JJTDIVISIONOPERATOR);
517             boolean jjtc002 = true;
518             jjtree.openNodeScope(jjtn002);
519             jjtreeOpenNodeScope(jjtn002);
520         try {
521           UnaryExpr();
522         } catch (Throwable jjte002) {
523             if (jjtc002) {
524               jjtree.clearNodeScope(jjtn002);
525               jjtc002 = false;
526             } else {
527               jjtree.popNode();
528             }
529             if (jjte002 instanceof RuntimeException) {
530               {if (true) throw (RuntimeException)jjte002;}
531             }
532             if (jjte002 instanceof ParseException) {
533               {if (true) throw (ParseException)jjte002;}
534             }
535             {if (true) throw (Error)jjte002;}
536         } finally {
537             if (jjtc002) {
538               jjtree.closeNodeScope(jjtn002, 2);
539               jjtreeCloseNodeScope(jjtn002);
540             }
541         }
542         break;
543       case MOD:
544         jj_consume_token(MOD);
545             ModulusOperator jjtn003 = new ModulusOperator(JJTMODULUSOPERATOR);
546             boolean jjtc003 = true;
547             jjtree.openNodeScope(jjtn003);
548             jjtreeOpenNodeScope(jjtn003);
549         try {
550           UnaryExpr();
551         } catch (Throwable jjte003) {
552             if (jjtc003) {
553               jjtree.clearNodeScope(jjtn003);
554               jjtc003 = false;
555             } else {
556               jjtree.popNode();
557             }
558             if (jjte003 instanceof RuntimeException) {
559               {if (true) throw (RuntimeException)jjte003;}
560             }
561             if (jjte003 instanceof ParseException) {
562               {if (true) throw (ParseException)jjte003;}
563             }
564             {if (true) throw (Error)jjte003;}
565         } finally {
566             if (jjtc003) {
567               jjtree.closeNodeScope(jjtn003, 2);
568               jjtreeCloseNodeScope(jjtn003);
569             }
570         }
571         break;
572       default:
573         jj_la1[9] = jj_gen;
574         jj_consume_token(-1);
575         throw new ParseException();
576       }
577     }
578   }
579
580 /* [7] UnaryExpr ::= UnionExpr | '-' UnaryExpr */
581   final public void UnaryExpr() throws ParseException {
582     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
583     case LIST_BEGIN:
584     case FUNCTION_BEGIN:
585     case 29:
586     case 30:
587     case 31:
588     case 32:
589     case 33:
590     case 34:
591     case 35:
592     case 36:
593     case 37:
594     case 38:
595     case 39:
596     case 40:
597     case 41:
598     case 42:
599     case 43:
600     case 44:
601     case 45:
602     case 46:
603     case 47:
604     case 48:
605     case 49:
606     case 50:
607     case 51:
608     case 52:
609     case 53:
610     case 54:
611     case 55:
612     case 56:
613     case 57:
614     case SCOPE_LIMIT_NAME:
615     case BOOLEAN_LITERAL:
616     case STRING_LITERAL:
617     case NUMBER_LITERAL:
618     case IDENTIFIER:
619       UnionExpr();
620       break;
621     case MINUS:
622       jj_consume_token(MINUS);
623       UnaryExpr();
624       break;
625     default:
626       jj_la1[10] = jj_gen;
627       jj_consume_token(-1);
628       throw new ParseException();
629     }
630   }
631
632 /* [7] UnionExpr ::= IntrospectiveExpr ( '|' IntrospectiveExpr )* */
633   final public void UnionExpr() throws ParseException {
634     IntrospectiveExpr();
635     label_7:
636     while (true) {
637       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
638       case UNION:
639         ;
640         break;
641       default:
642         jj_la1[11] = jj_gen;
643         break label_7;
644       }
645       jj_consume_token(UNION);
646                                   UnionOperator jjtn001 = new UnionOperator(JJTUNIONOPERATOR);
647                                   boolean jjtc001 = true;
648                                   jjtree.openNodeScope(jjtn001);
649                                   jjtreeOpenNodeScope(jjtn001);
650       try {
651         IntrospectiveExpr();
652       } catch (Throwable jjte001) {
653                                   if (jjtc001) {
654                                     jjtree.clearNodeScope(jjtn001);
655                                     jjtc001 = false;
656                                   } else {
657                                     jjtree.popNode();
658                                   }
659                                   if (jjte001 instanceof RuntimeException) {
660                                     {if (true) throw (RuntimeException)jjte001;}
661                                   }
662                                   if (jjte001 instanceof ParseException) {
663                                     {if (true) throw (ParseException)jjte001;}
664                                   }
665                                   {if (true) throw (Error)jjte001;}
666       } finally {
667                                   if (jjtc001) {
668                                     jjtree.closeNodeScope(jjtn001, 2);
669                                     jjtreeCloseNodeScope(jjtn001);
670                                   }
671       }
672     }
673   }
674
675 /* [7] IntrospectiveExpr ::= PathExpr ( '.' PathExpr )* */
676   final public void IntrospectiveExpr() throws ParseException {
677     PathExpr();
678     label_8:
679     while (true) {
680       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
681       case INTROSPECT:
682         ;
683         break;
684       default:
685         jj_la1[12] = jj_gen;
686         break label_8;
687       }
688       jj_consume_token(INTROSPECT);
689                    IntrospectionOperator jjtn001 = new IntrospectionOperator(JJTINTROSPECTIONOPERATOR);
690                    boolean jjtc001 = true;
691                    jjtree.openNodeScope(jjtn001);
692                    jjtreeOpenNodeScope(jjtn001);
693       try {
694         PathExpr();
695       } catch (Throwable jjte001) {
696                    if (jjtc001) {
697                      jjtree.clearNodeScope(jjtn001);
698                      jjtc001 = false;
699                    } else {
700                      jjtree.popNode();
701                    }
702                    if (jjte001 instanceof RuntimeException) {
703                      {if (true) throw (RuntimeException)jjte001;}
704                    }
705                    if (jjte001 instanceof ParseException) {
706                      {if (true) throw (ParseException)jjte001;}
707                    }
708                    {if (true) throw (Error)jjte001;}
709       } finally {
710                    if (jjtc001) {
711                      jjtree.closeNodeScope(jjtn001, 2);
712                      jjtreeCloseNodeScope(jjtn001);
713                    }
714       }
715     }
716   }
717
718 /* [7] PathExpr ::= FilterExpr */
719   final public void PathExpr() throws ParseException {
720     FilterExpr();
721   }
722
723 /* [7] FilterExpr ::= PrimaryExpr ( Predicate )* */
724   final public void FilterExpr() throws ParseException {
725     PrimaryExpr();
726     label_9:
727     while (true) {
728       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
729       case PREDICATE_BEGIN:
730         ;
731         break;
732       default:
733         jj_la1[13] = jj_gen;
734         break label_9;
735       }
736                   FilterOperator jjtn001 = new FilterOperator(JJTFILTEROPERATOR);
737                   boolean jjtc001 = true;
738                   jjtree.openNodeScope(jjtn001);
739                   jjtreeOpenNodeScope(jjtn001);
740       try {
741         Predicate();
742       } catch (Throwable jjte001) {
743                   if (jjtc001) {
744                     jjtree.clearNodeScope(jjtn001);
745                     jjtc001 = false;
746                   } else {
747                     jjtree.popNode();
748                   }
749                   if (jjte001 instanceof RuntimeException) {
750                     {if (true) throw (RuntimeException)jjte001;}
751                   }
752                   if (jjte001 instanceof ParseException) {
753                     {if (true) throw (ParseException)jjte001;}
754                   }
755                   {if (true) throw (Error)jjte001;}
756       } finally {
757                   if (jjtc001) {
758                     jjtree.closeNodeScope(jjtn001, 2);
759                     jjtreeCloseNodeScope(jjtn001);
760                   }
761       }
762     }
763   }
764
765 /* [] Predicate ::= '[' PredicateExpr ']' */
766   final public void Predicate() throws ParseException {
767  /*@bgen(jjtree) #Predicate( 1) */
768   Predicate jjtn000 = new Predicate(JJTPREDICATE);
769   boolean jjtc000 = true;
770   jjtree.openNodeScope(jjtn000);
771   jjtreeOpenNodeScope(jjtn000);
772     try {
773       jj_consume_token(PREDICATE_BEGIN);
774       PredicateExpr();
775       jj_consume_token(PREDICATE_END);
776     } catch (Throwable jjte000) {
777     if (jjtc000) {
778       jjtree.clearNodeScope(jjtn000);
779       jjtc000 = false;
780     } else {
781       jjtree.popNode();
782     }
783     if (jjte000 instanceof RuntimeException) {
784       {if (true) throw (RuntimeException)jjte000;}
785     }
786     if (jjte000 instanceof ParseException) {
787       {if (true) throw (ParseException)jjte000;}
788     }
789     {if (true) throw (Error)jjte000;}
790     } finally {
791     if (jjtc000) {
792       jjtree.closeNodeScope(jjtn000, 1);
793       jjtreeCloseNodeScope(jjtn000);
794     }
795     }
796   }
797
798 /* [] PredicateExpr ::= Expr */
799   final public void PredicateExpr() throws ParseException {
800     Expr();
801   }
802
803 /* [7] PrimaryExpr ::= Literal | '(' Expr ')' | FunctionCall | ScopeLimitExpr | Identifier */
804   final public void PrimaryExpr() throws ParseException {
805     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
806     case LIST_BEGIN:
807     case BOOLEAN_LITERAL:
808     case STRING_LITERAL:
809     case NUMBER_LITERAL:
810       Literal();
811       break;
812     case FUNCTION_BEGIN:
813       jj_consume_token(FUNCTION_BEGIN);
814       Expr();
815       jj_consume_token(FUNCTION_END);
816       break;
817     default:
818       jj_la1[14] = jj_gen;
819       if (jj_2_1(2)) {
820         Function();
821       } else {
822         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
823         case SCOPE_LIMIT_NAME:
824           ScopeLimitExpr();
825           break;
826         default:
827           jj_la1[15] = jj_gen;
828           if (jj_2_2(2)) {
829             Identifier();
830           } else {
831             jj_consume_token(-1);
832             throw new ParseException();
833           }
834         }
835       }
836     }
837   }
838
839 /* FunctionCall ::= FunctionName '(' ( Argument ( ',' Argument)*)? ')' */
840 /* FunctionName ::= 'boolean' | 'number' | 'string' | 'not' | ... */
841   final public void Function() throws ParseException {
842     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
843     case 29:
844       jj_consume_token(29);
845       Argument();
846                            BooleanFunction jjtn001 = new BooleanFunction(JJTBOOLEANFUNCTION);
847                            boolean jjtc001 = true;
848                            jjtree.openNodeScope(jjtn001);
849                            jjtreeOpenNodeScope(jjtn001);
850       try {
851         jj_consume_token(FUNCTION_END);
852       } finally {
853                            if (jjtc001) {
854                              jjtree.closeNodeScope(jjtn001, 1);
855                              jjtreeCloseNodeScope(jjtn001);
856                            }
857       }
858       break;
859     case 30:
860       jj_consume_token(30);
861       Argument();
862                           NumberFunction jjtn002 = new NumberFunction(JJTNUMBERFUNCTION);
863                           boolean jjtc002 = true;
864                           jjtree.openNodeScope(jjtn002);
865                           jjtreeOpenNodeScope(jjtn002);
866       try {
867         jj_consume_token(FUNCTION_END);
868       } finally {
869                           if (jjtc002) {
870                             jjtree.closeNodeScope(jjtn002, 1);
871                             jjtreeCloseNodeScope(jjtn002);
872                           }
873       }
874       break;
875     case 31:
876       jj_consume_token(31);
877       Argument();
878                           StringFunction jjtn003 = new StringFunction(JJTSTRINGFUNCTION);
879                           boolean jjtc003 = true;
880                           jjtree.openNodeScope(jjtn003);
881                           jjtreeOpenNodeScope(jjtn003);
882       try {
883         jj_consume_token(FUNCTION_END);
884       } finally {
885                           if (jjtc003) {
886                             jjtree.closeNodeScope(jjtn003, 1);
887                             jjtreeCloseNodeScope(jjtn003);
888                           }
889       }
890       break;
891     case 32:
892       jj_consume_token(32);
893       Argument();
894                        NotFunction jjtn004 = new NotFunction(JJTNOTFUNCTION);
895                        boolean jjtc004 = true;
896                        jjtree.openNodeScope(jjtn004);
897                        jjtreeOpenNodeScope(jjtn004);
898       try {
899         jj_consume_token(FUNCTION_END);
900       } finally {
901                        if (jjtc004) {
902                          jjtree.closeNodeScope(jjtn004, 1);
903                          jjtreeCloseNodeScope(jjtn004);
904                        }
905       }
906       break;
907     case 33:
908       jj_consume_token(33);
909       Argument();
910                          FloorFunction jjtn005 = new FloorFunction(JJTFLOORFUNCTION);
911                          boolean jjtc005 = true;
912                          jjtree.openNodeScope(jjtn005);
913                          jjtreeOpenNodeScope(jjtn005);
914       try {
915         jj_consume_token(FUNCTION_END);
916       } finally {
917                          if (jjtc005) {
918                            jjtree.closeNodeScope(jjtn005, 1);
919                            jjtreeCloseNodeScope(jjtn005);
920                          }
921       }
922       break;
923     case 34:
924       jj_consume_token(34);
925       Argument();
926                            CeilingFunction jjtn006 = new CeilingFunction(JJTCEILINGFUNCTION);
927                            boolean jjtc006 = true;
928                            jjtree.openNodeScope(jjtn006);
929                            jjtreeOpenNodeScope(jjtn006);
930       try {
931         jj_consume_token(FUNCTION_END);
932       } finally {
933                            if (jjtc006) {
934                              jjtree.closeNodeScope(jjtn006, 1);
935                              jjtreeCloseNodeScope(jjtn006);
936                            }
937       }
938       break;
939     case 35:
940       jj_consume_token(35);
941       Argument();
942                          RoundFunction jjtn007 = new RoundFunction(JJTROUNDFUNCTION);
943                          boolean jjtc007 = true;
944                          jjtree.openNodeScope(jjtn007);
945                          jjtreeOpenNodeScope(jjtn007);
946       try {
947         jj_consume_token(FUNCTION_END);
948       } finally {
949                          if (jjtc007) {
950                            jjtree.closeNodeScope(jjtn007, 1);
951                            jjtreeCloseNodeScope(jjtn007);
952                          }
953       }
954       break;
955     case 36:
956      FormatNumberFunction jjtn008 = new FormatNumberFunction(JJTFORMATNUMBERFUNCTION);
957      boolean jjtc008 = true;
958      jjtree.openNodeScope(jjtn008);
959      jjtreeOpenNodeScope(jjtn008);
960       try {
961         jj_consume_token(36);
962         Argument();
963         jj_consume_token(SEPARATOR);
964         Argument();
965         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
966         case SEPARATOR:
967           jj_consume_token(SEPARATOR);
968           Argument();
969           break;
970         default:
971           jj_la1[16] = jj_gen;
972           ;
973         }
974         jj_consume_token(FUNCTION_END);
975       } catch (Throwable jjte008) {
976      if (jjtc008) {
977        jjtree.clearNodeScope(jjtn008);
978        jjtc008 = false;
979      } else {
980        jjtree.popNode();
981      }
982      if (jjte008 instanceof RuntimeException) {
983        {if (true) throw (RuntimeException)jjte008;}
984      }
985      if (jjte008 instanceof ParseException) {
986        {if (true) throw (ParseException)jjte008;}
987      }
988      {if (true) throw (Error)jjte008;}
989       } finally {
990      if (jjtc008) {
991        jjtree.closeNodeScope(jjtn008, jjtree.nodeArity() > 1);
992        jjtreeCloseNodeScope(jjtn008);
993      }
994       }
995       break;
996     case 37:
997      ConcatFunction jjtn009 = new ConcatFunction(JJTCONCATFUNCTION);
998      boolean jjtc009 = true;
999      jjtree.openNodeScope(jjtn009);
1000     jjtreeOpenNodeScope(jjtn009);
1001      try {
1002        jj_consume_token(37);
1003        Argument();
1004        label_10:
1005        while (true) {
1006          jj_consume_token(SEPARATOR);
1007          Argument();
1008          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1009          case SEPARATOR:
1010            ;
1011            break;
1012          default:
1013            jj_la1[17] = jj_gen;
1014            break label_10;
1015          }
1016        }
1017        jj_consume_token(FUNCTION_END);
1018      } catch (Throwable jjte009) {
1019     if (jjtc009) {
1020       jjtree.clearNodeScope(jjtn009);
1021       jjtc009 = false;
1022     } else {
1023       jjtree.popNode();
1024     }
1025     if (jjte009 instanceof RuntimeException) {
1026       {if (true) throw (RuntimeException)jjte009;}
1027     }
1028     if (jjte009 instanceof ParseException) {
1029       {if (true) throw (ParseException)jjte009;}
1030     }
1031     {if (true) throw (Error)jjte009;}
1032      } finally {
1033     if (jjtc009) {
1034       jjtree.closeNodeScope(jjtn009, jjtree.nodeArity() > 1);
1035       jjtreeCloseNodeScope(jjtn009);
1036     }
1037      }
1038      break;
1039    case 38:
1040      jj_consume_token(38);
1041      Argument();
1042                              EncodeUrlFunction jjtn010 = new EncodeUrlFunction(JJTENCODEURLFUNCTION);
1043                              boolean jjtc010 = true;
1044                              jjtree.openNodeScope(jjtn010);
1045                              jjtreeOpenNodeScope(jjtn010);
1046      try {
1047        jj_consume_token(FUNCTION_END);
1048      } finally {
1049                              if (jjtc010) {
1050                                jjtree.closeNodeScope(jjtn010, 1);
1051                                jjtreeCloseNodeScope(jjtn010);
1052                              }
1053      }
1054      break;
1055    case 39:
1056      jj_consume_token(39);
1057      Argument();
1058                               EncodeHtmlFunction jjtn011 = new EncodeHtmlFunction(JJTENCODEHTMLFUNCTION);
1059                               boolean jjtc011 = true;
1060                               jjtree.openNodeScope(jjtn011);
1061                               jjtreeOpenNodeScope(jjtn011);
1062      try {
1063        jj_consume_token(FUNCTION_END);
1064      } finally {
1065                               if (jjtc011) {
1066                                 jjtree.closeNodeScope(jjtn011, 1);
1067                                 jjtreeCloseNodeScope(jjtn011);
1068                               }
1069      }
1070      break;
1071    case 40:
1072      jj_consume_token(40);
1073      Argument();
1074                                 StringLengthFunction jjtn012 = new StringLengthFunction(JJTSTRINGLENGTHFUNCTION);
1075                                 boolean jjtc012 = true;
1076                                 jjtree.openNodeScope(jjtn012);
1077                                 jjtreeOpenNodeScope(jjtn012);
1078      try {
1079        jj_consume_token(FUNCTION_END);
1080      } finally {
1081                                 if (jjtc012) {
1082                                   jjtree.closeNodeScope(jjtn012, 1);
1083                                   jjtreeCloseNodeScope(jjtn012);
1084                                 }
1085      }
1086      break;
1087    case 41:
1088     SubstringFunction jjtn013 = new SubstringFunction(JJTSUBSTRINGFUNCTION);
1089     boolean jjtc013 = true;
1090     jjtree.openNodeScope(jjtn013);
1091     jjtreeOpenNodeScope(jjtn013);
1092      try {
1093        jj_consume_token(41);
1094        Argument();
1095        jj_consume_token(SEPARATOR);
1096        Argument();
1097        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1098        case SEPARATOR:
1099          jj_consume_token(SEPARATOR);
1100          Argument();
1101          break;
1102        default:
1103          jj_la1[18] = jj_gen;
1104          ;
1105        }
1106        jj_consume_token(FUNCTION_END);
1107      } catch (Throwable jjte013) {
1108     if (jjtc013) {
1109       jjtree.clearNodeScope(jjtn013);
1110       jjtc013 = false;
1111     } else {
1112       jjtree.popNode();
1113     }
1114     if (jjte013 instanceof RuntimeException) {
1115       {if (true) throw (RuntimeException)jjte013;}
1116     }
1117     if (jjte013 instanceof ParseException) {
1118       {if (true) throw (ParseException)jjte013;}
1119     }
1120     {if (true) throw (Error)jjte013;}
1121      } finally {
1122     if (jjtc013) {
1123       jjtree.closeNodeScope(jjtn013, jjtree.nodeArity() > 1);
1124       jjtreeCloseNodeScope(jjtn013);
1125     }
1126      }
1127      break;
1128    case 42:
1129     StartsWithFunction jjtn014 = new StartsWithFunction(JJTSTARTSWITHFUNCTION);
1130     boolean jjtc014 = true;
1131     jjtree.openNodeScope(jjtn014);
1132     jjtreeOpenNodeScope(jjtn014);
1133      try {
1134        jj_consume_token(42);
1135        Argument();
1136        jj_consume_token(SEPARATOR);
1137        Argument();
1138        jj_consume_token(FUNCTION_END);
1139      } catch (Throwable jjte014) {
1140     if (jjtc014) {
1141       jjtree.clearNodeScope(jjtn014);
1142       jjtc014 = false;
1143     } else {
1144       jjtree.popNode();
1145     }
1146     if (jjte014 instanceof RuntimeException) {
1147       {if (true) throw (RuntimeException)jjte014;}
1148     }
1149     if (jjte014 instanceof ParseException) {
1150       {if (true) throw (ParseException)jjte014;}
1151     }
1152     {if (true) throw (Error)jjte014;}
1153      } finally {
1154     if (jjtc014) {
1155       jjtree.closeNodeScope(jjtn014, 2);
1156       jjtreeCloseNodeScope(jjtn014);
1157     }
1158      }
1159      break;
1160    case 43:
1161     ContainsFunction jjtn015 = new ContainsFunction(JJTCONTAINSFUNCTION);
1162     boolean jjtc015 = true;
1163     jjtree.openNodeScope(jjtn015);
1164     jjtreeOpenNodeScope(jjtn015);
1165      try {
1166        jj_consume_token(43);
1167        Argument();
1168        jj_consume_token(SEPARATOR);
1169        Argument();
1170        jj_consume_token(FUNCTION_END);
1171      } catch (Throwable jjte015) {
1172     if (jjtc015) {
1173       jjtree.clearNodeScope(jjtn015);
1174       jjtc015 = false;
1175     } else {
1176       jjtree.popNode();
1177     }
1178     if (jjte015 instanceof RuntimeException) {
1179       {if (true) throw (RuntimeException)jjte015;}
1180     }
1181     if (jjte015 instanceof ParseException) {
1182       {if (true) throw (ParseException)jjte015;}
1183     }
1184     {if (true) throw (Error)jjte015;}
1185      } finally {
1186     if (jjtc015) {
1187       jjtree.closeNodeScope(jjtn015, 2);
1188       jjtreeCloseNodeScope(jjtn015);
1189     }
1190      }
1191      break;
1192    case 44:
1193     SubstringBeforeFunction jjtn016 = new SubstringBeforeFunction(JJTSUBSTRINGBEFOREFUNCTION);
1194     boolean jjtc016 = true;
1195     jjtree.openNodeScope(jjtn016);
1196     jjtreeOpenNodeScope(jjtn016);
1197      try {
1198        jj_consume_token(44);
1199        Argument();
1200        jj_consume_token(SEPARATOR);
1201        Argument();
1202        jj_consume_token(FUNCTION_END);
1203      } catch (Throwable jjte016) {
1204     if (jjtc016) {
1205       jjtree.clearNodeScope(jjtn016);
1206       jjtc016 = false;
1207     } else {
1208       jjtree.popNode();
1209     }
1210     if (jjte016 instanceof RuntimeException) {
1211       {if (true) throw (RuntimeException)jjte016;}
1212     }
1213     if (jjte016 instanceof ParseException) {
1214       {if (true) throw (ParseException)jjte016;}
1215     }
1216     {if (true) throw (Error)jjte016;}
1217      } finally {
1218     if (jjtc016) {
1219       jjtree.closeNodeScope(jjtn016, 2);
1220       jjtreeCloseNodeScope(jjtn016);
1221     }
1222      }
1223      break;
1224    case 45:
1225     SubstringAfterFunction jjtn017 = new SubstringAfterFunction(JJTSUBSTRINGAFTERFUNCTION);
1226     boolean jjtc017 = true;
1227     jjtree.openNodeScope(jjtn017);
1228     jjtreeOpenNodeScope(jjtn017);
1229      try {
1230        jj_consume_token(45);
1231        Argument();
1232        jj_consume_token(SEPARATOR);
1233        Argument();
1234        jj_consume_token(FUNCTION_END);
1235      } catch (Throwable jjte017) {
1236     if (jjtc017) {
1237       jjtree.clearNodeScope(jjtn017);
1238       jjtc017 = false;
1239     } else {
1240       jjtree.popNode();
1241     }
1242     if (jjte017 instanceof RuntimeException) {
1243       {if (true) throw (RuntimeException)jjte017;}
1244     }
1245     if (jjte017 instanceof ParseException) {
1246       {if (true) throw (ParseException)jjte017;}
1247     }
1248     {if (true) throw (Error)jjte017;}
1249      } finally {
1250     if (jjtc017) {
1251       jjtree.closeNodeScope(jjtn017, 2);
1252       jjtreeCloseNodeScope(jjtn017);
1253     }
1254      }
1255      break;
1256    case 46:
1257     TranslateFunction jjtn018 = new TranslateFunction(JJTTRANSLATEFUNCTION);
1258     boolean jjtc018 = true;
1259     jjtree.openNodeScope(jjtn018);
1260     jjtreeOpenNodeScope(jjtn018);
1261      try {
1262        jj_consume_token(46);
1263        Argument();
1264        jj_consume_token(SEPARATOR);
1265        Argument();
1266        jj_consume_token(SEPARATOR);
1267        Argument();
1268        jj_consume_token(FUNCTION_END);
1269      } catch (Throwable jjte018) {
1270     if (jjtc018) {
1271       jjtree.clearNodeScope(jjtn018);
1272       jjtc018 = false;
1273     } else {
1274       jjtree.popNode();
1275     }
1276     if (jjte018 instanceof RuntimeException) {
1277       {if (true) throw (RuntimeException)jjte018;}
1278     }
1279     if (jjte018 instanceof ParseException) {
1280       {if (true) throw (ParseException)jjte018;}
1281     }
1282     {if (true) throw (Error)jjte018;}
1283      } finally {
1284     if (jjtc018) {
1285       jjtree.closeNodeScope(jjtn018, 3);
1286       jjtreeCloseNodeScope(jjtn018);
1287     }
1288      }
1289      break;
1290    case 47:
1291      jj_consume_token(47);
1292                 PositionFunction jjtn019 = new PositionFunction(JJTPOSITIONFUNCTION);
1293                 boolean jjtc019 = true;
1294                 jjtree.openNodeScope(jjtn019);
1295                 jjtreeOpenNodeScope(jjtn019);
1296      try {
1297        jj_consume_token(FUNCTION_END);
1298      } finally {
1299                 if (jjtc019) {
1300                   jjtree.closeNodeScope(jjtn019, 0);
1301                   jjtreeCloseNodeScope(jjtn019);
1302                 }
1303      }
1304      break;
1305    case 48:
1306      jj_consume_token(48);
1307                CurrentFunction jjtn020 = new CurrentFunction(JJTCURRENTFUNCTION);
1308                boolean jjtc020 = true;
1309                jjtree.openNodeScope(jjtn020);
1310                jjtreeOpenNodeScope(jjtn020);
1311      try {
1312        jj_consume_token(FUNCTION_END);
1313      } finally {
1314                if (jjtc020) {
1315                  jjtree.closeNodeScope(jjtn020, 0);
1316                  jjtreeCloseNodeScope(jjtn020);
1317                }
1318      }
1319      break;
1320    case 49:
1321      jj_consume_token(49);
1322             LastFunction jjtn021 = new LastFunction(JJTLASTFUNCTION);
1323             boolean jjtc021 = true;
1324             jjtree.openNodeScope(jjtn021);
1325             jjtreeOpenNodeScope(jjtn021);
1326      try {
1327        jj_consume_token(FUNCTION_END);
1328      } finally {
1329             if (jjtc021) {
1330               jjtree.closeNodeScope(jjtn021, 0);
1331               jjtreeCloseNodeScope(jjtn021);
1332             }
1333      }
1334      break;
1335    case 50:
1336      jj_consume_token(50);
1337      Argument();
1338                         CountFunction jjtn022 = new CountFunction(JJTCOUNTFUNCTION);
1339                         boolean jjtc022 = true;
1340                         jjtree.openNodeScope(jjtn022);
1341                         jjtreeOpenNodeScope(jjtn022);
1342      try {
1343        jj_consume_token(FUNCTION_END);
1344      } finally {
1345                         if (jjtc022) {
1346                           jjtree.closeNodeScope(jjtn022, 1);
1347                           jjtreeCloseNodeScope(jjtn022);
1348                         }
1349      }
1350      break;
1351    case 51:
1352      jj_consume_token(51);
1353      Argument();
1354                       SumFunction jjtn023 = new SumFunction(JJTSUMFUNCTION);
1355                       boolean jjtc023 = true;
1356                       jjtree.openNodeScope(jjtn023);
1357                       jjtreeOpenNodeScope(jjtn023);
1358      try {
1359        jj_consume_token(FUNCTION_END);
1360      } finally {
1361                       if (jjtc023) {
1362                         jjtree.closeNodeScope(jjtn023, 1);
1363                         jjtreeCloseNodeScope(jjtn023);
1364                       }
1365      }
1366      break;
1367    case 52:
1368      jj_consume_token(52);
1369            NowFunction jjtn024 = new NowFunction(JJTNOWFUNCTION);
1370            boolean jjtc024 = true;
1371            jjtree.openNodeScope(jjtn024);
1372            jjtreeOpenNodeScope(jjtn024);
1373      try {
1374        jj_consume_token(FUNCTION_END);
1375      } finally {
1376            if (jjtc024) {
1377              jjtree.closeNodeScope(jjtn024, 0);
1378              jjtreeCloseNodeScope(jjtn024);
1379            }
1380      }
1381      break;
1382    case 53:
1383     DateFunction jjtn025 = new DateFunction(JJTDATEFUNCTION);
1384     boolean jjtc025 = true;
1385     jjtree.openNodeScope(jjtn025);
1386     jjtreeOpenNodeScope(jjtn025);
1387      try {
1388        jj_consume_token(53);
1389        Argument();
1390        label_11:
1391        while (true) {
1392          jj_consume_token(SEPARATOR);
1393          Argument();
1394          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1395          case SEPARATOR:
1396            ;
1397            break;
1398          default:
1399            jj_la1[19] = jj_gen;
1400            break label_11;
1401          }
1402        }
1403        jj_consume_token(FUNCTION_END);
1404      } catch (Throwable jjte025) {
1405     if (jjtc025) {
1406       jjtree.clearNodeScope(jjtn025);
1407       jjtc025 = false;
1408     } else {
1409       jjtree.popNode();
1410     }
1411     if (jjte025 instanceof RuntimeException) {
1412       {if (true) throw (RuntimeException)jjte025;}
1413     }
1414     if (jjte025 instanceof ParseException) {
1415       {if (true) throw (ParseException)jjte025;}
1416     }
1417     {if (true) throw (Error)jjte025;}
1418      } finally {
1419     if (jjtc025) {
1420       jjtree.closeNodeScope(jjtn025, jjtree.nodeArity() > 1);
1421       jjtreeCloseNodeScope(jjtn025);
1422     }
1423      }
1424      break;
1425    case 54:
1426     FormatDateFunction jjtn026 = new FormatDateFunction(JJTFORMATDATEFUNCTION);
1427     boolean jjtc026 = true;
1428     jjtree.openNodeScope(jjtn026);
1429     jjtreeOpenNodeScope(jjtn026);
1430      try {
1431        jj_consume_token(54);
1432        Argument();
1433        jj_consume_token(SEPARATOR);
1434        Argument();
1435        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1436        case SEPARATOR:
1437          jj_consume_token(SEPARATOR);
1438          Argument();
1439          break;
1440        default:
1441          jj_la1[20] = jj_gen;
1442          ;
1443        }
1444        jj_consume_token(FUNCTION_END);
1445      } catch (Throwable jjte026) {
1446     if (jjtc026) {
1447       jjtree.clearNodeScope(jjtn026);
1448       jjtc026 = false;
1449     } else {
1450       jjtree.popNode();
1451     }
1452     if (jjte026 instanceof RuntimeException) {
1453       {if (true) throw (RuntimeException)jjte026;}
1454     }
1455     if (jjte026 instanceof ParseException) {
1456       {if (true) throw (ParseException)jjte026;}
1457     }
1458     {if (true) throw (Error)jjte026;}
1459      } finally {
1460     if (jjtc026) {
1461       jjtree.closeNodeScope(jjtn026, jjtree.nodeArity() > 1);
1462       jjtreeCloseNodeScope(jjtn026);
1463     }
1464      }
1465      break;
1466    case 55:
1467     RollDateFunction jjtn027 = new RollDateFunction(JJTROLLDATEFUNCTION);
1468     boolean jjtc027 = true;
1469     jjtree.openNodeScope(jjtn027);
1470     jjtreeOpenNodeScope(jjtn027);
1471      try {
1472        jj_consume_token(55);
1473        Argument();
1474        jj_consume_token(SEPARATOR);
1475        Argument();
1476        jj_consume_token(SEPARATOR);
1477        Argument();
1478        jj_consume_token(FUNCTION_END);
1479      } catch (Throwable jjte027) {
1480     if (jjtc027) {
1481       jjtree.clearNodeScope(jjtn027);
1482       jjtc027 = false;
1483     } else {
1484       jjtree.popNode();
1485     }
1486     if (jjte027 instanceof RuntimeException) {
1487       {if (true) throw (RuntimeException)jjte027;}
1488     }
1489     if (jjte027 instanceof ParseException) {
1490       {if (true) throw (ParseException)jjte027;}
1491     }
1492     {if (true) throw (Error)jjte027;}
1493      } finally {
1494     if (jjtc027) {
1495       jjtree.closeNodeScope(jjtn027, 3);
1496       jjtreeCloseNodeScope(jjtn027);
1497     }
1498      }
1499      break;
1500    case 56:
1501     AddDateFunction jjtn028 = new AddDateFunction(JJTADDDATEFUNCTION);
1502     boolean jjtc028 = true;
1503     jjtree.openNodeScope(jjtn028);
1504     jjtreeOpenNodeScope(jjtn028);
1505      try {
1506        jj_consume_token(56);
1507        Argument();
1508        jj_consume_token(SEPARATOR);
1509        Argument();
1510        jj_consume_token(SEPARATOR);
1511        Argument();
1512        jj_consume_token(FUNCTION_END);
1513      } catch (Throwable jjte028) {
1514     if (jjtc028) {
1515       jjtree.clearNodeScope(jjtn028);
1516       jjtc028 = false;
1517     } else {
1518       jjtree.popNode();
1519     }
1520     if (jjte028 instanceof RuntimeException) {
1521       {if (true) throw (RuntimeException)jjte028;}
1522     }
1523     if (jjte028 instanceof ParseException) {
1524       {if (true) throw (ParseException)jjte028;}
1525     }
1526     {if (true) throw (Error)jjte028;}
1527      } finally {
1528     if (jjtc028) {
1529       jjtree.closeNodeScope(jjtn028, 3);
1530       jjtreeCloseNodeScope(jjtn028);
1531     }
1532      }
1533      break;
1534    case 57:
1535     TokenizeFunction jjtn029 = new TokenizeFunction(JJTTOKENIZEFUNCTION);
1536     boolean jjtc029 = true;
1537     jjtree.openNodeScope(jjtn029);
1538     jjtreeOpenNodeScope(jjtn029);
1539      try {
1540        jj_consume_token(57);
1541        Argument();
1542        jj_consume_token(SEPARATOR);
1543        Argument();
1544        jj_consume_token(FUNCTION_END);
1545      } catch (Throwable jjte029) {
1546     if (jjtc029) {
1547       jjtree.clearNodeScope(jjtn029);
1548       jjtc029 = false;
1549     } else {
1550       jjtree.popNode();
1551     }
1552     if (jjte029 instanceof RuntimeException) {
1553       {if (true) throw (RuntimeException)jjte029;}
1554     }
1555     if (jjte029 instanceof ParseException) {
1556       {if (true) throw (ParseException)jjte029;}
1557     }
1558     {if (true) throw (Error)jjte029;}
1559      } finally {
1560     if (jjtc029) {
1561       jjtree.closeNodeScope(jjtn029, 2);
1562       jjtreeCloseNodeScope(jjtn029);
1563     }
1564      }
1565      break;
1566    case IDENTIFIER:
1567     UserFunction jjtn030 = new UserFunction(JJTUSERFUNCTION);
1568     boolean jjtc030 = true;
1569     jjtree.openNodeScope(jjtn030);
1570     jjtreeOpenNodeScope(jjtn030);
1571      try {
1572        Identifier();
1573        jj_consume_token(SCOPE_LIMIT);
1574        Identifier();
1575        jj_consume_token(FUNCTION_BEGIN);
1576        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1577        case MINUS:
1578        case LIST_BEGIN:
1579        case FUNCTION_BEGIN:
1580        case 29:
1581        case 30:
1582        case 31:
1583        case 32:
1584        case 33:
1585        case 34:
1586        case 35:
1587        case 36:
1588        case 37:
1589        case 38:
1590        case 39:
1591        case 40:
1592        case 41:
1593        case 42:
1594        case 43:
1595        case 44:
1596        case 45:
1597        case 46:
1598        case 47:
1599        case 48:
1600        case 49:
1601        case 50:
1602        case 51:
1603        case 52:
1604        case 53:
1605        case 54:
1606        case 55:
1607        case 56:
1608        case 57:
1609        case SCOPE_LIMIT_NAME:
1610        case BOOLEAN_LITERAL:
1611        case STRING_LITERAL:
1612        case NUMBER_LITERAL:
1613        case IDENTIFIER:
1614          Argument();
1615          label_12:
1616          while (true) {
1617            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1618            case SEPARATOR:
1619              ;
1620              break;
1621            default:
1622              jj_la1[21] = jj_gen;
1623              break label_12;
1624            }
1625            jj_consume_token(SEPARATOR);
1626            Argument();
1627          }
1628          break;
1629        default:
1630          jj_la1[22] = jj_gen;
1631          ;
1632        }
1633        jj_consume_token(FUNCTION_END);
1634      } catch (Throwable jjte030) {
1635     if (jjtc030) {
1636       jjtree.clearNodeScope(jjtn030);
1637       jjtc030 = false;
1638     } else {
1639       jjtree.popNode();
1640     }
1641     if (jjte030 instanceof RuntimeException) {
1642       {if (true) throw (RuntimeException)jjte030;}
1643     }
1644     if (jjte030 instanceof ParseException) {
1645       {if (true) throw (ParseException)jjte030;}
1646     }
1647     {if (true) throw (Error)jjte030;}
1648      } finally {
1649     if (jjtc030) {
1650       jjtree.closeNodeScope(jjtn030, jjtree.nodeArity() > 1);
1651       jjtreeCloseNodeScope(jjtn030);
1652     }
1653      }
1654      break;
1655    default:
1656      jj_la1[23] = jj_gen;
1657      jj_consume_token(-1);
1658      throw new ParseException();
1659    }
1660  }
1661
1662/* [] Argument ::= Expr */
1663  final public void Argument() throws ParseException {
1664    Expr();
1665  }
1666
1667/* [] ScopeLimitExpr ::= ScopeLimitName Identifier */
1668  final public void ScopeLimitExpr() throws ParseException {
1669   Token t;
1670    ScopeLimitName();
1671      ScopeLimitOperator jjtn001 = new ScopeLimitOperator(JJTSCOPELIMITOPERATOR);
1672      boolean jjtc001 = true;
1673      jjtree.openNodeScope(jjtn001);
1674      jjtreeOpenNodeScope(jjtn001);
1675    try {
1676      Identifier();
1677    } catch (Throwable jjte001) {
1678      if (jjtc001) {
1679        jjtree.clearNodeScope(jjtn001);
1680        jjtc001 = false;
1681      } else {
1682        jjtree.popNode();
1683      }
1684      if (jjte001 instanceof RuntimeException) {
1685        {if (true) throw (RuntimeException)jjte001;}
1686      }
1687      if (jjte001 instanceof ParseException) {
1688        {if (true) throw (ParseException)jjte001;}
1689      }
1690      {if (true) throw (Error)jjte001;}
1691    } finally {
1692      if (jjtc001) {
1693        jjtree.closeNodeScope(jjtn001, 2);
1694        jjtreeCloseNodeScope(jjtn001);
1695      }
1696    }
1697  }
1698
1699/* [] Identifier ::= Letter ( Letter | Digit )* */
1700  final public void Identifier() throws ParseException {
1701 /*@bgen(jjtree) Identifier */
1702   Identifier jjtn000 = new Identifier(JJTIDENTIFIER);
1703   boolean jjtc000 = true;
1704   jjtree.openNodeScope(jjtn000);
1705   jjtreeOpenNodeScope(jjtn000);Token t;
1706    try {
1707      t = jj_consume_token(IDENTIFIER);
1708      jjtree.closeNodeScope(jjtn000, true);
1709      jjtc000 = false;
1710      jjtreeCloseNodeScope(jjtn000);
1711        jjtn000.val = t.image;
1712        jjtn000.image = t.image;
1713        jjtn000.beginColumn = t.beginColumn;
1714        jjtn000.endColumn = t.endColumn;
1715        jjtn000.beginLine = t.beginLine;
1716        jjtn000.endLine = t.endLine;
1717    } finally {
1718     if (jjtc000) {
1719       jjtree.closeNodeScope(jjtn000, true);
1720       jjtreeCloseNodeScope(jjtn000);
1721     }
1722    }
1723  }
1724
1725/* ScopeLimitName ::= 'page' | 'request' | 'session' | 'application' | ... */
1726  final public void ScopeLimitName() throws ParseException {
1727 /*@bgen(jjtree) ScopeLimitName */
1728   ScopeLimitName jjtn000 = new ScopeLimitName(JJTSCOPELIMITNAME);
1729   boolean jjtc000 = true;
1730   jjtree.openNodeScope(jjtn000);
1731   jjtreeOpenNodeScope(jjtn000);Token t;
1732    try {
1733      t = jj_consume_token(SCOPE_LIMIT_NAME);
1734                                                                                   jjtree.closeNodeScope(jjtn000, true);
1735                                                                                   jjtc000 = false;
1736                                                                                   jjtreeCloseNodeScope(jjtn000);
1737                                                                                   jjtn000.val = t.image;
1738    } finally {
1739    if (jjtc000) {
1740      jjtree.closeNodeScope(jjtn000, true);
1741      jjtreeCloseNodeScope(jjtn000);
1742    }
1743    }
1744  }
1745
1746/* Literal ::= UnaryLiteral | ListLiteral */
1747  final public void Literal() throws ParseException {
1748    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1749    case BOOLEAN_LITERAL:
1750    case STRING_LITERAL:
1751    case NUMBER_LITERAL:
1752      UnaryLiteral();
1753      break;
1754    case LIST_BEGIN:
1755      ListLiteral();
1756      break;
1757    default:
1758      jj_la1[24] = jj_gen;
1759      jj_consume_token(-1);
1760      throw new ParseException();
1761    }
1762  }
1763
1764/* UnaryLiteral ::= BooleanLiteral | NumberLiteral | StringLiteral */
1765  final public void UnaryLiteral() throws ParseException {
1766   Token t;
1767    switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1768    case BOOLEAN_LITERAL:
1769   BooleanLiteral jjtn001 = new BooleanLiteral(JJTBOOLEANLITERAL);
1770   boolean jjtc001 = true;
1771   jjtree.openNodeScope(jjtn001);
1772   jjtreeOpenNodeScope(jjtn001);
1773      try {
1774        t = jj_consume_token(BOOLEAN_LITERAL);
1775      jjtree.closeNodeScope(jjtn001, true);
1776      jjtc001 = false;
1777      jjtreeCloseNodeScope(jjtn001);
1778       jjtn001.val = Boolean.valueOf(t.image).booleanValue();
1779      } finally {
1780   if (jjtc001) {
1781     jjtree.closeNodeScope(jjtn001, true);
1782     jjtreeCloseNodeScope(jjtn001);
1783   }
1784      }
1785      break;
1786    case NUMBER_LITERAL:
1787   NumberLiteral jjtn002 = new NumberLiteral(JJTNUMBERLITERAL);
1788   boolean jjtc002 = true;
1789   jjtree.openNodeScope(jjtn002);
1790   jjtreeOpenNodeScope(jjtn002);
1791      try {
1792        t = jj_consume_token(NUMBER_LITERAL);
1793      jjtree.closeNodeScope(jjtn002, true);
1794      jjtc002 = false;
1795      jjtreeCloseNodeScope(jjtn002);
1796       jjtn002.val = Double.parseDouble(t.image);
1797      } finally {
1798   if (jjtc002) {
1799     jjtree.closeNodeScope(jjtn002, true);
1800     jjtreeCloseNodeScope(jjtn002);
1801   }
1802      }
1803      break;
1804    case STRING_LITERAL:
1805   StringLiteral jjtn003 = new StringLiteral(JJTSTRINGLITERAL);
1806   boolean jjtc003 = true;
1807   jjtree.openNodeScope(jjtn003);
1808   jjtreeOpenNodeScope(jjtn003);
1809      try {
1810        t = jj_consume_token(STRING_LITERAL);
1811      jjtree.closeNodeScope(jjtn003, true);
1812      jjtc003 = false;
1813      jjtreeCloseNodeScope(jjtn003);
1814       jjtn003.val = t.image.substring(1, (t.image.length() - 1));
1815      } finally {
1816   if (jjtc003) {
1817     jjtree.closeNodeScope(jjtn003, true);
1818     jjtreeCloseNodeScope(jjtn003);
1819   }
1820      }
1821      break;
1822    default:
1823      jj_la1[25] = jj_gen;
1824      jj_consume_token(-1);
1825      throw new ParseException();
1826    }
1827  }
1828
1829/* ListLiteral ::= '{' UnaryExpr ( ',' UnaryExpr )* '}' */
1830  final public void ListLiteral() throws ParseException {
1831 /*@bgen(jjtree) ListLiteral */
1832  ListLiteral jjtn000 = new ListLiteral(JJTLISTLITERAL);
1833  boolean jjtc000 = true;
1834  jjtree.openNodeScope(jjtn000);
1835  jjtreeOpenNodeScope(jjtn000);
1836    try {
1837      jj_consume_token(LIST_BEGIN);
1838      Expr();
1839      label_13:
1840      while (true) {
1841        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1842        case SEPARATOR:
1843          ;
1844          break;
1845        default:
1846          jj_la1[26] = jj_gen;
1847          break label_13;
1848        }
1849        jj_consume_token(SEPARATOR);
1850        Expr();
1851      }
1852                                                  ListLiteral jjtn001 = new ListLiteral(JJTLISTLITERAL);
1853                                                  boolean jjtc001 = true;
1854                                                  jjtree.openNodeScope(jjtn001);
1855                                                  jjtreeOpenNodeScope(jjtn001);
1856      try {
1857        jj_consume_token(LIST_END);
1858      } finally {
1859                                                  if (jjtc001) {
1860                                                    jjtree.closeNodeScope(jjtn001, jjtree.nodeArity() > 1);
1861                                                    jjtreeCloseNodeScope(jjtn001);
1862                                                  }
1863      }
1864    } catch (Throwable jjte000) {
1865      if (jjtc000) {
1866        jjtree.clearNodeScope(jjtn000);
1867        jjtc000 = false;
1868      } else {
1869        jjtree.popNode();
1870      }
1871      if (jjte000 instanceof RuntimeException) {
1872        {if (true) throw (RuntimeException)jjte000;}
1873      }
1874      if (jjte000 instanceof ParseException) {
1875        {if (true) throw (ParseException)jjte000;}
1876      }
1877      {if (true) throw (Error)jjte000;}
1878    } finally {
1879      if (jjtc000) {
1880        jjtree.closeNodeScope(jjtn000, true);
1881        jjtreeCloseNodeScope(jjtn000);
1882      }
1883    }
1884  }
1885
1886  final private boolean jj_2_1(int xla) {
1887    jj_la = xla; jj_lastpos = jj_scanpos = token;
1888    boolean retval = !jj_3_1();
1889    jj_save(0, xla);
1890    return retval;
1891  }
1892
1893  final private boolean jj_2_2(int xla) {
1894    jj_la = xla; jj_lastpos = jj_scanpos = token;
1895    boolean retval = !jj_3_2();
1896    jj_save(1, xla);
1897    return retval;
1898  }
1899
1900  final private boolean jj_3R_21() {
1901    if (jj_scan_token(34)) return true;
1902    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1903    if (jj_3R_46()) return true;
1904    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1905    return false;
1906  }
1907
1908  final private boolean jj_3R_69() {
1909    if (jj_scan_token(SCOPE_LIMIT_NAME)) return true;
1910    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1911    return false;
1912  }
1913
1914  final private boolean jj_3R_53() {
1915    if (jj_3R_54()) return true;
1916    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1917    return false;
1918  }
1919
1920  final private boolean jj_3R_20() {
1921    if (jj_scan_token(33)) return true;
1922    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1923    if (jj_3R_46()) return true;
1924    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1925    return false;
1926  }
1927
1928  final private boolean jj_3R_19() {
1929    if (jj_scan_token(32)) return true;
1930    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1931    if (jj_3R_46()) return true;
1932    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1933    return false;
1934  }
1935
1936  final private boolean jj_3R_18() {
1937    if (jj_scan_token(31)) return true;
1938    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1939    if (jj_3R_46()) return true;
1940    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1941    return false;
1942  }
1943
1944  final private boolean jj_3R_17() {
1945    if (jj_scan_token(30)) return true;
1946    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1947    if (jj_3R_46()) return true;
1948    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1949    return false;
1950  }
1951
1952  final private boolean jj_3R_14() {
1953    Token xsp;
1954    xsp = jj_scanpos;
1955    if (jj_3R_16()) {
1956    jj_scanpos = xsp;
1957    if (jj_3R_17()) {
1958    jj_scanpos = xsp;
1959    if (jj_3R_18()) {
1960    jj_scanpos = xsp;
1961    if (jj_3R_19()) {
1962    jj_scanpos = xsp;
1963    if (jj_3R_20()) {
1964    jj_scanpos = xsp;
1965    if (jj_3R_21()) {
1966    jj_scanpos = xsp;
1967    if (jj_3R_22()) {
1968    jj_scanpos = xsp;
1969    if (jj_3R_23()) {
1970    jj_scanpos = xsp;
1971    if (jj_3R_24()) {
1972    jj_scanpos = xsp;
1973    if (jj_3R_25()) {
1974    jj_scanpos = xsp;
1975    if (jj_3R_26()) {
1976    jj_scanpos = xsp;
1977    if (jj_3R_27()) {
1978    jj_scanpos = xsp;
1979    if (jj_3R_28()) {
1980    jj_scanpos = xsp;
1981    if (jj_3R_29()) {
1982    jj_scanpos = xsp;
1983    if (jj_3R_30()) {
1984    jj_scanpos = xsp;
1985    if (jj_3R_31()) {
1986    jj_scanpos = xsp;
1987    if (jj_3R_32()) {
1988    jj_scanpos = xsp;
1989    if (jj_3R_33()) {
1990    jj_scanpos = xsp;
1991    if (jj_3R_34()) {
1992    jj_scanpos = xsp;
1993    if (jj_3R_35()) {
1994    jj_scanpos = xsp;
1995    if (jj_3R_36()) {
1996    jj_scanpos = xsp;
1997    if (jj_3R_37()) {
1998    jj_scanpos = xsp;
1999    if (jj_3R_38()) {
2000    jj_scanpos = xsp;
2001    if (jj_3R_39()) {
2002    jj_scanpos = xsp;
2003    if (jj_3R_40()) {
2004    jj_scanpos = xsp;
2005    if (jj_3R_41()) {
2006    jj_scanpos = xsp;
2007    if (jj_3R_42()) {
2008    jj_scanpos = xsp;
2009    if (jj_3R_43()) {
2010    jj_scanpos = xsp;
2011    if (jj_3R_44()) {
2012    jj_scanpos = xsp;
2013    if (jj_3R_45()) return true;
2014    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2015    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2016    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2017    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2018    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2019    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2020    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2021    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2022    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2023    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2024    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2025    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2026    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2027    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2028    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2029    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2030    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2031    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2032    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2033    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2034    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2035    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2036    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2037    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2038    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2039    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2040    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2041    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2042    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2043    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2044    return false;
2045  }
2046
2047  final private boolean jj_3R_16() {
2048    if (jj_scan_token(29)) return true;
2049    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2050    if (jj_3R_46()) return true;
2051    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2052    return false;
2053  }
2054
2055  final private boolean jj_3R_52() {
2056    if (jj_3R_53()) return true;
2057    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2058    return false;
2059  }
2060
2061  final private boolean jj_3R_15() {
2062    if (jj_scan_token(IDENTIFIER)) return true;
2063    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2064    return false;
2065  }
2066
2067  final private boolean jj_3_2() {
2068    if (jj_3R_15()) return true;
2069    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2070    return false;
2071  }
2072
2073  final private boolean jj_3R_64() {
2074    if (jj_3R_66()) return true;
2075    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2076    return false;
2077  }
2078
2079  final private boolean jj_3_1() {
2080    if (jj_3R_14()) return true;
2081    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2082    return false;
2083  }
2084
2085  final private boolean jj_3R_63() {
2086    if (jj_scan_token(FUNCTION_BEGIN)) return true;
2087    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2088    return false;
2089  }
2090
2091  final private boolean jj_3R_62() {
2092    if (jj_3R_65()) return true;
2093    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2094    return false;
2095  }
2096
2097  final private boolean jj_3R_61() {
2098    Token xsp;
2099    xsp = jj_scanpos;
2100    if (jj_3R_62()) {
2101    jj_scanpos = xsp;
2102    if (jj_3R_63()) {
2103    jj_scanpos = xsp;
2104    if (jj_3_1()) {
2105    jj_scanpos = xsp;
2106    if (jj_3R_64()) {
2107    jj_scanpos = xsp;
2108    if (jj_3_2()) return true;
2109    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2110    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2111    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2112    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2113    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2114    return false;
2115  }
2116
2117  final private boolean jj_3R_51() {
2118    if (jj_3R_52()) return true;
2119    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2120    return false;
2121  }
2122
2123  final private boolean jj_3R_66() {
2124    if (jj_3R_69()) return true;
2125    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2126    return false;
2127  }
2128
2129  final private boolean jj_3R_46() {
2130    if (jj_3R_47()) return true;
2131    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2132    return false;
2133  }
2134
2135  final private boolean jj_3R_50() {
2136    if (jj_3R_51()) return true;
2137    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2138    return false;
2139  }
2140
2141  final private boolean jj_3R_45() {
2142    if (jj_3R_15()) return true;
2143    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2144    if (jj_scan_token(SCOPE_LIMIT)) return true;
2145    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2146    return false;
2147  }
2148
2149  final private boolean jj_3R_44() {
2150    if (jj_scan_token(57)) return true;
2151    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2152    if (jj_3R_46()) return true;
2153    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2154    return false;
2155  }
2156
2157  final private boolean jj_3R_71() {
2158    if (jj_scan_token(LIST_BEGIN)) return true;
2159    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2160    return false;
2161  }
2162
2163  final private boolean jj_3R_49() {
2164    if (jj_3R_50()) return true;
2165    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2166    return false;
2167  }
2168
2169  final private boolean jj_3R_43() {
2170    if (jj_scan_token(56)) return true;
2171    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2172    if (jj_3R_46()) return true;
2173    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2174    return false;
2175  }
2176
2177  final private boolean jj_3R_60() {
2178    if (jj_3R_61()) return true;
2179    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2180    return false;
2181  }
2182
2183  final private boolean jj_3R_42() {
2184    if (jj_scan_token(55)) return true;
2185    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2186    if (jj_3R_46()) return true;
2187    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2188    return false;
2189  }
2190
2191  final private boolean jj_3R_41() {
2192    if (jj_scan_token(54)) return true;
2193    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2194    if (jj_3R_46()) return true;
2195    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2196    return false;
2197  }
2198
2199  final private boolean jj_3R_59() {
2200    if (jj_3R_60()) return true;
2201    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2202    return false;
2203  }
2204
2205  final private boolean jj_3R_40() {
2206    if (jj_scan_token(53)) return true;
2207    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2208    if (jj_3R_46()) return true;
2209    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2210    return false;
2211  }
2212
2213  final private boolean jj_3R_48() {
2214    if (jj_3R_49()) return true;
2215    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2216    return false;
2217  }
2218
2219  final private boolean jj_3R_39() {
2220    if (jj_scan_token(52)) return true;
2221    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2222    if (jj_scan_token(FUNCTION_END)) return true;
2223    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2224    return false;
2225  }
2226
2227  final private boolean jj_3R_38() {
2228    if (jj_scan_token(51)) return true;
2229    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2230    if (jj_3R_46()) return true;
2231    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2232    return false;
2233  }
2234
2235  final private boolean jj_3R_37() {
2236    if (jj_scan_token(50)) return true;
2237    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2238    if (jj_3R_46()) return true;
2239    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2240    return false;
2241  }
2242
2243  final private boolean jj_3R_74() {
2244    if (jj_scan_token(STRING_LITERAL)) return true;
2245    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2246    return false;
2247  }
2248
2249  final private boolean jj_3R_36() {
2250    if (jj_scan_token(49)) return true;
2251    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2252    if (jj_scan_token(FUNCTION_END)) return true;
2253    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2254    return false;
2255  }
2256
2257  final private boolean jj_3R_47() {
2258    if (jj_3R_48()) return true;
2259    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2260    return false;
2261  }
2262
2263  final private boolean jj_3R_35() {
2264    if (jj_scan_token(48)) return true;
2265    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2266    if (jj_scan_token(FUNCTION_END)) return true;
2267    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2268    return false;
2269  }
2270
2271  final private boolean jj_3R_58() {
2272    if (jj_3R_59()) return true;
2273    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2274    return false;
2275  }
2276
2277  final private boolean jj_3R_34() {
2278    if (jj_scan_token(47)) return true;
2279    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2280    if (jj_scan_token(FUNCTION_END)) return true;
2281    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2282    return false;
2283  }
2284
2285  final private boolean jj_3R_33() {
2286    if (jj_scan_token(46)) return true;
2287    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2288    if (jj_3R_46()) return true;
2289    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2290    return false;
2291  }
2292
2293  final private boolean jj_3R_73() {
2294    if (jj_scan_token(NUMBER_LITERAL)) return true;
2295    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2296    return false;
2297  }
2298
2299  final private boolean jj_3R_32() {
2300    if (jj_scan_token(45)) return true;
2301    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2302    if (jj_3R_46()) return true;
2303    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2304    return false;
2305  }
2306
2307  final private boolean jj_3R_57() {
2308    if (jj_3R_58()) return true;
2309    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2310    return false;
2311  }
2312
2313  final private boolean jj_3R_31() {
2314    if (jj_scan_token(44)) return true;
2315    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2316    if (jj_3R_46()) return true;
2317    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2318    return false;
2319  }
2320
2321  final private boolean jj_3R_30() {
2322    if (jj_scan_token(43)) return true;
2323    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2324    if (jj_3R_46()) return true;
2325    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2326    return false;
2327  }
2328
2329  final private boolean jj_3R_72() {
2330    if (jj_scan_token(BOOLEAN_LITERAL)) return true;
2331    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2332    return false;
2333  }
2334
2335  final private boolean jj_3R_70() {
2336    Token xsp;
2337    xsp = jj_scanpos;
2338    if (jj_3R_72()) {
2339    jj_scanpos = xsp;
2340    if (jj_3R_73()) {
2341    jj_scanpos = xsp;
2342    if (jj_3R_74()) return true;
2343    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2344    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2345    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2346    return false;
2347  }
2348
2349  final private boolean jj_3R_29() {
2350    if (jj_scan_token(42)) return true;
2351    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2352    if (jj_3R_46()) return true;
2353    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2354    return false;
2355  }
2356
2357  final private boolean jj_3R_56() {
2358    if (jj_scan_token(MINUS)) return true;
2359    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2360    return false;
2361  }
2362
2363  final private boolean jj_3R_28() {
2364    if (jj_scan_token(41)) return true;
2365    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2366    if (jj_3R_46()) return true;
2367    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2368    return false;
2369  }
2370
2371  final private boolean jj_3R_55() {
2372    if (jj_3R_57()) return true;
2373    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2374    return false;
2375  }
2376
2377  final private boolean jj_3R_54() {
2378    Token xsp;
2379    xsp = jj_scanpos;
2380    if (jj_3R_55()) {
2381    jj_scanpos = xsp;
2382    if (jj_3R_56()) return true;
2383    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2384    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2385    return false;
2386  }
2387
2388  final private boolean jj_3R_27() {
2389    if (jj_scan_token(40)) return true;
2390    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2391    if (jj_3R_46()) return true;
2392    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2393    return false;
2394  }
2395
2396  final private boolean jj_3R_26() {
2397    if (jj_scan_token(39)) return true;
2398    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2399    if (jj_3R_46()) return true;
2400    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2401    return false;
2402  }
2403
2404  final private boolean jj_3R_68() {
2405    if (jj_3R_71()) return true;
2406    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2407    return false;
2408  }
2409
2410  final private boolean jj_3R_25() {
2411    if (jj_scan_token(38)) return true;
2412    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2413    if (jj_3R_46()) return true;
2414    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2415    return false;
2416  }
2417
2418  final private boolean jj_3R_67() {
2419    if (jj_3R_70()) return true;
2420    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2421    return false;
2422  }
2423
2424  final private boolean jj_3R_65() {
2425    Token xsp;
2426    xsp = jj_scanpos;
2427    if (jj_3R_67()) {
2428    jj_scanpos = xsp;
2429    if (jj_3R_68()) return true;
2430    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2431    } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2432    return false;
2433  }
2434
2435  final private boolean jj_3R_24() {
2436    if (jj_scan_token(37)) return true;
2437    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2438    if (jj_3R_46()) return true;
2439    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2440    return false;
2441  }
2442
2443  final private boolean jj_3R_23() {
2444    if (jj_scan_token(36)) return true;
2445    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2446    if (jj_3R_46()) return true;
2447    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2448    return false;
2449  }
2450
2451  final private boolean jj_3R_22() {
2452    if (jj_scan_token(35)) return true;
2453    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2454    if (jj_3R_46()) return true;
2455    if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2456    return false;
2457  }
2458
2459  public ParserTokenManager token_source;
2460  ASCII_CharStream jj_input_stream;
2461  public Token token, jj_nt;
2462  private int jj_ntk;
2463  private Token jj_scanpos, jj_lastpos;
2464  private int jj_la;
2465  public boolean lookingAhead = false;
2466  private boolean jj_semLA;
2467  private int jj_gen;
2468  final private int[] jj_la1 = new int[27];
2469  final private int[] jj_la1_0 = {0x200000,0x100000,0x1800,0x1800,0x1e000,0x1e000,0x600,0x600,0x1c0,0x1c0,0xe2400400,0x40000,0x20000,0x8000000,0x2400000,0x0,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0x1000000,0xe2400400,0xe0000000,0x400000,0x0,0x1000000,};
2470  final private int[] jj_la1_1 = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffff,0x0,0x0,0x0,0x58000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0xdfffffff,0x83ffffff,0x58000000,0x58000000,0x0,};
2471  final private int[] jj_la1_2 = {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,};
2472  final private JJCalls[] jj_2_rtns = new JJCalls[2];
2473  private boolean jj_rescan = false;
2474  private int jj_gc = 0;
2475
2476  public Parser(java.io.InputStream stream) {
2477    jj_input_stream = new ASCII_CharStream(stream, 1, 1);
2478    token_source = new ParserTokenManager(jj_input_stream);
2479    token = new Token();
2480    jj_ntk = -1;
2481    jj_gen = 0;
2482    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2483    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2484  }
2485
2486  public void ReInit(java.io.InputStream stream) {
2487    jj_input_stream.ReInit(stream, 1, 1);
2488    token_source.ReInit(jj_input_stream);
2489    token = new Token();
2490    jj_ntk = -1;
2491    jjtree.reset();
2492    jj_gen = 0;
2493    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2494    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2495  }
2496
2497  public Parser(java.io.Reader stream) {
2498    jj_input_stream = new ASCII_CharStream(stream, 1, 1);
2499    token_source = new ParserTokenManager(jj_input_stream);
2500    token = new Token();
2501    jj_ntk = -1;
2502    jj_gen = 0;
2503    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2504    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2505  }
2506
2507  public void ReInit(java.io.Reader stream) {
2508    jj_input_stream.ReInit(stream, 1, 1);
2509    token_source.ReInit(jj_input_stream);
2510    token = new Token();
2511    jj_ntk = -1;
2512    jjtree.reset();
2513    jj_gen = 0;
2514    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2515    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2516  }
2517
2518  public Parser(ParserTokenManager tm) {
2519    token_source = tm;
2520    token = new Token();
2521    jj_ntk = -1;
2522    jj_gen = 0;
2523    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2524    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2525  }
2526
2527  public void ReInit(ParserTokenManager tm) {
2528    token_source = tm;
2529    token = new Token();
2530    jj_ntk = -1;
2531    jjtree.reset();
2532    jj_gen = 0;
2533    for (int i = 0; i < 27; i++) jj_la1[i] = -1;
2534    for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
2535  }
2536
2537  final private Token jj_consume_token(int kind) throws ParseException {
2538    Token oldToken;
2539    if ((oldToken = token).next != null) token = token.next;
2540    else token = token.next = token_source.getNextToken();
2541    jj_ntk = -1;
2542    if (token.kind == kind) {
2543      jj_gen++;
2544      if (++jj_gc > 100) {
2545        jj_gc = 0;
2546        for (int i = 0; i < jj_2_rtns.length; i++) {
2547          JJCalls c = jj_2_rtns[i];
2548          while (c != null) {
2549            if (c.gen < jj_gen) c.first = null;
2550            c = c.next;
2551          }
2552        }
2553      }
2554      return token;
2555    }
2556    token = oldToken;
2557    jj_kind = kind;
2558    throw generateParseException();
2559  }
2560
2561  final private boolean jj_scan_token(int kind) {
2562    if (jj_scanpos == jj_lastpos) {
2563      jj_la--;
2564      if (jj_scanpos.next == null) {
2565        jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
2566      } else {
2567        jj_lastpos = jj_scanpos = jj_scanpos.next;
2568      }
2569    } else {
2570      jj_scanpos = jj_scanpos.next;
2571    }
2572    if (jj_rescan) {
2573      int i = 0; Token tok = token;
2574      while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
2575      if (tok != null) jj_add_error_token(kind, i);
2576    }
2577    return (jj_scanpos.kind != kind);
2578  }
2579
2580  final public Token getNextToken() {
2581    if (token.next != null) token = token.next;
2582    else token = token.next = token_source.getNextToken();
2583    jj_ntk = -1;
2584    jj_gen++;
2585    return token;
2586  }
2587
2588  final public Token getToken(int index) {
2589    Token t = lookingAhead ? jj_scanpos : token;
2590    for (int i = 0; i < index; i++) {
2591      if (t.next != null) t = t.next;
2592      else t = t.next = token_source.getNextToken();
2593    }
2594    return t;
2595  }
2596
2597  final private int jj_ntk() {
2598    if ((jj_nt=token.next) == null)
2599      return (jj_ntk = (token.next=token_source.getNextToken()).kind);
2600    else
2601      return (jj_ntk = jj_nt.kind);
2602  }
2603
2604  private java.util.Vector jj_expentries = new java.util.Vector();
2605  private int[] jj_expentry;
2606  private int jj_kind = -1;
2607  private int[] jj_lasttokens = new int[100];
2608  private int jj_endpos;
2609
2610  private void jj_add_error_token(int kind, int pos) {
2611    if (pos >= 100) return;
2612    if (pos == jj_endpos + 1) {
2613      jj_lasttokens[jj_endpos++] = kind;
2614    } else if (jj_endpos != 0) {
2615      jj_expentry = new int[jj_endpos];
2616      for (int i = 0; i < jj_endpos; i++) {
2617        jj_expentry[i] = jj_lasttokens[i];
2618      }
2619      boolean exists = false;
2620      for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
2621        int[] oldentry = (int[])(enum.nextElement());
2622        if (oldentry.length == jj_expentry.length) {
2623          exists = true;
2624          for (int i = 0; i < jj_expentry.length; i++) {
2625            if (oldentry[i] != jj_expentry[i]) {
2626              exists = false;
2627              break;
2628            }
2629          }
2630          if (exists) break;
2631        }
2632      }
2633      if (!exists) jj_expentries.addElement(jj_expentry);
2634      if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
2635    }
2636  }
2637
2638  final public ParseException generateParseException() {
2639    jj_expentries.removeAllElements();
2640    boolean[] la1tokens = new boolean[65];
2641    for (int i = 0; i < 65; i++) {
2642      la1tokens[i] = false;
2643    }
2644    if (jj_kind >= 0) {
2645      la1tokens[jj_kind] = true;
2646      jj_kind = -1;
2647    }
2648    for (int i = 0; i < 27; i++) {
2649      if (jj_la1[i] == jj_gen) {
2650        for (int j = 0; j < 32; j++) {
2651          if ((jj_la1_0[i] & (1<<j)) != 0) {
2652            la1tokens[j] = true;
2653          }
2654          if ((jj_la1_1[i] & (1<<j)) != 0) {
2655            la1tokens[32+j] = true;
2656          }
2657          if ((jj_la1_2[i] & (1<<j)) != 0) {
2658            la1tokens[64+j] = true;
2659          }
2660        }
2661      }
2662    }
2663    for (int i = 0; i < 65; i++) {
2664      if (la1tokens[i]) {
2665        jj_expentry = new int[1];
2666        jj_expentry[0] = i;
2667        jj_expentries.addElement(jj_expentry);
2668      }
2669    }
2670    jj_endpos = 0;
2671    jj_rescan_token();
2672    jj_add_error_token(0, 0);
2673    int[][] exptokseq = new int[jj_expentries.size()][];
2674    for (int i = 0; i < jj_expentries.size(); i++) {
2675      exptokseq[i] = (int[])jj_expentries.elementAt(i);
2676    }
2677    return new ParseException(token, exptokseq, tokenImage);
2678  }
2679
2680  final public void enable_tracing() {
2681  }
2682
2683  final public void disable_tracing() {
2684  }
2685
2686  final private void jj_rescan_token() {
2687    jj_rescan = true;
2688    for (int i = 0; i < 2; i++) {
2689      JJCalls p = jj_2_rtns[i];
2690      do {
2691        if (p.gen > jj_gen) {
2692          jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
2693          switch (i) {
2694            case 0: jj_3_1(); break;
2695            case 1: jj_3_2(); break;
2696          }
2697        }
2698        p = p.next;
2699      } while (p != null);
2700    }
2701    jj_rescan = false;
2702  }
2703
2704  final private void jj_save(int index, int xla) {
2705    JJCalls p = jj_2_rtns[index];
2706    while (p.gen > jj_gen) {
2707      if (p.next == null) { p = p.next = new JJCalls(); break; }
2708      p = p.next;
2709    }
2710    p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
2711  }
2712
2713  static final class JJCalls {
2714    int gen;
2715    Token first;
2716    int arg;
2717    JJCalls next;
2718  }
2719
2720}
2721
Popular Tags