001/* Generated By:JavaCC: Do not edit this line. ELParser.java */
002package org.apache.commons.el.parser;
003
004import java.util.ArrayList;
005import java.util.List;
006
007import org.apache.commons.el.AndOperator;
008import org.apache.commons.el.ArraySuffix;
009import org.apache.commons.el.BinaryOperator;
010import org.apache.commons.el.BinaryOperatorExpression;
011import org.apache.commons.el.BooleanLiteral;
012import org.apache.commons.el.ComplexValue;
013import org.apache.commons.el.ConditionalExpression;
014import org.apache.commons.el.DivideOperator;
015import org.apache.commons.el.EmptyOperator;
016import org.apache.commons.el.EqualsOperator;
017import org.apache.commons.el.Expression;
018import org.apache.commons.el.ExpressionString;
019import org.apache.commons.el.FloatingPointLiteral;
020import org.apache.commons.el.FunctionInvocation;
021import org.apache.commons.el.GreaterThanOperator;
022import org.apache.commons.el.GreaterThanOrEqualsOperator;
023import org.apache.commons.el.IntegerLiteral;
024import org.apache.commons.el.LessThanOperator;
025import org.apache.commons.el.LessThanOrEqualsOperator;
026import org.apache.commons.el.Literal;
027import org.apache.commons.el.MinusOperator;
028import org.apache.commons.el.ModulusOperator;
029import org.apache.commons.el.MultiplyOperator;
030import org.apache.commons.el.NamedValue;
031import org.apache.commons.el.NotEqualsOperator;
032import org.apache.commons.el.NotOperator;
033import org.apache.commons.el.NullLiteral;
034import org.apache.commons.el.OrOperator;
035import org.apache.commons.el.PlusOperator;
036import org.apache.commons.el.PropertySuffix;
037import org.apache.commons.el.StringLiteral;
038import org.apache.commons.el.UnaryMinusOperator;
039import org.apache.commons.el.UnaryOperator;
040import org.apache.commons.el.UnaryOperatorExpression;
041import org.apache.commons.el.ValueSuffix;
042
043/**
044 * Generated EL parser.
045 * 
046 * @author Nathan Abramson
047 * @author Shawn Bayern
048 */
049
050public 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}