001    /* Generated By:JavaCC: Do not edit this line. ELParser.java */
002    package org.apache.commons.el.parser;
003    
004    import java.util.ArrayList;
005    import java.util.List;
006    
007    import org.apache.commons.el.AndOperator;
008    import org.apache.commons.el.ArraySuffix;
009    import org.apache.commons.el.BinaryOperator;
010    import org.apache.commons.el.BinaryOperatorExpression;
011    import org.apache.commons.el.BooleanLiteral;
012    import org.apache.commons.el.ComplexValue;
013    import org.apache.commons.el.ConditionalExpression;
014    import org.apache.commons.el.DivideOperator;
015    import org.apache.commons.el.EmptyOperator;
016    import org.apache.commons.el.EqualsOperator;
017    import org.apache.commons.el.Expression;
018    import org.apache.commons.el.ExpressionString;
019    import org.apache.commons.el.FloatingPointLiteral;
020    import org.apache.commons.el.FunctionInvocation;
021    import org.apache.commons.el.GreaterThanOperator;
022    import org.apache.commons.el.GreaterThanOrEqualsOperator;
023    import org.apache.commons.el.IntegerLiteral;
024    import org.apache.commons.el.LessThanOperator;
025    import org.apache.commons.el.LessThanOrEqualsOperator;
026    import org.apache.commons.el.Literal;
027    import org.apache.commons.el.MinusOperator;
028    import org.apache.commons.el.ModulusOperator;
029    import org.apache.commons.el.MultiplyOperator;
030    import org.apache.commons.el.NamedValue;
031    import org.apache.commons.el.NotEqualsOperator;
032    import org.apache.commons.el.NotOperator;
033    import org.apache.commons.el.NullLiteral;
034    import org.apache.commons.el.OrOperator;
035    import org.apache.commons.el.PlusOperator;
036    import org.apache.commons.el.PropertySuffix;
037    import org.apache.commons.el.StringLiteral;
038    import org.apache.commons.el.UnaryMinusOperator;
039    import org.apache.commons.el.UnaryOperator;
040    import org.apache.commons.el.UnaryOperatorExpression;
041    import org.apache.commons.el.ValueSuffix;
042    
043    /**
044     * Generated EL parser.
045     * 
046     * @author Nathan Abramson
047     * @author Shawn Bayern
048     */
049    
050    public class ELParser implements ELParserConstants {
051    
052      public static void main(String args[])
053           throws ParseException
054      {
055        ELParser parser = new ELParser (System.in);
056        parser.ExpressionString ();
057      }
058    
059    /*****************************************
060     * GRAMMAR PRODUCTIONS *
061     *****************************************/
062    
063    /**
064     *
065     * Returns a String if the expression string is a single String, an
066     * Expression if the expression string is a single Expression, an
067     * ExpressionString if it's a mixture of both.
068     **/
069      final public Object ExpressionString() throws ParseException {
070      Object ret = "";
071      List elems = null;
072      Object elem;
073        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
074        case NON_EXPRESSION_TEXT:
075          ret = AttrValueString();
076          break;
077        case START_EXPRESSION:
078          ret = AttrValueExpression();
079          break;
080        default:
081          jj_la1[0] = jj_gen;
082          jj_consume_token(-1);
083          throw new ParseException();
084        }
085        label_1:
086        while (true) {
087          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
088          case NON_EXPRESSION_TEXT:
089          case START_EXPRESSION:
090            ;
091            break;
092          default:
093            jj_la1[1] = jj_gen;
094            break label_1;
095          }
096          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
097          case NON_EXPRESSION_TEXT:
098            elem = AttrValueString();
099            break;
100          case START_EXPRESSION:
101            elem = AttrValueExpression();
102            break;
103          default:
104            jj_la1[2] = jj_gen;
105            jj_consume_token(-1);
106            throw new ParseException();
107          }
108           if (elems == null) {
109             elems = new ArrayList ();
110             elems.add (ret);
111           }
112           elems.add (elem);
113        }
114        if (elems != null) {
115          ret = new ExpressionString (elems.toArray ());
116        }
117        {if (true) return ret;}
118        throw new Error("Missing return statement in function");
119      }
120    
121      final public String AttrValueString() throws ParseException {
122      Token t;
123        t = jj_consume_token(NON_EXPRESSION_TEXT);
124        {if (true) return t.image;}
125        throw new Error("Missing return statement in function");
126      }
127    
128      final public Expression AttrValueExpression() throws ParseException {
129      Expression exp;
130        jj_consume_token(START_EXPRESSION);
131        exp = Expression();
132        jj_consume_token(END_EXPRESSION);
133         {if (true) return exp;}
134        throw new Error("Missing return statement in function");
135      }
136    
137      final public Expression Expression() throws ParseException {
138      Expression ret;
139        if (jj_2_1(2147483647)) {
140          ret = ConditionalExpression();
141        } else {
142          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
143          case INTEGER_LITERAL:
144          case FLOATING_POINT_LITERAL:
145          case STRING_LITERAL:
146          case TRUE:
147          case FALSE:
148          case NULL:
149          case LPAREN:
150          case MINUS:
151          case NOT1:
152          case NOT2:
153          case EMPTY:
154          case IDENTIFIER:
155            ret = OrExpression();
156            break;
157          default:
158            jj_la1[3] = jj_gen;
159            jj_consume_token(-1);
160            throw new ParseException();
161          }
162        }
163        {if (true) return ret;}
164        throw new Error("Missing return statement in function");
165      }
166    
167      final public Expression OrExpression() throws ParseException {
168      Expression startExpression;
169      BinaryOperator operator;
170      Expression expression;
171      List operators = null;
172      List expressions = null;
173        startExpression = AndExpression();
174        label_2:
175        while (true) {
176          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
177          case OR1:
178          case OR2:
179            ;
180            break;
181          default:
182            jj_la1[4] = jj_gen;
183            break label_2;
184          }
185          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
186          case OR1:
187            jj_consume_token(OR1);
188            break;
189          case OR2:
190            jj_consume_token(OR2);
191            break;
192          default:
193            jj_la1[5] = jj_gen;
194            jj_consume_token(-1);
195            throw new ParseException();
196          }
197                            operator = OrOperator.SINGLETON;
198          expression = AndExpression();
199            if (operators == null) {
200              operators = new ArrayList ();
201              expressions = new ArrayList ();
202            }
203            operators.add (operator);
204            expressions.add (expression);
205        }
206        if (operators != null) {
207          {if (true) return new BinaryOperatorExpression (startExpression,
208                                               operators,
209                                               expressions);}
210        }
211        else {
212          {if (true) return startExpression;}
213        }
214        throw new Error("Missing return statement in function");
215      }
216    
217      final public Expression AndExpression() throws ParseException {
218      Expression startExpression;
219      BinaryOperator operator;
220      Expression expression;
221      List operators = null;
222      List expressions = null;
223        startExpression = EqualityExpression();
224        label_3:
225        while (true) {
226          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
227          case AND1:
228          case AND2:
229            ;
230            break;
231          default:
232            jj_la1[6] = jj_gen;
233            break label_3;
234          }
235          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
236          case AND1:
237            jj_consume_token(AND1);
238            break;
239          case AND2:
240            jj_consume_token(AND2);
241            break;
242          default:
243            jj_la1[7] = jj_gen;
244            jj_consume_token(-1);
245            throw new ParseException();
246          }
247                              operator = AndOperator.SINGLETON;
248          expression = EqualityExpression();
249            if (operators == null) {
250              operators = new ArrayList ();
251              expressions = new ArrayList ();
252            }
253            operators.add (operator);
254            expressions.add (expression);
255        }
256        if (operators != null) {
257          {if (true) return new BinaryOperatorExpression (startExpression,
258                                               operators,
259                                               expressions);}
260        }
261        else {
262          {if (true) return startExpression;}
263        }
264        throw new Error("Missing return statement in function");
265      }
266    
267      final public Expression EqualityExpression() throws ParseException {
268      Expression startExpression;
269      BinaryOperator operator;
270      Expression expression;
271      List operators = null;
272      List expressions = null;
273        startExpression = RelationalExpression();
274        label_4:
275        while (true) {
276          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
277          case EQ1:
278          case EQ2:
279          case NE1:
280          case NE2:
281            ;
282            break;
283          default:
284            jj_la1[8] = jj_gen;
285            break label_4;
286          }
287          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
288          case EQ1:
289          case EQ2:
290            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
291            case EQ1:
292              jj_consume_token(EQ1);
293              break;
294            case EQ2:
295              jj_consume_token(EQ2);
296              break;
297            default:
298              jj_la1[9] = jj_gen;
299              jj_consume_token(-1);
300              throw new ParseException();
301            }
302                            operator = EqualsOperator.SINGLETON;
303            break;
304          case NE1:
305          case NE2:
306            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
307            case NE1:
308              jj_consume_token(NE1);
309              break;
310            case NE2:
311              jj_consume_token(NE2);
312              break;
313            default:
314              jj_la1[10] = jj_gen;
315              jj_consume_token(-1);
316              throw new ParseException();
317            }
318                              operator = NotEqualsOperator.SINGLETON;
319            break;
320          default:
321            jj_la1[11] = jj_gen;
322            jj_consume_token(-1);
323            throw new ParseException();
324          }
325          expression = RelationalExpression();
326            if (operators == null) {
327              operators = new ArrayList ();
328              expressions = new ArrayList ();
329            }
330            operators.add (operator);
331            expressions.add (expression);
332        }
333        if (operators != null) {
334          {if (true) return new BinaryOperatorExpression (startExpression,
335                                               operators,
336                                               expressions);}
337        }
338        else {
339          {if (true) return startExpression;}
340        }
341        throw new Error("Missing return statement in function");
342      }
343    
344      final public Expression RelationalExpression() throws ParseException {
345      Expression startExpression;
346      BinaryOperator operator;
347      Expression expression;
348      List operators = null;
349      List expressions = null;
350        startExpression = AddExpression();
351        label_5:
352        while (true) {
353          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
354          case GT1:
355          case GT2:
356          case LT1:
357          case LT2:
358          case LE1:
359          case LE2:
360          case GE1:
361          case GE2:
362            ;
363            break;
364          default:
365            jj_la1[12] = jj_gen;
366            break label_5;
367          }
368          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
369          case LT1:
370          case LT2:
371            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
372            case LT1:
373              jj_consume_token(LT1);
374              break;
375            case LT2:
376              jj_consume_token(LT2);
377              break;
378            default:
379              jj_la1[13] = jj_gen;
380              jj_consume_token(-1);
381              throw new ParseException();
382            }
383                            operator = LessThanOperator.SINGLETON;
384            break;
385          case GT1:
386          case GT2:
387            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
388            case GT1:
389              jj_consume_token(GT1);
390              break;
391            case GT2:
392              jj_consume_token(GT2);
393              break;
394            default:
395              jj_la1[14] = jj_gen;
396              jj_consume_token(-1);
397              throw new ParseException();
398            }
399                              operator = GreaterThanOperator.SINGLETON;
400            break;
401          case GE1:
402          case GE2:
403            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
404            case GE1:
405              jj_consume_token(GE1);
406              break;
407            case GE2:
408              jj_consume_token(GE2);
409              break;
410            default:
411              jj_la1[15] = jj_gen;
412              jj_consume_token(-1);
413              throw new ParseException();
414            }
415                              operator = GreaterThanOrEqualsOperator.SINGLETON;
416            break;
417          case LE1:
418          case LE2:
419            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
420            case LE1:
421              jj_consume_token(LE1);
422              break;
423            case LE2:
424              jj_consume_token(LE2);
425              break;
426            default:
427              jj_la1[16] = jj_gen;
428              jj_consume_token(-1);
429              throw new ParseException();
430            }
431                              operator = LessThanOrEqualsOperator.SINGLETON;
432            break;
433          default:
434            jj_la1[17] = jj_gen;
435            jj_consume_token(-1);
436            throw new ParseException();
437          }
438          expression = AddExpression();
439            if (operators == null) {
440              operators = new ArrayList ();
441              expressions = new ArrayList ();
442            }
443            operators.add (operator);
444            expressions.add (expression);
445        }
446        if (operators != null) {
447          {if (true) return new BinaryOperatorExpression (startExpression,
448                                               operators,
449                                               expressions);}
450        }
451        else {
452          {if (true) return startExpression;}
453        }
454        throw new Error("Missing return statement in function");
455      }
456    
457      final public Expression AddExpression() throws ParseException {
458      Expression startExpression;
459      BinaryOperator operator;
460      Expression expression;
461      List operators = null;
462      List expressions = null;
463        startExpression = MultiplyExpression();
464        label_6:
465        while (true) {
466          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
467          case PLUS:
468          case MINUS:
469            ;
470            break;
471          default:
472            jj_la1[18] = jj_gen;
473            break label_6;
474          }
475          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
476          case PLUS:
477            jj_consume_token(PLUS);
478                   operator = PlusOperator.SINGLETON;
479            break;
480          case MINUS:
481            jj_consume_token(MINUS);
482                      operator = MinusOperator.SINGLETON;
483            break;
484          default:
485            jj_la1[19] = jj_gen;
486            jj_consume_token(-1);
487            throw new ParseException();
488          }
489          expression = MultiplyExpression();
490            if (operators == null) {
491              operators = new ArrayList ();
492              expressions = new ArrayList ();
493            }
494            operators.add (operator);
495            expressions.add (expression);
496        }
497        if (operators != null) {
498          {if (true) return new BinaryOperatorExpression (startExpression,
499                                               operators,
500                                               expressions);}
501        }
502        else {
503          {if (true) return startExpression;}
504        }
505        throw new Error("Missing return statement in function");
506      }
507    
508      final public Expression MultiplyExpression() throws ParseException {
509      Expression startExpression;
510      BinaryOperator operator;
511      Expression expression;
512      List operators = null;
513      List expressions = null;
514        startExpression = UnaryExpression();
515        label_7:
516        while (true) {
517          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
518          case MULTIPLY:
519          case DIVIDE1:
520          case DIVIDE2:
521          case MODULUS1:
522          case MODULUS2:
523            ;
524            break;
525          default:
526            jj_la1[20] = jj_gen;
527            break label_7;
528          }
529          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
530          case MULTIPLY:
531            jj_consume_token(MULTIPLY);
532                       operator = MultiplyOperator.SINGLETON;
533            break;
534          case DIVIDE1:
535          case DIVIDE2:
536            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
537            case DIVIDE1:
538              jj_consume_token(DIVIDE1);
539              break;
540            case DIVIDE2:
541              jj_consume_token(DIVIDE2);
542              break;
543            default:
544              jj_la1[21] = jj_gen;
545              jj_consume_token(-1);
546              throw new ParseException();
547            }
548                                      operator = DivideOperator.SINGLETON;
549            break;
550          case MODULUS1:
551          case MODULUS2:
552            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
553            case MODULUS1:
554              jj_consume_token(MODULUS1);
555              break;
556            case MODULUS2:
557              jj_consume_token(MODULUS2);
558              break;
559            default:
560              jj_la1[22] = jj_gen;
561              jj_consume_token(-1);
562              throw new ParseException();
563            }
564                                        operator = ModulusOperator.SINGLETON;
565            break;
566          default:
567            jj_la1[23] = jj_gen;
568            jj_consume_token(-1);
569            throw new ParseException();
570          }
571          expression = UnaryExpression();
572            if (operators == null) {
573              operators = new ArrayList ();
574              expressions = new ArrayList ();
575            }
576            operators.add (operator);
577            expressions.add (expression);
578        }
579        if (operators != null) {
580          {if (true) return new BinaryOperatorExpression (startExpression,
581                                               operators,
582                                               expressions);}
583        }
584        else {
585          {if (true) return startExpression;}
586        }
587        throw new Error("Missing return statement in function");
588      }
589    
590      final public Expression ConditionalExpression() throws ParseException {
591     Expression condition, trueBranch, falseBranch;
592        condition = OrExpression();
593        jj_consume_token(COND);
594        trueBranch = Expression();
595        jj_consume_token(COLON);
596        falseBranch = Expression();
597      {if (true) return new ConditionalExpression(condition, trueBranch, falseBranch);}
598        throw new Error("Missing return statement in function");
599      }
600    
601      final public Expression UnaryExpression() throws ParseException {
602      Expression expression;
603      UnaryOperator singleOperator = null;
604      UnaryOperator operator;
605      List operators = null;
606        label_8:
607        while (true) {
608          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
609          case MINUS:
610          case NOT1:
611          case NOT2:
612          case EMPTY:
613            ;
614            break;
615          default:
616            jj_la1[24] = jj_gen;
617            break label_8;
618          }
619          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
620          case NOT1:
621          case NOT2:
622            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
623            case NOT1:
624              jj_consume_token(NOT1);
625              break;
626            case NOT2:
627              jj_consume_token(NOT2);
628              break;
629            default:
630              jj_la1[25] = jj_gen;
631              jj_consume_token(-1);
632              throw new ParseException();
633            }
634                            operator = NotOperator.SINGLETON;
635            break;
636          case MINUS:
637            jj_consume_token(MINUS);
638                    operator = UnaryMinusOperator.SINGLETON;
639            break;
640          case EMPTY:
641            jj_consume_token(EMPTY);
642                    operator = EmptyOperator.SINGLETON;
643            break;
644          default:
645            jj_la1[26] = jj_gen;
646            jj_consume_token(-1);
647            throw new ParseException();
648          }
649         if (singleOperator == null) {
650          singleOperator = operator;
651         }
652         else if (operators == null) {
653          operators = new ArrayList ();
654          operators.add (singleOperator);
655          operators.add (operator);
656         }
657         else {
658          operators.add (operator);
659         }
660        }
661        expression = Value();
662        if (operators != null) {
663          {if (true) return new UnaryOperatorExpression (null, operators, expression);}
664        }
665        else if (singleOperator != null) {
666          {if (true) return new UnaryOperatorExpression (singleOperator, null, expression);}
667        }
668        else {
669          {if (true) return expression;}
670        }
671        throw new Error("Missing return statement in function");
672      }
673    
674      final public Expression Value() throws ParseException {
675      Expression prefix;
676      ValueSuffix suffix;
677      List suffixes = null;
678        prefix = ValuePrefix();
679        label_9:
680        while (true) {
681          switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
682          case DOT:
683          case LBRACKET:
684            ;
685            break;
686          default:
687            jj_la1[27] = jj_gen;
688            break label_9;
689          }
690          suffix = ValueSuffix();
691            if (suffixes == null) {
692              suffixes = new ArrayList ();
693            }
694            suffixes.add (suffix);
695        }
696        if (suffixes == null) {
697          {if (true) return prefix;}
698        }
699        else {
700          {if (true) return new ComplexValue (prefix, suffixes);}
701        }
702        throw new Error("Missing return statement in function");
703      }
704    
705    /**
706     * This is an element that can start a value
707     **/
708      final public Expression ValuePrefix() throws ParseException {
709      Expression ret;
710        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
711        case INTEGER_LITERAL:
712        case FLOATING_POINT_LITERAL:
713        case STRING_LITERAL:
714        case TRUE:
715        case FALSE:
716        case NULL:
717          ret = Literal();
718          break;
719        case LPAREN:
720          jj_consume_token(LPAREN);
721          ret = Expression();
722          jj_consume_token(RPAREN);
723          break;
724        default:
725          jj_la1[28] = jj_gen;
726          if (jj_2_2(2147483647)) {
727            ret = FunctionInvocation();
728          } else {
729            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
730            case IDENTIFIER:
731              ret = NamedValue();
732              break;
733            default:
734              jj_la1[29] = jj_gen;
735              jj_consume_token(-1);
736              throw new ParseException();
737            }
738          }
739        }
740          {if (true) return ret;}
741        throw new Error("Missing return statement in function");
742      }
743    
744      final public NamedValue NamedValue() throws ParseException {
745      Token t;
746        t = jj_consume_token(IDENTIFIER);
747                         {if (true) return new NamedValue (t.image);}
748        throw new Error("Missing return statement in function");
749      }
750    
751      final public FunctionInvocation FunctionInvocation() throws ParseException {
752      String qualifiedName;
753      List argumentList = new ArrayList();
754      Expression exp;
755        qualifiedName = QualifiedName();
756        jj_consume_token(LPAREN);
757        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
758        case INTEGER_LITERAL:
759        case FLOATING_POINT_LITERAL:
760        case STRING_LITERAL:
761        case TRUE:
762        case FALSE:
763        case NULL:
764        case LPAREN:
765        case MINUS:
766        case NOT1:
767        case NOT2:
768        case EMPTY:
769        case IDENTIFIER:
770          exp = Expression();
771              argumentList.add(exp);
772          label_10:
773          while (true) {
774            switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
775            case COMMA:
776              ;
777              break;
778            default:
779              jj_la1[30] = jj_gen;
780              break label_10;
781            }
782            jj_consume_token(COMMA);
783            exp = Expression();
784              argumentList.add(exp);
785          }
786          break;
787        default:
788          jj_la1[31] = jj_gen;
789          ;
790        }
791        jj_consume_token(RPAREN);
792        {if (true) return new FunctionInvocation(qualifiedName, argumentList);}
793        throw new Error("Missing return statement in function");
794      }
795    
796      final public ValueSuffix ValueSuffix() throws ParseException {
797      ValueSuffix suffix;
798        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
799        case DOT:
800          suffix = PropertySuffix();
801          break;
802        case LBRACKET:
803          suffix = ArraySuffix();
804          break;
805        default:
806          jj_la1[32] = jj_gen;
807          jj_consume_token(-1);
808          throw new ParseException();
809        }
810          {if (true) return suffix;}
811        throw new Error("Missing return statement in function");
812      }
813    
814      final public PropertySuffix PropertySuffix() throws ParseException {
815      Token t;
816      String property;
817        jj_consume_token(DOT);
818        property = Identifier();
819          {if (true) return new PropertySuffix (property);}
820        throw new Error("Missing return statement in function");
821      }
822    
823      final public ArraySuffix ArraySuffix() throws ParseException {
824      Expression index;
825        jj_consume_token(LBRACKET);
826        index = Expression();
827        jj_consume_token(RBRACKET);
828         {if (true) return new ArraySuffix (index);}
829        throw new Error("Missing return statement in function");
830      }
831    
832      final public Literal Literal() throws ParseException {
833      Literal ret;
834        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
835        case TRUE:
836        case FALSE:
837          ret = BooleanLiteral();
838          break;
839        case INTEGER_LITERAL:
840          ret = IntegerLiteral();
841          break;
842        case FLOATING_POINT_LITERAL:
843          ret = FloatingPointLiteral();
844          break;
845        case STRING_LITERAL:
846          ret = StringLiteral();
847          break;
848        case NULL:
849          ret = NullLiteral();
850          break;
851        default:
852          jj_la1[33] = jj_gen;
853          jj_consume_token(-1);
854          throw new ParseException();
855        }
856          {if (true) return ret;}
857        throw new Error("Missing return statement in function");
858      }
859    
860      final public BooleanLiteral BooleanLiteral() throws ParseException {
861        switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
862        case TRUE:
863          jj_consume_token(TRUE);
864               {if (true) return BooleanLiteral.TRUE;}
865          break;
866        case FALSE:
867          jj_consume_token(FALSE);
868                  {if (true) return BooleanLiteral.FALSE;}
869          break;
870        default:
871          jj_la1[34] = jj_gen;
872          jj_consume_token(-1);
873          throw new ParseException();
874        }
875        throw new Error("Missing return statement in function");
876      }
877    
878      final public StringLiteral StringLiteral() throws ParseException {
879      Token t;
880        t = jj_consume_token(STRING_LITERAL);
881        {if (true) return StringLiteral.fromToken (t.image);}
882        throw new Error("Missing return statement in function");
883      }
884    
885      final public IntegerLiteral IntegerLiteral() throws ParseException {
886      Token t;
887        t = jj_consume_token(INTEGER_LITERAL);
888        {if (true) return new IntegerLiteral (t.image);}
889        throw new Error("Missing return statement in function");
890      }
891    
892      final public FloatingPointLiteral FloatingPointLiteral() throws ParseException {
893      Token t;
894        t = jj_consume_token(FLOATING_POINT_LITERAL);
895        {if (true) return new FloatingPointLiteral (t.image);}
896        throw new Error("Missing return statement in function");
897      }
898    
899      final public NullLiteral NullLiteral() throws ParseException {
900        jj_consume_token(NULL);
901          {if (true) return NullLiteral.SINGLETON;}
902        throw new Error("Missing return statement in function");
903      }
904    
905      final public String Identifier() throws ParseException {
906      Token t;
907        t = jj_consume_token(IDENTIFIER);
908          {if (true) return t.image;}
909        throw new Error("Missing return statement in function");
910      }
911    
912      final public String QualifiedName() throws ParseException {
913      String prefix = null, localPart = null;
914        if (jj_2_3(2147483647)) {
915          prefix = Identifier();
916          jj_consume_token(COLON);
917        } else {
918          ;
919        }
920        localPart = Identifier();
921        if (prefix == null)
922          {if (true) return localPart;}
923        else
924         {if (true) return prefix + ":" + localPart;}
925        throw new Error("Missing return statement in function");
926      }
927    
928      final private boolean jj_2_1(int xla) {
929        jj_la = xla; jj_lastpos = jj_scanpos = token;
930        boolean retval = !jj_3_1();
931        jj_save(0, xla);
932        return retval;
933      }
934    
935      final private boolean jj_2_2(int xla) {
936        jj_la = xla; jj_lastpos = jj_scanpos = token;
937        boolean retval = !jj_3_2();
938        jj_save(1, xla);
939        return retval;
940      }
941    
942      final private boolean jj_2_3(int xla) {
943        jj_la = xla; jj_lastpos = jj_scanpos = token;
944        boolean retval = !jj_3_3();
945        jj_save(2, xla);
946        return retval;
947      }
948    
949      final private boolean jj_3R_42() {
950        if (jj_scan_token(NE2)) return true;
951        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
952        return false;
953      }
954    
955      final private boolean jj_3R_91() {
956        if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
957        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
958        return false;
959      }
960    
961      final private boolean jj_3R_40() {
962        if (jj_scan_token(EQ2)) return true;
963        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
964        return false;
965      }
966    
967      final private boolean jj_3R_41() {
968        if (jj_scan_token(NE1)) return true;
969        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
970        return false;
971      }
972    
973      final private boolean jj_3R_32() {
974        Token xsp;
975        xsp = jj_scanpos;
976        if (jj_3R_41()) {
977        jj_scanpos = xsp;
978        if (jj_3R_42()) return true;
979        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
980        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
981        return false;
982      }
983    
984      final private boolean jj_3R_90() {
985        if (jj_scan_token(INTEGER_LITERAL)) return true;
986        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
987        return false;
988      }
989    
990      final private boolean jj_3R_39() {
991        if (jj_scan_token(EQ1)) return true;
992        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
993        return false;
994      }
995    
996      final private boolean jj_3R_31() {
997        Token xsp;
998        xsp = jj_scanpos;
999        if (jj_3R_39()) {
1000        jj_scanpos = xsp;
1001        if (jj_3R_40()) return true;
1002        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1003        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1004        return false;
1005      }
1006    
1007      final private boolean jj_3R_26() {
1008        Token xsp;
1009        xsp = jj_scanpos;
1010        if (jj_3R_31()) {
1011        jj_scanpos = xsp;
1012        if (jj_3R_32()) return true;
1013        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1014        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1015        if (jj_3R_25()) return true;
1016        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1017        return false;
1018      }
1019    
1020      final private boolean jj_3R_70() {
1021        if (jj_scan_token(NOT2)) return true;
1022        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1023        return false;
1024      }
1025    
1026      final private boolean jj_3R_21() {
1027        if (jj_3R_25()) return true;
1028        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1029        Token xsp;
1030        while (true) {
1031          xsp = jj_scanpos;
1032          if (jj_3R_26()) { jj_scanpos = xsp; break; }
1033          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1034        }
1035        return false;
1036      }
1037    
1038      final private boolean jj_3R_92() {
1039        if (jj_scan_token(STRING_LITERAL)) return true;
1040        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1041        return false;
1042      }
1043    
1044      final private boolean jj_3R_62() {
1045        if (jj_scan_token(EMPTY)) return true;
1046        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1047        return false;
1048      }
1049    
1050      final private boolean jj_3R_61() {
1051        if (jj_scan_token(MINUS)) return true;
1052        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1053        return false;
1054      }
1055    
1056      final private boolean jj_3R_69() {
1057        if (jj_scan_token(NOT1)) return true;
1058        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1059        return false;
1060      }
1061    
1062      final private boolean jj_3R_60() {
1063        Token xsp;
1064        xsp = jj_scanpos;
1065        if (jj_3R_69()) {
1066        jj_scanpos = xsp;
1067        if (jj_3R_70()) return true;
1068        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1069        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1070        return false;
1071      }
1072    
1073      final private boolean jj_3R_55() {
1074        Token xsp;
1075        xsp = jj_scanpos;
1076        if (jj_3R_60()) {
1077        jj_scanpos = xsp;
1078        if (jj_3R_61()) {
1079        jj_scanpos = xsp;
1080        if (jj_3R_62()) return true;
1081        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1082        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1083        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1084        return false;
1085      }
1086    
1087      final private boolean jj_3R_96() {
1088        if (jj_scan_token(FALSE)) return true;
1089        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1090        return false;
1091      }
1092    
1093      final private boolean jj_3R_43() {
1094        Token xsp;
1095        while (true) {
1096          xsp = jj_scanpos;
1097          if (jj_3R_55()) { jj_scanpos = xsp; break; }
1098          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1099        }
1100        if (jj_3R_56()) return true;
1101        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1102        return false;
1103      }
1104    
1105      final private boolean jj_3R_95() {
1106        if (jj_scan_token(TRUE)) return true;
1107        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1108        return false;
1109      }
1110    
1111      final private boolean jj_3R_89() {
1112        Token xsp;
1113        xsp = jj_scanpos;
1114        if (jj_3R_95()) {
1115        jj_scanpos = xsp;
1116        if (jj_3R_96()) return true;
1117        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1118        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1119        return false;
1120      }
1121    
1122      final private boolean jj_3R_85() {
1123        if (jj_3R_93()) return true;
1124        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1125        return false;
1126      }
1127    
1128      final private boolean jj_3R_84() {
1129        if (jj_3R_92()) return true;
1130        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1131        return false;
1132      }
1133    
1134      final private boolean jj_3R_83() {
1135        if (jj_3R_91()) return true;
1136        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1137        return false;
1138      }
1139    
1140      final private boolean jj_3R_82() {
1141        if (jj_3R_90()) return true;
1142        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1143        return false;
1144      }
1145    
1146      final private boolean jj_3R_28() {
1147        if (jj_scan_token(AND2)) return true;
1148        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1149        return false;
1150      }
1151    
1152      final private boolean jj_3R_81() {
1153        if (jj_3R_89()) return true;
1154        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1155        return false;
1156      }
1157    
1158      final private boolean jj_3R_76() {
1159        Token xsp;
1160        xsp = jj_scanpos;
1161        if (jj_3R_81()) {
1162        jj_scanpos = xsp;
1163        if (jj_3R_82()) {
1164        jj_scanpos = xsp;
1165        if (jj_3R_83()) {
1166        jj_scanpos = xsp;
1167        if (jj_3R_84()) {
1168        jj_scanpos = xsp;
1169        if (jj_3R_85()) return true;
1170        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1171        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1172        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1173        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1174        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1175        return false;
1176      }
1177    
1178      final private boolean jj_3R_11() {
1179        if (jj_3R_14()) return true;
1180        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1181        if (jj_scan_token(COND)) return true;
1182        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1183        if (jj_3R_15()) return true;
1184        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1185        if (jj_scan_token(COLON)) return true;
1186        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1187        if (jj_3R_15()) return true;
1188        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1189        return false;
1190      }
1191    
1192      final private boolean jj_3R_27() {
1193        if (jj_scan_token(AND1)) return true;
1194        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1195        return false;
1196      }
1197    
1198      final private boolean jj_3R_22() {
1199        Token xsp;
1200        xsp = jj_scanpos;
1201        if (jj_3R_27()) {
1202        jj_scanpos = xsp;
1203        if (jj_3R_28()) return true;
1204        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1205        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1206        if (jj_3R_21()) return true;
1207        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1208        return false;
1209      }
1210    
1211      final private boolean jj_3R_17() {
1212        if (jj_3R_21()) return true;
1213        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1214        Token xsp;
1215        while (true) {
1216          xsp = jj_scanpos;
1217          if (jj_3R_22()) { jj_scanpos = xsp; break; }
1218          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1219        }
1220        return false;
1221      }
1222    
1223      final private boolean jj_3R_68() {
1224        if (jj_scan_token(MODULUS2)) return true;
1225        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1226        return false;
1227      }
1228    
1229      final private boolean jj_3R_88() {
1230        if (jj_scan_token(LBRACKET)) return true;
1231        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1232        if (jj_3R_15()) return true;
1233        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1234        if (jj_scan_token(RBRACKET)) return true;
1235        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1236        return false;
1237      }
1238    
1239      final private boolean jj_3R_66() {
1240        if (jj_scan_token(DIVIDE2)) return true;
1241        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1242        return false;
1243      }
1244    
1245      final private boolean jj_3R_67() {
1246        if (jj_scan_token(MODULUS1)) return true;
1247        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1248        return false;
1249      }
1250    
1251      final private boolean jj_3R_59() {
1252        Token xsp;
1253        xsp = jj_scanpos;
1254        if (jj_3R_67()) {
1255        jj_scanpos = xsp;
1256        if (jj_3R_68()) return true;
1257        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1258        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1259        return false;
1260      }
1261    
1262      final private boolean jj_3R_65() {
1263        if (jj_scan_token(DIVIDE1)) return true;
1264        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1265        return false;
1266      }
1267    
1268      final private boolean jj_3R_87() {
1269        if (jj_scan_token(DOT)) return true;
1270        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1271        if (jj_3R_13()) return true;
1272        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1273        return false;
1274      }
1275    
1276      final private boolean jj_3R_58() {
1277        Token xsp;
1278        xsp = jj_scanpos;
1279        if (jj_3R_65()) {
1280        jj_scanpos = xsp;
1281        if (jj_3R_66()) return true;
1282        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1283        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1284        return false;
1285      }
1286    
1287      final private boolean jj_3R_57() {
1288        if (jj_scan_token(MULTIPLY)) return true;
1289        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1290        return false;
1291      }
1292    
1293      final private boolean jj_3R_44() {
1294        Token xsp;
1295        xsp = jj_scanpos;
1296        if (jj_3R_57()) {
1297        jj_scanpos = xsp;
1298        if (jj_3R_58()) {
1299        jj_scanpos = xsp;
1300        if (jj_3R_59()) return true;
1301        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1302        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1303        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1304        if (jj_3R_43()) return true;
1305        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1306        return false;
1307      }
1308    
1309      final private boolean jj_3R_24() {
1310        if (jj_scan_token(OR2)) return true;
1311        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1312        return false;
1313      }
1314    
1315      final private boolean jj_3R_80() {
1316        if (jj_3R_88()) return true;
1317        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1318        return false;
1319      }
1320    
1321      final private boolean jj_3R_33() {
1322        if (jj_3R_43()) return true;
1323        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1324        Token xsp;
1325        while (true) {
1326          xsp = jj_scanpos;
1327          if (jj_3R_44()) { jj_scanpos = xsp; break; }
1328          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1329        }
1330        return false;
1331      }
1332    
1333      final private boolean jj_3R_79() {
1334        if (jj_3R_87()) return true;
1335        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1336        return false;
1337      }
1338    
1339      final private boolean jj_3R_75() {
1340        Token xsp;
1341        xsp = jj_scanpos;
1342        if (jj_3R_79()) {
1343        jj_scanpos = xsp;
1344        if (jj_3R_80()) return true;
1345        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1346        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1347        return false;
1348      }
1349    
1350      final private boolean jj_3R_23() {
1351        if (jj_scan_token(OR1)) return true;
1352        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1353        return false;
1354      }
1355    
1356      final private boolean jj_3R_18() {
1357        Token xsp;
1358        xsp = jj_scanpos;
1359        if (jj_3R_23()) {
1360        jj_scanpos = xsp;
1361        if (jj_3R_24()) return true;
1362        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1363        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1364        if (jj_3R_17()) return true;
1365        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1366        return false;
1367      }
1368    
1369      final private boolean jj_3R_14() {
1370        if (jj_3R_17()) return true;
1371        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1372        Token xsp;
1373        while (true) {
1374          xsp = jj_scanpos;
1375          if (jj_3R_18()) { jj_scanpos = xsp; break; }
1376          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1377        }
1378        return false;
1379      }
1380    
1381      final private boolean jj_3R_94() {
1382        if (jj_scan_token(COMMA)) return true;
1383        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1384        if (jj_3R_15()) return true;
1385        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1386        return false;
1387      }
1388    
1389      final private boolean jj_3_1() {
1390        if (jj_3R_11()) return true;
1391        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1392        return false;
1393      }
1394    
1395      final private boolean jj_3R_86() {
1396        if (jj_3R_15()) return true;
1397        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1398        Token xsp;
1399        while (true) {
1400          xsp = jj_scanpos;
1401          if (jj_3R_94()) { jj_scanpos = xsp; break; }
1402          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1403        }
1404        return false;
1405      }
1406    
1407      final private boolean jj_3R_20() {
1408        if (jj_3R_14()) return true;
1409        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1410        return false;
1411      }
1412    
1413      final private boolean jj_3R_19() {
1414        if (jj_3R_11()) return true;
1415        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1416        return false;
1417      }
1418    
1419      final private boolean jj_3R_46() {
1420        if (jj_scan_token(MINUS)) return true;
1421        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1422        return false;
1423      }
1424    
1425      final private boolean jj_3R_15() {
1426        Token xsp;
1427        xsp = jj_scanpos;
1428        if (jj_3R_19()) {
1429        jj_scanpos = xsp;
1430        if (jj_3R_20()) return true;
1431        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1432        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1433        return false;
1434      }
1435    
1436      final private boolean jj_3R_45() {
1437        if (jj_scan_token(PLUS)) return true;
1438        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1439        return false;
1440      }
1441    
1442      final private boolean jj_3R_34() {
1443        Token xsp;
1444        xsp = jj_scanpos;
1445        if (jj_3R_45()) {
1446        jj_scanpos = xsp;
1447        if (jj_3R_46()) return true;
1448        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1449        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1450        if (jj_3R_33()) return true;
1451        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1452        return false;
1453      }
1454    
1455      final private boolean jj_3R_77() {
1456        if (jj_3R_12()) return true;
1457        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1458        if (jj_scan_token(LPAREN)) return true;
1459        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1460        Token xsp;
1461        xsp = jj_scanpos;
1462        if (jj_3R_86()) jj_scanpos = xsp;
1463        else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1464        if (jj_scan_token(RPAREN)) return true;
1465        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1466        return false;
1467      }
1468    
1469      final private boolean jj_3R_29() {
1470        if (jj_3R_33()) return true;
1471        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1472        Token xsp;
1473        while (true) {
1474          xsp = jj_scanpos;
1475          if (jj_3R_34()) { jj_scanpos = xsp; break; }
1476          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1477        }
1478        return false;
1479      }
1480    
1481      final private boolean jj_3_2() {
1482        if (jj_3R_12()) return true;
1483        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1484        if (jj_scan_token(LPAREN)) return true;
1485        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1486        return false;
1487      }
1488    
1489      final private boolean jj_3R_78() {
1490        if (jj_scan_token(IDENTIFIER)) return true;
1491        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1492        return false;
1493      }
1494    
1495      final private boolean jj_3R_74() {
1496        if (jj_3R_78()) return true;
1497        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1498        return false;
1499      }
1500    
1501      final private boolean jj_3R_73() {
1502        if (jj_3R_77()) return true;
1503        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1504        return false;
1505      }
1506    
1507      final private boolean jj_3R_72() {
1508        if (jj_scan_token(LPAREN)) return true;
1509        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1510        if (jj_3R_15()) return true;
1511        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1512        if (jj_scan_token(RPAREN)) return true;
1513        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1514        return false;
1515      }
1516    
1517      final private boolean jj_3R_71() {
1518        if (jj_3R_76()) return true;
1519        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1520        return false;
1521      }
1522    
1523      final private boolean jj_3_3() {
1524        if (jj_3R_13()) return true;
1525        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1526        if (jj_scan_token(COLON)) return true;
1527        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1528        return false;
1529      }
1530    
1531      final private boolean jj_3R_63() {
1532        Token xsp;
1533        xsp = jj_scanpos;
1534        if (jj_3R_71()) {
1535        jj_scanpos = xsp;
1536        if (jj_3R_72()) {
1537        jj_scanpos = xsp;
1538        if (jj_3R_73()) {
1539        jj_scanpos = xsp;
1540        if (jj_3R_74()) return true;
1541        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1542        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1543        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1544        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1545        return false;
1546      }
1547    
1548      final private boolean jj_3R_54() {
1549        if (jj_scan_token(LE2)) return true;
1550        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1551        return false;
1552      }
1553    
1554      final private boolean jj_3R_52() {
1555        if (jj_scan_token(GE2)) return true;
1556        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1557        return false;
1558      }
1559    
1560      final private boolean jj_3R_50() {
1561        if (jj_scan_token(GT2)) return true;
1562        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1563        return false;
1564      }
1565    
1566      final private boolean jj_3R_48() {
1567        if (jj_scan_token(LT2)) return true;
1568        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1569        return false;
1570      }
1571    
1572      final private boolean jj_3R_53() {
1573        if (jj_scan_token(LE1)) return true;
1574        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1575        return false;
1576      }
1577    
1578      final private boolean jj_3R_16() {
1579        if (jj_3R_13()) return true;
1580        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1581        if (jj_scan_token(COLON)) return true;
1582        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1583        return false;
1584      }
1585    
1586      final private boolean jj_3R_38() {
1587        Token xsp;
1588        xsp = jj_scanpos;
1589        if (jj_3R_53()) {
1590        jj_scanpos = xsp;
1591        if (jj_3R_54()) return true;
1592        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1593        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1594        return false;
1595      }
1596    
1597      final private boolean jj_3R_51() {
1598        if (jj_scan_token(GE1)) return true;
1599        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1600        return false;
1601      }
1602    
1603      final private boolean jj_3R_37() {
1604        Token xsp;
1605        xsp = jj_scanpos;
1606        if (jj_3R_51()) {
1607        jj_scanpos = xsp;
1608        if (jj_3R_52()) return true;
1609        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1610        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1611        return false;
1612      }
1613    
1614      final private boolean jj_3R_49() {
1615        if (jj_scan_token(GT1)) return true;
1616        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1617        return false;
1618      }
1619    
1620      final private boolean jj_3R_36() {
1621        Token xsp;
1622        xsp = jj_scanpos;
1623        if (jj_3R_49()) {
1624        jj_scanpos = xsp;
1625        if (jj_3R_50()) return true;
1626        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1627        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1628        return false;
1629      }
1630    
1631      final private boolean jj_3R_47() {
1632        if (jj_scan_token(LT1)) return true;
1633        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1634        return false;
1635      }
1636    
1637      final private boolean jj_3R_35() {
1638        Token xsp;
1639        xsp = jj_scanpos;
1640        if (jj_3R_47()) {
1641        jj_scanpos = xsp;
1642        if (jj_3R_48()) return true;
1643        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1644        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1645        return false;
1646      }
1647    
1648      final private boolean jj_3R_12() {
1649        Token xsp;
1650        xsp = jj_scanpos;
1651        if (jj_3R_16()) jj_scanpos = xsp;
1652        else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1653        if (jj_3R_13()) return true;
1654        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1655        return false;
1656      }
1657    
1658      final private boolean jj_3R_30() {
1659        Token xsp;
1660        xsp = jj_scanpos;
1661        if (jj_3R_35()) {
1662        jj_scanpos = xsp;
1663        if (jj_3R_36()) {
1664        jj_scanpos = xsp;
1665        if (jj_3R_37()) {
1666        jj_scanpos = xsp;
1667        if (jj_3R_38()) return true;
1668        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1669        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1670        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1671        } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1672        if (jj_3R_29()) return true;
1673        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1674        return false;
1675      }
1676    
1677      final private boolean jj_3R_25() {
1678        if (jj_3R_29()) return true;
1679        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1680        Token xsp;
1681        while (true) {
1682          xsp = jj_scanpos;
1683          if (jj_3R_30()) { jj_scanpos = xsp; break; }
1684          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1685        }
1686        return false;
1687      }
1688    
1689      final private boolean jj_3R_64() {
1690        if (jj_3R_75()) return true;
1691        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1692        return false;
1693      }
1694    
1695      final private boolean jj_3R_13() {
1696        if (jj_scan_token(IDENTIFIER)) return true;
1697        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1698        return false;
1699      }
1700    
1701      final private boolean jj_3R_56() {
1702        if (jj_3R_63()) return true;
1703        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1704        Token xsp;
1705        while (true) {
1706          xsp = jj_scanpos;
1707          if (jj_3R_64()) { jj_scanpos = xsp; break; }
1708          if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1709        }
1710        return false;
1711      }
1712    
1713      final private boolean jj_3R_93() {
1714        if (jj_scan_token(NULL)) return true;
1715        if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
1716        return false;
1717      }
1718    
1719      public ELParserTokenManager token_source;
1720      SimpleCharStream jj_input_stream;
1721      public Token token, jj_nt;
1722      private int jj_ntk;
1723      private Token jj_scanpos, jj_lastpos;
1724      private int jj_la;
1725      public boolean lookingAhead = false;
1726      private boolean jj_semLA;
1727      private int jj_gen;
1728      final private int[] jj_la1 = new int[35];
1729      final private int[] jj_la1_0 = {0x6,0x6,0x6,0x20007580,0x0,0x0,0x0,0x0,0x18600000,0x600000,0x18000000,0x18600000,0x79e0000,0x180000,0x60000,0x6000000,0x1800000,0x79e0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10000,0x20007580,0x0,0x80000000,0x20007580,0x10000,0x7580,0x3000,};
1730      final private int[] jj_la1_1 = {0x0,0x0,0x0,0x50c10,0xc000,0xc000,0x3000,0x3000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x18,0x18,0x3e0,0xc0,0x300,0x3e0,0x10c10,0xc00,0x10c10,0x2,0x0,0x40000,0x0,0x50c10,0x2,0x0,0x0,};
1731      final private JJCalls[] jj_2_rtns = new JJCalls[3];
1732      private boolean jj_rescan = false;
1733      private int jj_gc = 0;
1734    
1735      public ELParser(java.io.InputStream stream) {
1736        jj_input_stream = new SimpleCharStream(stream, 1, 1);
1737        token_source = new ELParserTokenManager(jj_input_stream);
1738        token = new Token();
1739        jj_ntk = -1;
1740        jj_gen = 0;
1741        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1742        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1743      }
1744    
1745      public void ReInit(java.io.InputStream stream) {
1746        jj_input_stream.ReInit(stream, 1, 1);
1747        token_source.ReInit(jj_input_stream);
1748        token = new Token();
1749        jj_ntk = -1;
1750        jj_gen = 0;
1751        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1752        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1753      }
1754    
1755      public ELParser(java.io.Reader stream) {
1756        jj_input_stream = new SimpleCharStream(stream, 1, 1);
1757        token_source = new ELParserTokenManager(jj_input_stream);
1758        token = new Token();
1759        jj_ntk = -1;
1760        jj_gen = 0;
1761        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1762        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1763      }
1764    
1765      public void ReInit(java.io.Reader stream) {
1766        jj_input_stream.ReInit(stream, 1, 1);
1767        token_source.ReInit(jj_input_stream);
1768        token = new Token();
1769        jj_ntk = -1;
1770        jj_gen = 0;
1771        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1772        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1773      }
1774    
1775      public ELParser(ELParserTokenManager tm) {
1776        token_source = tm;
1777        token = new Token();
1778        jj_ntk = -1;
1779        jj_gen = 0;
1780        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1781        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1782      }
1783    
1784      public void ReInit(ELParserTokenManager tm) {
1785        token_source = tm;
1786        token = new Token();
1787        jj_ntk = -1;
1788        jj_gen = 0;
1789        for (int i = 0; i < 35; i++) jj_la1[i] = -1;
1790        for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
1791      }
1792    
1793      final private Token jj_consume_token(int kind) throws ParseException {
1794        Token oldToken;
1795        if ((oldToken = token).next != null) token = token.next;
1796        else token = token.next = token_source.getNextToken();
1797        jj_ntk = -1;
1798        if (token.kind == kind) {
1799          jj_gen++;
1800          if (++jj_gc > 100) {
1801            jj_gc = 0;
1802            for (int i = 0; i < jj_2_rtns.length; i++) {
1803              JJCalls c = jj_2_rtns[i];
1804              while (c != null) {
1805                if (c.gen < jj_gen) c.first = null;
1806                c = c.next;
1807              }
1808            }
1809          }
1810          return token;
1811        }
1812        token = oldToken;
1813        jj_kind = kind;
1814        throw generateParseException();
1815      }
1816    
1817      final private boolean jj_scan_token(int kind) {
1818        if (jj_scanpos == jj_lastpos) {
1819          jj_la--;
1820          if (jj_scanpos.next == null) {
1821            jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1822          } else {
1823            jj_lastpos = jj_scanpos = jj_scanpos.next;
1824          }
1825        } else {
1826          jj_scanpos = jj_scanpos.next;
1827        }
1828        if (jj_rescan) {
1829          int i = 0; Token tok = token;
1830          while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
1831          if (tok != null) jj_add_error_token(kind, i);
1832        }
1833        return (jj_scanpos.kind != kind);
1834      }
1835    
1836      final public Token getNextToken() {
1837        if (token.next != null) token = token.next;
1838        else token = token.next = token_source.getNextToken();
1839        jj_ntk = -1;
1840        jj_gen++;
1841        return token;
1842      }
1843    
1844      final public Token getToken(int index) {
1845        Token t = lookingAhead ? jj_scanpos : token;
1846        for (int i = 0; i < index; i++) {
1847          if (t.next != null) t = t.next;
1848          else t = t.next = token_source.getNextToken();
1849        }
1850        return t;
1851      }
1852    
1853      final private int jj_ntk() {
1854        if ((jj_nt=token.next) == null)
1855          return (jj_ntk = (token.next=token_source.getNextToken()).kind);
1856        else
1857          return (jj_ntk = jj_nt.kind);
1858      }
1859    
1860      private java.util.Vector jj_expentries = new java.util.Vector();
1861      private int[] jj_expentry;
1862      private int jj_kind = -1;
1863      private int[] jj_lasttokens = new int[100];
1864      private int jj_endpos;
1865    
1866      private void jj_add_error_token(int kind, int pos) {
1867        if (pos >= 100) return;
1868        if (pos == jj_endpos + 1) {
1869          jj_lasttokens[jj_endpos++] = kind;
1870        } else if (jj_endpos != 0) {
1871          jj_expentry = new int[jj_endpos];
1872          for (int i = 0; i < jj_endpos; i++) {
1873            jj_expentry[i] = jj_lasttokens[i];
1874          }
1875          boolean exists = false;
1876          for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
1877            int[] oldentry = (int[])(e.nextElement());
1878            if (oldentry.length == jj_expentry.length) {
1879              exists = true;
1880              for (int i = 0; i < jj_expentry.length; i++) {
1881                if (oldentry[i] != jj_expentry[i]) {
1882                  exists = false;
1883                  break;
1884                }
1885              }
1886              if (exists) break;
1887            }
1888          }
1889          if (!exists) jj_expentries.addElement(jj_expentry);
1890          if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
1891        }
1892      }
1893    
1894      final public ParseException generateParseException() {
1895        jj_expentries.removeAllElements();
1896        boolean[] la1tokens = new boolean[55];
1897        for (int i = 0; i < 55; i++) {
1898          la1tokens[i] = false;
1899        }
1900        if (jj_kind >= 0) {
1901          la1tokens[jj_kind] = true;
1902          jj_kind = -1;
1903        }
1904        for (int i = 0; i < 35; i++) {
1905          if (jj_la1[i] == jj_gen) {
1906            for (int j = 0; j < 32; j++) {
1907              if ((jj_la1_0[i] & (1<<j)) != 0) {
1908                la1tokens[j] = true;
1909              }
1910              if ((jj_la1_1[i] & (1<<j)) != 0) {
1911                la1tokens[32+j] = true;
1912              }
1913            }
1914          }
1915        }
1916        for (int i = 0; i < 55; i++) {
1917          if (la1tokens[i]) {
1918            jj_expentry = new int[1];
1919            jj_expentry[0] = i;
1920            jj_expentries.addElement(jj_expentry);
1921          }
1922        }
1923        jj_endpos = 0;
1924        jj_rescan_token();
1925        jj_add_error_token(0, 0);
1926        int[][] exptokseq = new int[jj_expentries.size()][];
1927        for (int i = 0, size = jj_expentries.size(); i < size; i++) {
1928          exptokseq[i] = (int[])jj_expentries.elementAt(i);
1929        }
1930        return new ParseException(token, exptokseq, tokenImage);
1931      }
1932    
1933      final public void enable_tracing() {
1934      }
1935    
1936      final public void disable_tracing() {
1937      }
1938    
1939      final private void jj_rescan_token() {
1940        jj_rescan = true;
1941        for (int i = 0; i < 3; i++) {
1942          JJCalls p = jj_2_rtns[i];
1943          do {
1944            if (p.gen > jj_gen) {
1945              jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
1946              switch (i) {
1947                case 0: jj_3_1(); break;
1948                case 1: jj_3_2(); break;
1949                case 2: jj_3_3(); break;
1950              }
1951            }
1952            p = p.next;
1953          } while (p != null);
1954        }
1955        jj_rescan = false;
1956      }
1957    
1958      final private void jj_save(int index, int xla) {
1959        JJCalls p = jj_2_rtns[index];
1960        while (p.gen > jj_gen) {
1961          if (p.next == null) { p = p.next = new JJCalls(); break; }
1962          p = p.next;
1963        }
1964        p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
1965      }
1966    
1967      static final class JJCalls {
1968        int gen;
1969        Token first;
1970        int arg;
1971        JJCalls next;
1972      }
1973    
1974    }