View Javadoc

1   /* Generated By:JavaCC: Do not edit this line. SelectorParser.java */
2   package org.codehaus.activemq.selector;
3   
4   import org.codehaus.activemq.filter.ArithmeticExpression;
5   import org.codehaus.activemq.filter.BooleanExpression;
6   import org.codehaus.activemq.filter.ComparisonExpression;
7   import org.codehaus.activemq.filter.ConstantExpression;
8   import org.codehaus.activemq.filter.Expression;
9   import org.codehaus.activemq.filter.ExpressionFilter;
10  import org.codehaus.activemq.filter.Filter;
11  import org.codehaus.activemq.filter.LogicExpression;
12  import org.codehaus.activemq.filter.PropertyExpression;
13  import org.codehaus.activemq.filter.UnaryExpression;
14  
15  import javax.jms.InvalidSelectorException;
16  import java.io.StringReader;
17  import java.util.ArrayList;
18  
19  /***
20   * JMS Selector Parser generated by JavaCC
21   * <p/>
22   * Do not edit this .java file directly - it is autogenerated from SelectorParser.jj
23   */
24  public class SelectorParser implements SelectorParserConstants {
25  
26      public SelectorParser() {
27          this(new StringReader(""));
28      }
29  
30      public Filter parse(String sql) throws InvalidSelectorException {
31          this.ReInit(new StringReader(sql));
32  
33          try {
34              return this.JmsSelector();
35          }
36          catch (TokenMgrError e) {
37              throw new InvalidSelectorException(e.getMessage());
38          }
39          catch (ParseException e) {
40              throw new InvalidSelectorException(e.getMessage());
41          }
42      }
43  
44      private BooleanExpression asBooleanExpression(Expression value) throws ParseException {
45          if (value instanceof BooleanExpression) {
46              return (BooleanExpression) value;
47          }
48          throw new ParseException("Expression will not result in a boolean value: " + value);
49      }
50  
51  // ----------------------------------------------------------------------------
52  // Grammer
53  // ----------------------------------------------------------------------------
54      final public Filter JmsSelector() throws ParseException {
55          Expression left = null;
56          left = orExpression();
57          if (left instanceof BooleanExpression) {
58              if (true) {
59                  return new ExpressionFilter(left);
60              }
61          }
62          else {
63              if (true) {
64                  throw new ParseException("Selector does not result in a boolean value: " + left);
65              }
66          }
67          throw new Error("Missing return statement in function");
68      }
69  
70      final public Expression orExpression() throws ParseException {
71          Expression left;
72          Expression right;
73          left = andExpression();
74          label_1:
75          while (true) {
76              switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
77                  case OR:
78                      ;
79                      break;
80                  default:
81                      break label_1;
82              }
83              jj_consume_token(OR);
84              right = andExpression();
85              left = LogicExpression.createOR(asBooleanExpression(left), asBooleanExpression(right));
86          }
87          {
88              if (true) {
89                  return left;
90              }
91          }
92          throw new Error("Missing return statement in function");
93      }
94  
95      final public Expression andExpression() throws ParseException {
96          Expression left;
97          Expression right;
98          left = equalityExpression();
99          label_2:
100         while (true) {
101             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
102                 case AND:
103                     ;
104                     break;
105                 default:
106                     break label_2;
107             }
108             jj_consume_token(AND);
109             right = equalityExpression();
110             left = LogicExpression.createAND(asBooleanExpression(left), asBooleanExpression(right));
111         }
112         {
113             if (true) {
114                 return left;
115             }
116         }
117         throw new Error("Missing return statement in function");
118     }
119 
120     final public Expression equalityExpression() throws ParseException {
121         Expression left;
122         Expression right;
123         left = comparisonExpression();
124         label_3:
125         while (true) {
126             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
127                 case IS:
128                 case 24:
129                 case 25:
130                     ;
131                     break;
132                 default:
133                     break label_3;
134             }
135             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
136                 case 24:
137                     jj_consume_token(24);
138                     right = comparisonExpression();
139                     left = ComparisonExpression.createEqual(left, right);
140                     break;
141                 case 25:
142                     jj_consume_token(25);
143                     right = comparisonExpression();
144                     left = ComparisonExpression.createNotEqual(left, right);
145                     break;
146                 default:
147                     if (jj_2_1(2)) {
148                         jj_consume_token(IS);
149                         jj_consume_token(NULL);
150                         left = ComparisonExpression.createIsNull(left);
151                     }
152                     else {
153                         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
154                             case IS:
155                                 jj_consume_token(IS);
156                                 jj_consume_token(NOT);
157                                 jj_consume_token(NULL);
158                                 left = ComparisonExpression.createIsNotNull(left);
159                                 break;
160                             default:
161                                 jj_consume_token(-1);
162                                 throw new ParseException();
163                         }
164                     }
165             }
166         }
167         {
168             if (true) {
169                 return left;
170             }
171         }
172         throw new Error("Missing return statement in function");
173     }
174 
175     final public Expression comparisonExpression() throws ParseException {
176         Expression left;
177         Expression right;
178         Expression low;
179         Expression high;
180         String t, u;
181         boolean not;
182         ArrayList list;
183         left = addExpression();
184         label_4:
185         while (true) {
186             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
187                 case NOT:
188                 case BETWEEN:
189                 case LIKE:
190                 case IN:
191                 case 26:
192                 case 27:
193                 case 28:
194                 case 29:
195                     ;
196                     break;
197                 default:
198                     break label_4;
199             }
200             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
201                 case 26:
202                     jj_consume_token(26);
203                     right = addExpression();
204                     left = ComparisonExpression.createGreaterThan(left, right);
205                     break;
206                 case 27:
207                     jj_consume_token(27);
208                     right = addExpression();
209                     left = ComparisonExpression.createGreaterThanEqual(left, right);
210                     break;
211                 case 28:
212                     jj_consume_token(28);
213                     right = addExpression();
214                     left = ComparisonExpression.createLessThan(left, right);
215                     break;
216                 case 29:
217                     jj_consume_token(29);
218                     right = addExpression();
219                     left = ComparisonExpression.createLessThanEqual(left, right);
220                     break;
221                 case LIKE:
222                     u = null;
223                     jj_consume_token(LIKE);
224                     t = stringLitteral();
225                     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
226                         case ESCAPE:
227                             jj_consume_token(ESCAPE);
228                             u = stringLitteral();
229                             break;
230                         default:
231                             ;
232                     }
233                     left = ComparisonExpression.createLike(left, t, u);
234                     break;
235                 default:
236                     if (jj_2_2(2)) {
237                         u = null;
238                         jj_consume_token(NOT);
239                         jj_consume_token(LIKE);
240                         t = stringLitteral();
241                         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
242                             case ESCAPE:
243                                 jj_consume_token(ESCAPE);
244                                 u = stringLitteral();
245                                 break;
246                             default:
247                                 ;
248                         }
249                         left = ComparisonExpression.createNotLike(left, t, u);
250                     }
251                     else {
252                         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
253                             case BETWEEN:
254                                 jj_consume_token(BETWEEN);
255                                 low = addExpression();
256                                 jj_consume_token(AND);
257                                 high = addExpression();
258                                 left = ComparisonExpression.createBetween(left, low, high);
259                                 break;
260                             default:
261                                 if (jj_2_3(2)) {
262                                     jj_consume_token(NOT);
263                                     jj_consume_token(BETWEEN);
264                                     low = addExpression();
265                                     jj_consume_token(AND);
266                                     high = addExpression();
267                                     left = ComparisonExpression.createNotBetween(left, low, high);
268                                 }
269                                 else {
270                                     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
271                                         case IN:
272                                             jj_consume_token(IN);
273                                             jj_consume_token(30);
274                                             right = literal();
275                                             list = new ArrayList();
276                                             list.add(right);
277                                             label_5:
278                                             while (true) {
279                                                 switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
280                                                     case 31:
281                                                         ;
282                                                         break;
283                                                     default:
284                                                         break label_5;
285                                                 }
286                                                 jj_consume_token(31);
287                                                 right = literal();
288                                                 list.add(right);
289                                             }
290                                             jj_consume_token(32);
291                                             left = ComparisonExpression.createInFilter(left, list);
292                                             break;
293                                         default:
294                                             if (jj_2_4(2)) {
295                                                 jj_consume_token(NOT);
296                                                 jj_consume_token(IN);
297                                                 jj_consume_token(30);
298                                                 right = literal();
299                                                 list = new ArrayList();
300                                                 list.add(right);
301                                                 label_6:
302                                                 while (true) {
303                                                     switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
304                                                         case 31:
305                                                             ;
306                                                             break;
307                                                         default:
308                                                             break label_6;
309                                                     }
310                                                     jj_consume_token(31);
311                                                     right = literal();
312                                                     list.add(right);
313                                                 }
314                                                 jj_consume_token(32);
315                                                 left = ComparisonExpression.createNotInFilter(left, list);
316                                             }
317                                             else {
318                                                 jj_consume_token(-1);
319                                                 throw new ParseException();
320                                             }
321                                     }
322                                 }
323                         }
324                     }
325             }
326         }
327         {
328             if (true) {
329                 return left;
330             }
331         }
332         throw new Error("Missing return statement in function");
333     }
334 
335     final public Expression addExpression() throws ParseException {
336         Expression left;
337         Expression right;
338         left = multExpr();
339         label_7:
340         while (true) {
341             if (jj_2_5(2147483647)) {
342                 ;
343             }
344             else {
345                 break label_7;
346             }
347             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
348                 case 33:
349                     jj_consume_token(33);
350                     right = multExpr();
351                     left = ArithmeticExpression.createPlus(left, right);
352                     break;
353                 case 34:
354                     jj_consume_token(34);
355                     right = multExpr();
356                     left = ArithmeticExpression.createMinus(left, right);
357                     break;
358                 default:
359                     jj_consume_token(-1);
360                     throw new ParseException();
361             }
362         }
363         {
364             if (true) {
365                 return left;
366             }
367         }
368         throw new Error("Missing return statement in function");
369     }
370 
371     final public Expression multExpr() throws ParseException {
372         Expression left;
373         Expression right;
374         left = unaryExpr();
375         label_8:
376         while (true) {
377             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
378                 case 35:
379                 case 36:
380                 case 37:
381                     ;
382                     break;
383                 default:
384                     break label_8;
385             }
386             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
387                 case 35:
388                     jj_consume_token(35);
389                     right = unaryExpr();
390                     left = ArithmeticExpression.createMultiply(left, right);
391                     break;
392                 case 36:
393                     jj_consume_token(36);
394                     right = unaryExpr();
395                     left = ArithmeticExpression.createDivide(left, right);
396                     break;
397                 case 37:
398                     jj_consume_token(37);
399                     right = unaryExpr();
400                     left = ArithmeticExpression.createMod(left, right);
401                     break;
402                 default:
403                     jj_consume_token(-1);
404                     throw new ParseException();
405             }
406         }
407         {
408             if (true) {
409                 return left;
410             }
411         }
412         throw new Error("Missing return statement in function");
413     }
414 
415     final public Expression unaryExpr() throws ParseException {
416         Expression left = null;
417         if (jj_2_6(2147483647)) {
418             jj_consume_token(33);
419             left = unaryExpr();
420         }
421         else {
422             switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
423                 case 34:
424                     jj_consume_token(34);
425                     left = unaryExpr();
426                     left = UnaryExpression.createNegate(left);
427                     break;
428                 case NOT:
429                     jj_consume_token(NOT);
430                     left = unaryExpr();
431                     left = UnaryExpression.createNOT(asBooleanExpression(left));
432                     break;
433                 case TRUE:
434                 case FALSE:
435                 case NULL:
436                 case INTEGER_LITERAL:
437                 case FLOATING_POINT_LITERAL:
438                 case STRING_LITERAL:
439                 case ID:
440                 case 30:
441                     left = primaryExpr();
442                     break;
443                 default:
444                     jj_consume_token(-1);
445                     throw new ParseException();
446             }
447         }
448         {
449             if (true) {
450                 return left;
451             }
452         }
453         throw new Error("Missing return statement in function");
454     }
455 
456     final public Expression primaryExpr() throws ParseException {
457         Expression left = null;
458         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
459             case TRUE:
460             case FALSE:
461             case NULL:
462             case INTEGER_LITERAL:
463             case FLOATING_POINT_LITERAL:
464             case STRING_LITERAL:
465                 left = literal();
466                 break;
467             case ID:
468                 left = variable();
469                 break;
470             case 30:
471                 jj_consume_token(30);
472                 left = orExpression();
473                 jj_consume_token(32);
474                 break;
475             default:
476                 jj_consume_token(-1);
477                 throw new ParseException();
478         }
479         {
480             if (true) {
481                 return left;
482             }
483         }
484         throw new Error("Missing return statement in function");
485     }
486 
487     final public ConstantExpression literal() throws ParseException {
488         Token t;
489         String s;
490         ConstantExpression left = null;
491         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk) {
492             case STRING_LITERAL:
493                 s = stringLitteral();
494                 left = new ConstantExpression(s);
495                 break;
496             case INTEGER_LITERAL:
497                 t = jj_consume_token(INTEGER_LITERAL);
498                 left = ConstantExpression.createInteger(t.image);
499                 break;
500             case FLOATING_POINT_LITERAL:
501                 t = jj_consume_token(FLOATING_POINT_LITERAL);
502                 left = ConstantExpression.createFloat(t.image);
503                 break;
504             case TRUE:
505                 jj_consume_token(TRUE);
506                 left = ConstantExpression.TRUE;
507                 break;
508             case FALSE:
509                 jj_consume_token(FALSE);
510                 left = ConstantExpression.FALSE;
511                 break;
512             case NULL:
513                 jj_consume_token(NULL);
514                 left = ConstantExpression.NULL;
515                 break;
516             default:
517                 jj_consume_token(-1);
518                 throw new ParseException();
519         }
520         {
521             if (true) {
522                 return left;
523             }
524         }
525         throw new Error("Missing return statement in function");
526     }
527 
528     final public String stringLitteral() throws ParseException {
529         Token t;
530         StringBuffer rc = new StringBuffer();
531         boolean first = true;
532         t = jj_consume_token(STRING_LITERAL);
533         // Decode the sting value.
534         String image = t.image;
535         for (int i = 1; i < image.length() - 1; i++) {
536             char c = image.charAt(i);
537             if (c == '\'') {
538                 i++;
539             }
540             rc.append(c);
541         }
542         {
543             if (true) {
544                 return rc.toString();
545             }
546         }
547         throw new Error("Missing return statement in function");
548     }
549 
550     final public PropertyExpression variable() throws ParseException {
551         Token t;
552         PropertyExpression left = null;
553         t = jj_consume_token(ID);
554         left = new PropertyExpression(t.image);
555         {
556             if (true) {
557                 return left;
558             }
559         }
560         throw new Error("Missing return statement in function");
561     }
562 
563     final private boolean jj_2_1(int xla) {
564         jj_la = xla;
565         jj_lastpos = jj_scanpos = token;
566         return !jj_3_1();
567     }
568 
569     final private boolean jj_2_2(int xla) {
570         jj_la = xla;
571         jj_lastpos = jj_scanpos = token;
572         return !jj_3_2();
573     }
574 
575     final private boolean jj_2_3(int xla) {
576         jj_la = xla;
577         jj_lastpos = jj_scanpos = token;
578         return !jj_3_3();
579     }
580 
581     final private boolean jj_2_4(int xla) {
582         jj_la = xla;
583         jj_lastpos = jj_scanpos = token;
584         return !jj_3_4();
585     }
586 
587     final private boolean jj_2_5(int xla) {
588         jj_la = xla;
589         jj_lastpos = jj_scanpos = token;
590         return !jj_3_5();
591     }
592 
593     final private boolean jj_2_6(int xla) {
594         jj_la = xla;
595         jj_lastpos = jj_scanpos = token;
596         return !jj_3_6();
597     }
598 
599     final private boolean jj_3R_54() {
600         if (jj_scan_token(33)) {
601             return true;
602         }
603         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
604             return false;
605         }
606         if (jj_3R_11()) {
607             return true;
608         }
609         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
610             return false;
611         }
612         return false;
613     }
614 
615     final private boolean jj_3R_49() {
616         if (jj_scan_token(28)) {
617             return true;
618         }
619         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
620             return false;
621         }
622         if (jj_3R_41()) {
623             return true;
624         }
625         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
626             return false;
627         }
628         return false;
629     }
630 
631     final private boolean jj_3R_28() {
632         if (jj_3R_36()) {
633             return true;
634         }
635         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
636             return false;
637         }
638         return false;
639     }
640 
641     final private boolean jj_3R_59() {
642         if (jj_scan_token(31)) {
643             return true;
644         }
645         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
646             return false;
647         }
648         if (jj_3R_25()) {
649             return true;
650         }
651         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
652             return false;
653         }
654         return false;
655     }
656 
657     final private boolean jj_3R_46() {
658         Token xsp;
659         xsp = jj_scanpos;
660         if (jj_3R_54()) {
661             jj_scanpos = xsp;
662             if (jj_3R_55()) {
663                 return true;
664             }
665             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
666                 return false;
667             }
668         }
669         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
670             return false;
671         }
672         return false;
673     }
674 
675     final private boolean jj_3R_35() {
676         if (jj_scan_token(OR)) {
677             return true;
678         }
679         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
680             return false;
681         }
682         if (jj_3R_34()) {
683             return true;
684         }
685         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
686             return false;
687         }
688         return false;
689     }
690 
691     final private boolean jj_3R_48() {
692         if (jj_scan_token(27)) {
693             return true;
694         }
695         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
696             return false;
697         }
698         if (jj_3R_41()) {
699             return true;
700         }
701         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
702             return false;
703         }
704         return false;
705     }
706 
707     final private boolean jj_3R_25() {
708         Token xsp;
709         xsp = jj_scanpos;
710         if (jj_3R_28()) {
711             jj_scanpos = xsp;
712             if (jj_3R_29()) {
713                 jj_scanpos = xsp;
714                 if (jj_3R_30()) {
715                     jj_scanpos = xsp;
716                     if (jj_3R_31()) {
717                         jj_scanpos = xsp;
718                         if (jj_3R_32()) {
719                             jj_scanpos = xsp;
720                             if (jj_3R_33()) {
721                                 return true;
722                             }
723                             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
724                                 return false;
725                             }
726                         }
727                         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
728                             return false;
729                         }
730                     }
731                     else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
732                         return false;
733                     }
734                 }
735                 else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
736                     return false;
737                 }
738             }
739             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
740                 return false;
741             }
742         }
743         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
744             return false;
745         }
746         return false;
747     }
748 
749     final private boolean jj_3R_47() {
750         if (jj_scan_token(26)) {
751             return true;
752         }
753         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
754             return false;
755         }
756         if (jj_3R_41()) {
757             return true;
758         }
759         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
760             return false;
761         }
762         return false;
763     }
764 
765     final private boolean jj_3R_42() {
766         Token xsp;
767         xsp = jj_scanpos;
768         if (jj_3R_47()) {
769             jj_scanpos = xsp;
770             if (jj_3R_48()) {
771                 jj_scanpos = xsp;
772                 if (jj_3R_49()) {
773                     jj_scanpos = xsp;
774                     if (jj_3R_50()) {
775                         jj_scanpos = xsp;
776                         if (jj_3R_51()) {
777                             jj_scanpos = xsp;
778                             if (jj_3_2()) {
779                                 jj_scanpos = xsp;
780                                 if (jj_3R_52()) {
781                                     jj_scanpos = xsp;
782                                     if (jj_3_3()) {
783                                         jj_scanpos = xsp;
784                                         if (jj_3R_53()) {
785                                             jj_scanpos = xsp;
786                                             if (jj_3_4()) {
787                                                 return true;
788                                             }
789                                             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
790                                                 return false;
791                                             }
792                                         }
793                                         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
794                                             return false;
795                                         }
796                                     }
797                                     else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
798                                         return false;
799                                     }
800                                 }
801                                 else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
802                                     return false;
803                                 }
804                             }
805                             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
806                                 return false;
807                             }
808                         }
809                         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
810                             return false;
811                         }
812                     }
813                     else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
814                         return false;
815                     }
816                 }
817                 else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
818                     return false;
819                 }
820             }
821             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
822                 return false;
823             }
824         }
825         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
826             return false;
827         }
828         return false;
829     }
830 
831     final private boolean jj_3R_41() {
832         if (jj_3R_11()) {
833             return true;
834         }
835         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
836             return false;
837         }
838         Token xsp;
839         while (true) {
840             xsp = jj_scanpos;
841             if (jj_3R_46()) {
842                 jj_scanpos = xsp;
843                 break;
844             }
845             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
846                 return false;
847             }
848         }
849         return false;
850     }
851 
852     final private boolean jj_3R_27() {
853         if (jj_3R_34()) {
854             return true;
855         }
856         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
857             return false;
858         }
859         Token xsp;
860         while (true) {
861             xsp = jj_scanpos;
862             if (jj_3R_35()) {
863                 jj_scanpos = xsp;
864                 break;
865             }
866             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
867                 return false;
868             }
869         }
870         return false;
871     }
872 
873     final private boolean jj_3R_24() {
874         if (jj_scan_token(30)) {
875             return true;
876         }
877         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
878             return false;
879         }
880         if (jj_3R_27()) {
881             return true;
882         }
883         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
884             return false;
885         }
886         if (jj_scan_token(32)) {
887             return true;
888         }
889         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
890             return false;
891         }
892         return false;
893     }
894 
895     final private boolean jj_3R_23() {
896         if (jj_3R_26()) {
897             return true;
898         }
899         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
900             return false;
901         }
902         return false;
903     }
904 
905     final private boolean jj_3R_22() {
906         if (jj_3R_25()) {
907             return true;
908         }
909         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
910             return false;
911         }
912         return false;
913     }
914 
915     final private boolean jj_3R_58() {
916         if (jj_scan_token(31)) {
917             return true;
918         }
919         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
920             return false;
921         }
922         if (jj_3R_25()) {
923             return true;
924         }
925         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
926             return false;
927         }
928         return false;
929     }
930 
931     final private boolean jj_3R_26() {
932         if (jj_scan_token(ID)) {
933             return true;
934         }
935         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
936             return false;
937         }
938         return false;
939     }
940 
941     final private boolean jj_3R_39() {
942         if (jj_3R_41()) {
943             return true;
944         }
945         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
946             return false;
947         }
948         Token xsp;
949         while (true) {
950             xsp = jj_scanpos;
951             if (jj_3R_42()) {
952                 jj_scanpos = xsp;
953                 break;
954             }
955             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
956                 return false;
957             }
958         }
959         return false;
960     }
961 
962     final private boolean jj_3R_21() {
963         Token xsp;
964         xsp = jj_scanpos;
965         if (jj_3R_22()) {
966             jj_scanpos = xsp;
967             if (jj_3R_23()) {
968                 jj_scanpos = xsp;
969                 if (jj_3R_24()) {
970                     return true;
971                 }
972                 if (jj_la == 0 && jj_scanpos == jj_lastpos) {
973                     return false;
974                 }
975             }
976             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
977                 return false;
978             }
979         }
980         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
981             return false;
982         }
983         return false;
984     }
985 
986     final private boolean jj_3R_57() {
987         if (jj_scan_token(ESCAPE)) {
988             return true;
989         }
990         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
991             return false;
992         }
993         if (jj_3R_36()) {
994             return true;
995         }
996         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
997             return false;
998         }
999         return false;
1000     }
1001 
1002     final private boolean jj_3_4() {
1003         if (jj_scan_token(NOT)) {
1004             return true;
1005         }
1006         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1007             return false;
1008         }
1009         if (jj_scan_token(IN)) {
1010             return true;
1011         }
1012         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1013             return false;
1014         }
1015         if (jj_scan_token(30)) {
1016             return true;
1017         }
1018         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1019             return false;
1020         }
1021         if (jj_3R_25()) {
1022             return true;
1023         }
1024         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1025             return false;
1026         }
1027         Token xsp;
1028         while (true) {
1029             xsp = jj_scanpos;
1030             if (jj_3R_59()) {
1031                 jj_scanpos = xsp;
1032                 break;
1033             }
1034             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1035                 return false;
1036             }
1037         }
1038         if (jj_scan_token(32)) {
1039             return true;
1040         }
1041         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1042             return false;
1043         }
1044         return false;
1045     }
1046 
1047     final private boolean jj_3_6() {
1048         if (jj_scan_token(33)) {
1049             return true;
1050         }
1051         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1052             return false;
1053         }
1054         if (jj_3R_12()) {
1055             return true;
1056         }
1057         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1058             return false;
1059         }
1060         return false;
1061     }
1062 
1063     final private boolean jj_3R_17() {
1064         if (jj_3R_21()) {
1065             return true;
1066         }
1067         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1068             return false;
1069         }
1070         return false;
1071     }
1072 
1073     final private boolean jj_3R_16() {
1074         if (jj_scan_token(NOT)) {
1075             return true;
1076         }
1077         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1078             return false;
1079         }
1080         if (jj_3R_12()) {
1081             return true;
1082         }
1083         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1084             return false;
1085         }
1086         return false;
1087     }
1088 
1089     final private boolean jj_3R_53() {
1090         if (jj_scan_token(IN)) {
1091             return true;
1092         }
1093         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1094             return false;
1095         }
1096         if (jj_scan_token(30)) {
1097             return true;
1098         }
1099         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1100             return false;
1101         }
1102         if (jj_3R_25()) {
1103             return true;
1104         }
1105         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1106             return false;
1107         }
1108         Token xsp;
1109         while (true) {
1110             xsp = jj_scanpos;
1111             if (jj_3R_58()) {
1112                 jj_scanpos = xsp;
1113                 break;
1114             }
1115             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1116                 return false;
1117             }
1118         }
1119         if (jj_scan_token(32)) {
1120             return true;
1121         }
1122         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1123             return false;
1124         }
1125         return false;
1126     }
1127 
1128     final private boolean jj_3R_45() {
1129         if (jj_scan_token(IS)) {
1130             return true;
1131         }
1132         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1133             return false;
1134         }
1135         if (jj_scan_token(NOT)) {
1136             return true;
1137         }
1138         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1139             return false;
1140         }
1141         if (jj_scan_token(NULL)) {
1142             return true;
1143         }
1144         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1145             return false;
1146         }
1147         return false;
1148     }
1149 
1150     final private boolean jj_3R_14() {
1151         if (jj_scan_token(33)) {
1152             return true;
1153         }
1154         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1155             return false;
1156         }
1157         if (jj_3R_12()) {
1158             return true;
1159         }
1160         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1161             return false;
1162         }
1163         return false;
1164     }
1165 
1166     final private boolean jj_3R_15() {
1167         if (jj_scan_token(34)) {
1168             return true;
1169         }
1170         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1171             return false;
1172         }
1173         if (jj_3R_12()) {
1174             return true;
1175         }
1176         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1177             return false;
1178         }
1179         return false;
1180     }
1181 
1182     final private boolean jj_3R_36() {
1183         if (jj_scan_token(STRING_LITERAL)) {
1184             return true;
1185         }
1186         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1187             return false;
1188         }
1189         return false;
1190     }
1191 
1192     final private boolean jj_3_1() {
1193         if (jj_scan_token(IS)) {
1194             return true;
1195         }
1196         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1197             return false;
1198         }
1199         if (jj_scan_token(NULL)) {
1200             return true;
1201         }
1202         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1203             return false;
1204         }
1205         return false;
1206     }
1207 
1208     final private boolean jj_3R_12() {
1209         Token xsp;
1210         xsp = jj_scanpos;
1211         if (jj_3R_14()) {
1212             jj_scanpos = xsp;
1213             if (jj_3R_15()) {
1214                 jj_scanpos = xsp;
1215                 if (jj_3R_16()) {
1216                     jj_scanpos = xsp;
1217                     if (jj_3R_17()) {
1218                         return true;
1219                     }
1220                     if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1221                         return false;
1222                     }
1223                 }
1224                 else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1225                     return false;
1226                 }
1227             }
1228             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1229                 return false;
1230             }
1231         }
1232         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1233             return false;
1234         }
1235         return false;
1236     }
1237 
1238     final private boolean jj_3R_44() {
1239         if (jj_scan_token(25)) {
1240             return true;
1241         }
1242         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1243             return false;
1244         }
1245         if (jj_3R_39()) {
1246             return true;
1247         }
1248         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1249             return false;
1250         }
1251         return false;
1252     }
1253 
1254     final private boolean jj_3_3() {
1255         if (jj_scan_token(NOT)) {
1256             return true;
1257         }
1258         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1259             return false;
1260         }
1261         if (jj_scan_token(BETWEEN)) {
1262             return true;
1263         }
1264         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1265             return false;
1266         }
1267         if (jj_3R_41()) {
1268             return true;
1269         }
1270         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1271             return false;
1272         }
1273         if (jj_scan_token(AND)) {
1274             return true;
1275         }
1276         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1277             return false;
1278         }
1279         if (jj_3R_41()) {
1280             return true;
1281         }
1282         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1283             return false;
1284         }
1285         return false;
1286     }
1287 
1288     final private boolean jj_3R_43() {
1289         if (jj_scan_token(24)) {
1290             return true;
1291         }
1292         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1293             return false;
1294         }
1295         if (jj_3R_39()) {
1296             return true;
1297         }
1298         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1299             return false;
1300         }
1301         return false;
1302     }
1303 
1304     final private boolean jj_3R_40() {
1305         Token xsp;
1306         xsp = jj_scanpos;
1307         if (jj_3R_43()) {
1308             jj_scanpos = xsp;
1309             if (jj_3R_44()) {
1310                 jj_scanpos = xsp;
1311                 if (jj_3_1()) {
1312                     jj_scanpos = xsp;
1313                     if (jj_3R_45()) {
1314                         return true;
1315                     }
1316                     if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1317                         return false;
1318                     }
1319                 }
1320                 else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1321                     return false;
1322                 }
1323             }
1324             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1325                 return false;
1326             }
1327         }
1328         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1329             return false;
1330         }
1331         return false;
1332     }
1333 
1334     final private boolean jj_3R_52() {
1335         if (jj_scan_token(BETWEEN)) {
1336             return true;
1337         }
1338         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1339             return false;
1340         }
1341         if (jj_3R_41()) {
1342             return true;
1343         }
1344         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1345             return false;
1346         }
1347         if (jj_scan_token(AND)) {
1348             return true;
1349         }
1350         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1351             return false;
1352         }
1353         if (jj_3R_41()) {
1354             return true;
1355         }
1356         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1357             return false;
1358         }
1359         return false;
1360     }
1361 
1362     final private boolean jj_3R_33() {
1363         if (jj_scan_token(NULL)) {
1364             return true;
1365         }
1366         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1367             return false;
1368         }
1369         return false;
1370     }
1371 
1372     final private boolean jj_3R_56() {
1373         if (jj_scan_token(ESCAPE)) {
1374             return true;
1375         }
1376         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1377             return false;
1378         }
1379         if (jj_3R_36()) {
1380             return true;
1381         }
1382         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1383             return false;
1384         }
1385         return false;
1386     }
1387 
1388     final private boolean jj_3R_20() {
1389         if (jj_scan_token(37)) {
1390             return true;
1391         }
1392         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1393             return false;
1394         }
1395         if (jj_3R_12()) {
1396             return true;
1397         }
1398         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1399             return false;
1400         }
1401         return false;
1402     }
1403 
1404     final private boolean jj_3R_32() {
1405         if (jj_scan_token(FALSE)) {
1406             return true;
1407         }
1408         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1409             return false;
1410         }
1411         return false;
1412     }
1413 
1414     final private boolean jj_3R_37() {
1415         if (jj_3R_39()) {
1416             return true;
1417         }
1418         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1419             return false;
1420         }
1421         Token xsp;
1422         while (true) {
1423             xsp = jj_scanpos;
1424             if (jj_3R_40()) {
1425                 jj_scanpos = xsp;
1426                 break;
1427             }
1428             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1429                 return false;
1430             }
1431         }
1432         return false;
1433     }
1434 
1435     final private boolean jj_3_2() {
1436         if (jj_scan_token(NOT)) {
1437             return true;
1438         }
1439         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1440             return false;
1441         }
1442         if (jj_scan_token(LIKE)) {
1443             return true;
1444         }
1445         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1446             return false;
1447         }
1448         if (jj_3R_36()) {
1449             return true;
1450         }
1451         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1452             return false;
1453         }
1454         Token xsp;
1455         xsp = jj_scanpos;
1456         if (jj_3R_57()) {
1457             jj_scanpos = xsp;
1458         }
1459         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1460             return false;
1461         }
1462         return false;
1463     }
1464 
1465     final private boolean jj_3R_51() {
1466         if (jj_scan_token(LIKE)) {
1467             return true;
1468         }
1469         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1470             return false;
1471         }
1472         if (jj_3R_36()) {
1473             return true;
1474         }
1475         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1476             return false;
1477         }
1478         Token xsp;
1479         xsp = jj_scanpos;
1480         if (jj_3R_56()) {
1481             jj_scanpos = xsp;
1482         }
1483         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1484             return false;
1485         }
1486         return false;
1487     }
1488 
1489     final private boolean jj_3R_19() {
1490         if (jj_scan_token(36)) {
1491             return true;
1492         }
1493         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1494             return false;
1495         }
1496         if (jj_3R_12()) {
1497             return true;
1498         }
1499         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1500             return false;
1501         }
1502         return false;
1503     }
1504 
1505     final private boolean jj_3R_31() {
1506         if (jj_scan_token(TRUE)) {
1507             return true;
1508         }
1509         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1510             return false;
1511         }
1512         return false;
1513     }
1514 
1515     final private boolean jj_3R_18() {
1516         if (jj_scan_token(35)) {
1517             return true;
1518         }
1519         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1520             return false;
1521         }
1522         if (jj_3R_12()) {
1523             return true;
1524         }
1525         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1526             return false;
1527         }
1528         return false;
1529     }
1530 
1531     final private boolean jj_3R_13() {
1532         Token xsp;
1533         xsp = jj_scanpos;
1534         if (jj_3R_18()) {
1535             jj_scanpos = xsp;
1536             if (jj_3R_19()) {
1537                 jj_scanpos = xsp;
1538                 if (jj_3R_20()) {
1539                     return true;
1540                 }
1541                 if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1542                     return false;
1543                 }
1544             }
1545             else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1546                 return false;
1547             }
1548         }
1549         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1550             return false;
1551         }
1552         return false;
1553     }
1554 
1555     final private boolean jj_3R_38() {
1556         if (jj_scan_token(AND)) {
1557             return true;
1558         }
1559         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1560             return false;
1561         }
1562         if (jj_3R_37()) {
1563             return true;
1564         }
1565         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1566             return false;
1567         }
1568         return false;
1569     }
1570 
1571     final private boolean jj_3R_30() {
1572         if (jj_scan_token(FLOATING_POINT_LITERAL)) {
1573             return true;
1574         }
1575         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1576             return false;
1577         }
1578         return false;
1579     }
1580 
1581     final private boolean jj_3R_11() {
1582         if (jj_3R_12()) {
1583             return true;
1584         }
1585         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1586             return false;
1587         }
1588         Token xsp;
1589         while (true) {
1590             xsp = jj_scanpos;
1591             if (jj_3R_13()) {
1592                 jj_scanpos = xsp;
1593                 break;
1594             }
1595             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1596                 return false;
1597             }
1598         }
1599         return false;
1600     }
1601 
1602     final private boolean jj_3R_10() {
1603         if (jj_scan_token(34)) {
1604             return true;
1605         }
1606         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1607             return false;
1608         }
1609         return false;
1610     }
1611 
1612     final private boolean jj_3R_9() {
1613         if (jj_scan_token(33)) {
1614             return true;
1615         }
1616         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1617             return false;
1618         }
1619         return false;
1620     }
1621 
1622     final private boolean jj_3R_55() {
1623         if (jj_scan_token(34)) {
1624             return true;
1625         }
1626         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1627             return false;
1628         }
1629         if (jj_3R_11()) {
1630             return true;
1631         }
1632         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1633             return false;
1634         }
1635         return false;
1636     }
1637 
1638     final private boolean jj_3R_34() {
1639         if (jj_3R_37()) {
1640             return true;
1641         }
1642         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1643             return false;
1644         }
1645         Token xsp;
1646         while (true) {
1647             xsp = jj_scanpos;
1648             if (jj_3R_38()) {
1649                 jj_scanpos = xsp;
1650                 break;
1651             }
1652             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1653                 return false;
1654             }
1655         }
1656         return false;
1657     }
1658 
1659     final private boolean jj_3_5() {
1660         Token xsp;
1661         xsp = jj_scanpos;
1662         if (jj_3R_9()) {
1663             jj_scanpos = xsp;
1664             if (jj_3R_10()) {
1665                 return true;
1666             }
1667             if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1668                 return false;
1669             }
1670         }
1671         else if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1672             return false;
1673         }
1674         if (jj_3R_11()) {
1675             return true;
1676         }
1677         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1678             return false;
1679         }
1680         return false;
1681     }
1682 
1683     final private boolean jj_3R_29() {
1684         if (jj_scan_token(INTEGER_LITERAL)) {
1685             return true;
1686         }
1687         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1688             return false;
1689         }
1690         return false;
1691     }
1692 
1693     final private boolean jj_3R_50() {
1694         if (jj_scan_token(29)) {
1695             return true;
1696         }
1697         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1698             return false;
1699         }
1700         if (jj_3R_41()) {
1701             return true;
1702         }
1703         if (jj_la == 0 && jj_scanpos == jj_lastpos) {
1704             return false;
1705         }
1706         return false;
1707     }
1708 
1709     public SelectorParserTokenManager token_source;
1710     SimpleCharStream jj_input_stream;
1711     public Token token, jj_nt;
1712     private int jj_ntk;
1713     private Token jj_scanpos, jj_lastpos;
1714     private int jj_la;
1715     public boolean lookingAhead = false;
1716     private boolean jj_semLA;
1717 
1718     public SelectorParser(java.io.InputStream stream) {
1719         jj_input_stream = new SimpleCharStream(stream, 1, 1);
1720         token_source = new SelectorParserTokenManager(jj_input_stream);
1721         token = new Token();
1722         jj_ntk = -1;
1723     }
1724 
1725     public void ReInit(java.io.InputStream stream) {
1726         jj_input_stream.ReInit(stream, 1, 1);
1727         token_source.ReInit(jj_input_stream);
1728         token = new Token();
1729         jj_ntk = -1;
1730     }
1731 
1732     public SelectorParser(java.io.Reader stream) {
1733         jj_input_stream = new SimpleCharStream(stream, 1, 1);
1734         token_source = new SelectorParserTokenManager(jj_input_stream);
1735         token = new Token();
1736         jj_ntk = -1;
1737     }
1738 
1739     public void ReInit(java.io.Reader stream) {
1740         jj_input_stream.ReInit(stream, 1, 1);
1741         token_source.ReInit(jj_input_stream);
1742         token = new Token();
1743         jj_ntk = -1;
1744     }
1745 
1746     public SelectorParser(SelectorParserTokenManager tm) {
1747         token_source = tm;
1748         token = new Token();
1749         jj_ntk = -1;
1750     }
1751 
1752     public void ReInit(SelectorParserTokenManager tm) {
1753         token_source = tm;
1754         token = new Token();
1755         jj_ntk = -1;
1756     }
1757 
1758     final private Token jj_consume_token(int kind) throws ParseException {
1759         Token oldToken;
1760         if ((oldToken = token).next != null) {
1761             token = token.next;
1762         }
1763         else {
1764             token = token.next = token_source.getNextToken();
1765         }
1766         jj_ntk = -1;
1767         if (token.kind == kind) {
1768             return token;
1769         }
1770         token = oldToken;
1771         throw generateParseException();
1772     }
1773 
1774     final private boolean jj_scan_token(int kind) {
1775         if (jj_scanpos == jj_lastpos) {
1776             jj_la--;
1777             if (jj_scanpos.next == null) {
1778                 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1779             }
1780             else {
1781                 jj_lastpos = jj_scanpos = jj_scanpos.next;
1782             }
1783         }
1784         else {
1785             jj_scanpos = jj_scanpos.next;
1786         }
1787         return (jj_scanpos.kind != kind);
1788     }
1789 
1790     final public Token getNextToken() {
1791         if (token.next != null) {
1792             token = token.next;
1793         }
1794         else {
1795             token = token.next = token_source.getNextToken();
1796         }
1797         jj_ntk = -1;
1798         return token;
1799     }
1800 
1801     final public Token getToken(int index) {
1802         Token t = lookingAhead ? jj_scanpos : token;
1803         for (int i = 0; i < index; i++) {
1804             if (t.next != null) {
1805                 t = t.next;
1806             }
1807             else {
1808                 t = t.next = token_source.getNextToken();
1809             }
1810         }
1811         return t;
1812     }
1813 
1814     final private int jj_ntk() {
1815         if ((jj_nt = token.next) == null) {
1816             return (jj_ntk = (token.next = token_source.getNextToken()).kind);
1817         }
1818         else {
1819             return (jj_ntk = jj_nt.kind);
1820         }
1821     }
1822 
1823     final public ParseException generateParseException() {
1824         Token errortok = token.next;
1825         int line = errortok.beginLine, column = errortok.beginColumn;
1826         String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
1827         return new ParseException("Parse error at line " + line + ", column " + column + ".  Encountered: " + mess);
1828     }
1829 
1830     final public void enable_tracing() {
1831     }
1832 
1833     final public void disable_tracing() {
1834     }
1835 
1836 }