001 /* Generated By:JavaCC: Do not edit this line. SelectorParser.java */
002 /**
003 *
004 * Licensed to the Apache Software Foundation (ASF) under one or more
005 * contributor license agreements. See the NOTICE file distributed with
006 * this work for additional information regarding copyright ownership.
007 * The ASF licenses this file to You under the Apache License, Version 2.0
008 * (the "License"); you may not use this file except in compliance with
009 * the License. You may obtain a copy of the License at
010 *
011 * http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 */
019
020 package org.granite.gravity.selector;
021
022 import java.io.StringReader;
023 import java.util.ArrayList;
024
025 /**
026 * JMS Selector Parser generated by JavaCC
027 *
028 * Do not edit this .java file directly - it is autogenerated from SelectorParser.jj
029 */
030 @SuppressWarnings({"all"})
031 public class SelectorParser implements SelectorParserConstants {
032
033 public SelectorParser() {
034 this(new StringReader(""));
035 }
036
037 public BooleanExpression parse(String sql) throws Exception {
038 this.ReInit(new StringReader(sql));
039
040 try {
041 return this.JmsSelector();
042 }
043 catch (Throwable e) {
044 throw new RuntimeException("Selector parse error " + sql, e);
045 }
046
047 }
048
049 private BooleanExpression asBooleanExpression(Expression value) throws ParseException {
050 if (value instanceof BooleanExpression) {
051 return (BooleanExpression) value;
052 }
053 if (value instanceof PropertyExpression) {
054 return UnaryExpression.createBooleanCast( value );
055 }
056 throw new ParseException("Expression will not result in a boolean value: " + value);
057 }
058
059 // ----------------------------------------------------------------------------
060 // Grammer
061 // ----------------------------------------------------------------------------
062 final public BooleanExpression JmsSelector() throws ParseException {
063 Expression left=null;
064 left = orExpression();
065 {if (true) return asBooleanExpression(left);}
066 throw new Error("Missing return statement in function");
067 }
068
069 final public Expression orExpression() throws ParseException {
070 Expression left;
071 Expression right;
072 left = andExpression();
073 label_1:
074 while (true) {
075 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
076 case OR:
077 break;
078 default:
079 break label_1;
080 }
081 jj_consume_token(OR);
082 right = andExpression();
083 left = LogicExpression.createOR(asBooleanExpression(left), asBooleanExpression(right));
084 }
085 {if (true) return left;}
086 throw new Error("Missing return statement in function");
087 }
088
089 final public Expression andExpression() throws ParseException {
090 Expression left;
091 Expression right;
092 left = equalityExpression();
093 label_2:
094 while (true) {
095 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
096 case AND:
097 break;
098 default:
099 break label_2;
100 }
101 jj_consume_token(AND);
102 right = equalityExpression();
103 left = LogicExpression.createAND(asBooleanExpression(left), asBooleanExpression(right));
104 }
105 {if (true) return left;}
106 throw new Error("Missing return statement in function");
107 }
108
109 final public Expression equalityExpression() throws ParseException {
110 Expression left;
111 Expression right;
112 left = comparisonExpression();
113 label_3:
114 while (true) {
115 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
116 case IS:
117 case 28:
118 case 29:
119 break;
120 default:
121 break label_3;
122 }
123 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
124 case 28:
125 jj_consume_token(28);
126 right = comparisonExpression();
127 left = ComparisonExpression.createEqual(left, right);
128 break;
129 case 29:
130 jj_consume_token(29);
131 right = comparisonExpression();
132 left = ComparisonExpression.createNotEqual(left, right);
133 break;
134 default:
135 if (jj_2_1(2)) {
136 jj_consume_token(IS);
137 jj_consume_token(NULL);
138 left = ComparisonExpression.createIsNull(left);
139 } else {
140 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
141 case IS:
142 jj_consume_token(IS);
143 jj_consume_token(NOT);
144 jj_consume_token(NULL);
145 left = ComparisonExpression.createIsNotNull(left);
146 break;
147 default:
148 jj_consume_token(-1);
149 throw new ParseException();
150 }
151 }
152 }
153 }
154 {if (true) return left;}
155 throw new Error("Missing return statement in function");
156 }
157
158 final public Expression comparisonExpression() throws ParseException {
159 Expression left;
160 Expression right;
161 Expression low;
162 Expression high;
163 String t, u;
164 boolean not;
165 ArrayList list;
166 left = addExpression();
167 label_4:
168 while (true) {
169 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
170 case NOT:
171 case BETWEEN:
172 case LIKE:
173 case IN:
174 case 30:
175 case 31:
176 case 32:
177 case 33:
178 break;
179 default:
180 break label_4;
181 }
182 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
183 case 30:
184 jj_consume_token(30);
185 right = addExpression();
186 left = ComparisonExpression.createGreaterThan(left, right);
187 break;
188 case 31:
189 jj_consume_token(31);
190 right = addExpression();
191 left = ComparisonExpression.createGreaterThanEqual(left, right);
192 break;
193 case 32:
194 jj_consume_token(32);
195 right = addExpression();
196 left = ComparisonExpression.createLessThan(left, right);
197 break;
198 case 33:
199 jj_consume_token(33);
200 right = addExpression();
201 left = ComparisonExpression.createLessThanEqual(left, right);
202 break;
203 case LIKE:
204 u=null;
205 jj_consume_token(LIKE);
206 t = stringLitteral();
207 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
208 case ESCAPE:
209 jj_consume_token(ESCAPE);
210 u = stringLitteral();
211 break;
212 default:
213 break;
214 }
215 left = ComparisonExpression.createLike(left, t, u);
216 break;
217 default:
218 if (jj_2_2(2)) {
219 u=null;
220 jj_consume_token(NOT);
221 jj_consume_token(LIKE);
222 t = stringLitteral();
223 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
224 case ESCAPE:
225 jj_consume_token(ESCAPE);
226 u = stringLitteral();
227 break;
228 default:
229 break;
230 }
231 left = ComparisonExpression.createNotLike(left, t, u);
232 } else {
233 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
234 case BETWEEN:
235 jj_consume_token(BETWEEN);
236 low = addExpression();
237 jj_consume_token(AND);
238 high = addExpression();
239 left = ComparisonExpression.createBetween(left, low, high);
240 break;
241 default:
242 if (jj_2_3(2)) {
243 jj_consume_token(NOT);
244 jj_consume_token(BETWEEN);
245 low = addExpression();
246 jj_consume_token(AND);
247 high = addExpression();
248 left = ComparisonExpression.createNotBetween(left, low, high);
249 } else {
250 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
251 case IN:
252 jj_consume_token(IN);
253 jj_consume_token(34);
254 t = stringLitteral();
255 list = new ArrayList();
256 list.add( t );
257 label_5:
258 while (true) {
259 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
260 case 35:
261 break;
262 default:
263 break label_5;
264 }
265 jj_consume_token(35);
266 t = stringLitteral();
267 list.add( t );
268 }
269 jj_consume_token(36);
270 left = ComparisonExpression.createInFilter(left, list);
271 break;
272 default:
273 if (jj_2_4(2)) {
274 jj_consume_token(NOT);
275 jj_consume_token(IN);
276 jj_consume_token(34);
277 t = stringLitteral();
278 list = new ArrayList();
279 list.add( t );
280 label_6:
281 while (true) {
282 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
283 case 35:
284 break;
285 default:
286 break label_6;
287 }
288 jj_consume_token(35);
289 t = stringLitteral();
290 list.add( t );
291 }
292 jj_consume_token(36);
293 left = ComparisonExpression.createNotInFilter(left, list);
294 } else {
295 jj_consume_token(-1);
296 throw new ParseException();
297 }
298 }
299 }
300 }
301 }
302 }
303 }
304 {if (true) return left;}
305 throw new Error("Missing return statement in function");
306 }
307
308 final public Expression addExpression() throws ParseException {
309 Expression left;
310 Expression right;
311 left = multExpr();
312 label_7:
313 while (true) {
314 if (jj_2_5(2147483647)) {
315
316 } else {
317 break label_7;
318 }
319 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
320 case 37:
321 jj_consume_token(37);
322 right = multExpr();
323 left = ArithmeticExpression.createPlus(left, right);
324 break;
325 case 38:
326 jj_consume_token(38);
327 right = multExpr();
328 left = ArithmeticExpression.createMinus(left, right);
329 break;
330 default:
331 jj_consume_token(-1);
332 throw new ParseException();
333 }
334 }
335 {if (true) return left;}
336 throw new Error("Missing return statement in function");
337 }
338
339 final public Expression multExpr() throws ParseException {
340 Expression left;
341 Expression right;
342 left = unaryExpr();
343 label_8:
344 while (true) {
345 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
346 case 39:
347 case 40:
348 case 41:
349 break;
350 default:
351 break label_8;
352 }
353 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
354 case 39:
355 jj_consume_token(39);
356 right = unaryExpr();
357 left = ArithmeticExpression.createMultiply(left, right);
358 break;
359 case 40:
360 jj_consume_token(40);
361 right = unaryExpr();
362 left = ArithmeticExpression.createDivide(left, right);
363 break;
364 case 41:
365 jj_consume_token(41);
366 right = unaryExpr();
367 left = ArithmeticExpression.createMod(left, right);
368 break;
369 default:
370 jj_consume_token(-1);
371 throw new ParseException();
372 }
373 }
374 {if (true) return left;}
375 throw new Error("Missing return statement in function");
376 }
377
378 final public Expression unaryExpr() throws ParseException {
379 String s=null;
380 Expression left=null;
381 if (jj_2_6(2147483647)) {
382 jj_consume_token(37);
383 left = unaryExpr();
384 } else {
385 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
386 case 38:
387 jj_consume_token(38);
388 left = unaryExpr();
389 left = UnaryExpression.createNegate(left);
390 break;
391 case NOT:
392 jj_consume_token(NOT);
393 left = unaryExpr();
394 left = UnaryExpression.createNOT( asBooleanExpression(left) );
395 break;
396 case TRUE:
397 case FALSE:
398 case NULL:
399 case DECIMAL_LITERAL:
400 case HEX_LITERAL:
401 case OCTAL_LITERAL:
402 case FLOATING_POINT_LITERAL:
403 case STRING_LITERAL:
404 case ID:
405 case 34:
406 left = primaryExpr();
407 break;
408 default:
409 jj_consume_token(-1);
410 throw new ParseException();
411 }
412 }
413 {if (true) return left;}
414 throw new Error("Missing return statement in function");
415 }
416
417 final public Expression primaryExpr() throws ParseException {
418 Expression left=null;
419 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
420 case TRUE:
421 case FALSE:
422 case NULL:
423 case DECIMAL_LITERAL:
424 case HEX_LITERAL:
425 case OCTAL_LITERAL:
426 case FLOATING_POINT_LITERAL:
427 case STRING_LITERAL:
428 left = literal();
429 break;
430 case ID:
431 left = variable();
432 break;
433 case 34:
434 jj_consume_token(34);
435 left = orExpression();
436 jj_consume_token(36);
437 break;
438 default:
439 jj_consume_token(-1);
440 throw new ParseException();
441 }
442 {if (true) return left;}
443 throw new Error("Missing return statement in function");
444 }
445
446 final public ConstantExpression literal() throws ParseException {
447 Token t;
448 String s;
449 ConstantExpression left=null;
450 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
451 case STRING_LITERAL:
452 s = stringLitteral();
453 left = new ConstantExpression(s);
454 break;
455 case DECIMAL_LITERAL:
456 t = jj_consume_token(DECIMAL_LITERAL);
457 left = ConstantExpression.createFromDecimal(t.image);
458 break;
459 case HEX_LITERAL:
460 t = jj_consume_token(HEX_LITERAL);
461 left = ConstantExpression.createFromHex(t.image);
462 break;
463 case OCTAL_LITERAL:
464 t = jj_consume_token(OCTAL_LITERAL);
465 left = ConstantExpression.createFromOctal(t.image);
466 break;
467 case FLOATING_POINT_LITERAL:
468 t = jj_consume_token(FLOATING_POINT_LITERAL);
469 left = ConstantExpression.createFloat(t.image);
470 break;
471 case TRUE:
472 jj_consume_token(TRUE);
473 left = ConstantExpression.TRUE;
474 break;
475 case FALSE:
476 jj_consume_token(FALSE);
477 left = ConstantExpression.FALSE;
478 break;
479 case NULL:
480 jj_consume_token(NULL);
481 left = ConstantExpression.NULL;
482 break;
483 default:
484 jj_consume_token(-1);
485 throw new ParseException();
486 }
487 {if (true) return left;}
488 throw new Error("Missing return statement in function");
489 }
490
491 final public String stringLitteral() throws ParseException {
492 Token t;
493 StringBuffer rc = new StringBuffer();
494 boolean first=true;
495 t = jj_consume_token(STRING_LITERAL);
496 // Decode the sting value.
497 String image = t.image;
498 for( int i=1; i < image.length()-1; i++ ) {
499 char c = image.charAt(i);
500 if( c == '\'' )
501 i++;
502 rc.append(c);
503 }
504 {if (true) return rc.toString();}
505 throw new Error("Missing return statement in function");
506 }
507
508 final public PropertyExpression variable() throws ParseException {
509 Token t;
510 PropertyExpression left=null;
511 t = jj_consume_token(ID);
512 left = new PropertyExpression(t.image);
513 {if (true) return left;}
514 throw new Error("Missing return statement in function");
515 }
516
517 final private boolean jj_2_1(int xla) {
518 jj_la = xla; jj_lastpos = jj_scanpos = token;
519 try { return !jj_3_1(); }
520 catch(LookaheadSuccess ls) { return true; }
521 }
522
523 final private boolean jj_2_2(int xla) {
524 jj_la = xla; jj_lastpos = jj_scanpos = token;
525 try { return !jj_3_2(); }
526 catch(LookaheadSuccess ls) { return true; }
527 }
528
529 final private boolean jj_2_3(int xla) {
530 jj_la = xla; jj_lastpos = jj_scanpos = token;
531 try { return !jj_3_3(); }
532 catch(LookaheadSuccess ls) { return true; }
533 }
534
535 final private boolean jj_2_4(int xla) {
536 jj_la = xla; jj_lastpos = jj_scanpos = token;
537 try { return !jj_3_4(); }
538 catch(LookaheadSuccess ls) { return true; }
539 }
540
541 final private boolean jj_2_5(int xla) {
542 jj_la = xla; jj_lastpos = jj_scanpos = token;
543 try { return !jj_3_5(); }
544 catch(LookaheadSuccess ls) { return true; }
545 }
546
547 final private boolean jj_2_6(int xla) {
548 jj_la = xla; jj_lastpos = jj_scanpos = token;
549 try { return !jj_3_6(); }
550 catch(LookaheadSuccess ls) { return true; }
551 }
552
553 final private boolean jj_3R_41() {
554 if (jj_3R_9()) return true;
555 Token xsp;
556 while (true) {
557 xsp = jj_scanpos;
558 if (jj_3R_46()) { jj_scanpos = xsp; break; }
559 }
560 return false;
561 }
562
563 final private boolean jj_3R_25() {
564 if (jj_3R_34()) return true;
565 Token xsp;
566 while (true) {
567 xsp = jj_scanpos;
568 if (jj_3R_35()) { jj_scanpos = xsp; break; }
569 }
570 return false;
571 }
572
573 final private boolean jj_3R_22() {
574 if (jj_scan_token(34)) return true;
575 if (jj_3R_25()) return true;
576 if (jj_scan_token(36)) return true;
577 return false;
578 }
579
580 final private boolean jj_3R_21() {
581 if (jj_3R_24()) return true;
582 return false;
583 }
584
585 final private boolean jj_3R_20() {
586 if (jj_3R_23()) return true;
587 return false;
588 }
589
590 final private boolean jj_3R_58() {
591 if (jj_scan_token(35)) return true;
592 if (jj_3R_36()) return true;
593 return false;
594 }
595
596 final private boolean jj_3R_19() {
597 Token xsp;
598 xsp = jj_scanpos;
599 if (jj_3R_20()) {
600 jj_scanpos = xsp;
601 if (jj_3R_21()) {
602 jj_scanpos = xsp;
603 if (jj_3R_22()) return true;
604 }
605 }
606 return false;
607 }
608
609 final private boolean jj_3R_39() {
610 if (jj_3R_41()) return true;
611 Token xsp;
612 while (true) {
613 xsp = jj_scanpos;
614 if (jj_3R_42()) { jj_scanpos = xsp; break; }
615 }
616 return false;
617 }
618
619 final private boolean jj_3R_57() {
620 if (jj_scan_token(ESCAPE)) return true;
621 if (jj_3R_36()) return true;
622 return false;
623 }
624
625 final private boolean jj_3_4() {
626 if (jj_scan_token(NOT)) return true;
627 if (jj_scan_token(IN)) return true;
628 if (jj_scan_token(34)) return true;
629 if (jj_3R_36()) return true;
630 Token xsp;
631 while (true) {
632 xsp = jj_scanpos;
633 if (jj_3R_59()) { jj_scanpos = xsp; break; }
634 }
635 if (jj_scan_token(36)) return true;
636 return false;
637 }
638
639 final private boolean jj_3_6() {
640 if (jj_scan_token(37)) return true;
641 if (jj_3R_10()) return true;
642 return false;
643 }
644
645 final private boolean jj_3R_15() {
646 if (jj_3R_19()) return true;
647 return false;
648 }
649
650 final private boolean jj_3R_36() {
651 if (jj_scan_token(STRING_LITERAL)) return true;
652 return false;
653 }
654
655 final private boolean jj_3R_14() {
656 if (jj_scan_token(NOT)) return true;
657 if (jj_3R_10()) return true;
658 return false;
659 }
660
661 final private boolean jj_3R_12() {
662 if (jj_scan_token(37)) return true;
663 if (jj_3R_10()) return true;
664 return false;
665 }
666
667 final private boolean jj_3R_53() {
668 if (jj_scan_token(IN)) return true;
669 if (jj_scan_token(34)) return true;
670 if (jj_3R_36()) return true;
671 Token xsp;
672 while (true) {
673 xsp = jj_scanpos;
674 if (jj_3R_58()) { jj_scanpos = xsp; break; }
675 }
676 if (jj_scan_token(36)) return true;
677 return false;
678 }
679
680 final private boolean jj_3R_45() {
681 if (jj_scan_token(IS)) return true;
682 if (jj_scan_token(NOT)) return true;
683 if (jj_scan_token(NULL)) return true;
684 return false;
685 }
686
687 final private boolean jj_3R_13() {
688 if (jj_scan_token(38)) return true;
689 if (jj_3R_10()) return true;
690 return false;
691 }
692
693 final private boolean jj_3R_33() {
694 if (jj_scan_token(NULL)) return true;
695 return false;
696 }
697
698 final private boolean jj_3_1() {
699 if (jj_scan_token(IS)) return true;
700 if (jj_scan_token(NULL)) return true;
701 return false;
702 }
703
704 final private boolean jj_3R_10() {
705 Token xsp;
706 xsp = jj_scanpos;
707 if (jj_3R_12()) {
708 jj_scanpos = xsp;
709 if (jj_3R_13()) {
710 jj_scanpos = xsp;
711 if (jj_3R_14()) {
712 jj_scanpos = xsp;
713 if (jj_3R_15()) return true;
714 }
715 }
716 }
717 return false;
718 }
719
720 final private boolean jj_3R_44() {
721 if (jj_scan_token(29)) return true;
722 if (jj_3R_39()) return true;
723 return false;
724 }
725
726 final private boolean jj_3R_32() {
727 if (jj_scan_token(FALSE)) return true;
728 return false;
729 }
730
731 final private boolean jj_3_3() {
732 if (jj_scan_token(NOT)) return true;
733 if (jj_scan_token(BETWEEN)) return true;
734 if (jj_3R_41()) return true;
735 if (jj_scan_token(AND)) return true;
736 if (jj_3R_41()) return true;
737 return false;
738 }
739
740 final private boolean jj_3R_43() {
741 if (jj_scan_token(28)) return true;
742 if (jj_3R_39()) return true;
743 return false;
744 }
745
746 final private boolean jj_3R_40() {
747 Token xsp;
748 xsp = jj_scanpos;
749 if (jj_3R_43()) {
750 jj_scanpos = xsp;
751 if (jj_3R_44()) {
752 jj_scanpos = xsp;
753 if (jj_3_1()) {
754 jj_scanpos = xsp;
755 if (jj_3R_45()) return true;
756 }
757 }
758 }
759 return false;
760 }
761
762 final private boolean jj_3R_52() {
763 if (jj_scan_token(BETWEEN)) return true;
764 if (jj_3R_41()) return true;
765 if (jj_scan_token(AND)) return true;
766 if (jj_3R_41()) return true;
767 return false;
768 }
769
770 final private boolean jj_3R_31() {
771 if (jj_scan_token(TRUE)) return true;
772 return false;
773 }
774
775 final private boolean jj_3R_56() {
776 if (jj_scan_token(ESCAPE)) return true;
777 if (jj_3R_36()) return true;
778 return false;
779 }
780
781 final private boolean jj_3R_18() {
782 if (jj_scan_token(41)) return true;
783 if (jj_3R_10()) return true;
784 return false;
785 }
786
787 final private boolean jj_3R_30() {
788 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
789 return false;
790 }
791
792 final private boolean jj_3R_37() {
793 if (jj_3R_39()) return true;
794 Token xsp;
795 while (true) {
796 xsp = jj_scanpos;
797 if (jj_3R_40()) { jj_scanpos = xsp; break; }
798 }
799 return false;
800 }
801
802 final private boolean jj_3_2() {
803 if (jj_scan_token(NOT)) return true;
804 if (jj_scan_token(LIKE)) return true;
805 if (jj_3R_36()) return true;
806 Token xsp;
807 xsp = jj_scanpos;
808 if (jj_3R_57()) jj_scanpos = xsp;
809 return false;
810 }
811
812 final private boolean jj_3R_51() {
813 if (jj_scan_token(LIKE)) return true;
814 if (jj_3R_36()) return true;
815 Token xsp;
816 xsp = jj_scanpos;
817 if (jj_3R_56()) jj_scanpos = xsp;
818 return false;
819 }
820
821 final private boolean jj_3R_17() {
822 if (jj_scan_token(40)) return true;
823 if (jj_3R_10()) return true;
824 return false;
825 }
826
827 final private boolean jj_3R_29() {
828 if (jj_scan_token(OCTAL_LITERAL)) return true;
829 return false;
830 }
831
832 final private boolean jj_3R_16() {
833 if (jj_scan_token(39)) return true;
834 if (jj_3R_10()) return true;
835 return false;
836 }
837
838 final private boolean jj_3R_11() {
839 Token xsp;
840 xsp = jj_scanpos;
841 if (jj_3R_16()) {
842 jj_scanpos = xsp;
843 if (jj_3R_17()) {
844 jj_scanpos = xsp;
845 if (jj_3R_18()) return true;
846 }
847 }
848 return false;
849 }
850
851 final private boolean jj_3R_38() {
852 if (jj_scan_token(AND)) return true;
853 if (jj_3R_37()) return true;
854 return false;
855 }
856
857 final private boolean jj_3R_28() {
858 if (jj_scan_token(HEX_LITERAL)) return true;
859 return false;
860 }
861
862 final private boolean jj_3R_9() {
863 if (jj_3R_10()) return true;
864 Token xsp;
865 while (true) {
866 xsp = jj_scanpos;
867 if (jj_3R_11()) { jj_scanpos = xsp; break; }
868 }
869 return false;
870 }
871
872 final private boolean jj_3R_27() {
873 if (jj_scan_token(DECIMAL_LITERAL)) return true;
874 return false;
875 }
876
877 final private boolean jj_3R_55() {
878 if (jj_scan_token(38)) return true;
879 if (jj_3R_9()) return true;
880 return false;
881 }
882
883 final private boolean jj_3R_34() {
884 if (jj_3R_37()) return true;
885 Token xsp;
886 while (true) {
887 xsp = jj_scanpos;
888 if (jj_3R_38()) { jj_scanpos = xsp; break; }
889 }
890 return false;
891 }
892
893 final private boolean jj_3_5() {
894 Token xsp;
895 xsp = jj_scanpos;
896 if (jj_scan_token(37)) {
897 jj_scanpos = xsp;
898 if (jj_scan_token(38)) return true;
899 }
900 if (jj_3R_9()) return true;
901 return false;
902 }
903
904 final private boolean jj_3R_50() {
905 if (jj_scan_token(33)) return true;
906 if (jj_3R_41()) return true;
907 return false;
908 }
909
910 final private boolean jj_3R_54() {
911 if (jj_scan_token(37)) return true;
912 if (jj_3R_9()) return true;
913 return false;
914 }
915
916 final private boolean jj_3R_26() {
917 if (jj_3R_36()) return true;
918 return false;
919 }
920
921 final private boolean jj_3R_49() {
922 if (jj_scan_token(32)) return true;
923 if (jj_3R_41()) return true;
924 return false;
925 }
926
927 final private boolean jj_3R_59() {
928 if (jj_scan_token(35)) return true;
929 if (jj_3R_36()) return true;
930 return false;
931 }
932
933 final private boolean jj_3R_46() {
934 Token xsp;
935 xsp = jj_scanpos;
936 if (jj_3R_54()) {
937 jj_scanpos = xsp;
938 if (jj_3R_55()) return true;
939 }
940 return false;
941 }
942
943 final private boolean jj_3R_35() {
944 if (jj_scan_token(OR)) return true;
945 if (jj_3R_34()) return true;
946 return false;
947 }
948
949 final private boolean jj_3R_23() {
950 Token xsp;
951 xsp = jj_scanpos;
952 if (jj_3R_26()) {
953 jj_scanpos = xsp;
954 if (jj_3R_27()) {
955 jj_scanpos = xsp;
956 if (jj_3R_28()) {
957 jj_scanpos = xsp;
958 if (jj_3R_29()) {
959 jj_scanpos = xsp;
960 if (jj_3R_30()) {
961 jj_scanpos = xsp;
962 if (jj_3R_31()) {
963 jj_scanpos = xsp;
964 if (jj_3R_32()) {
965 jj_scanpos = xsp;
966 if (jj_3R_33()) return true;
967 }
968 }
969 }
970 }
971 }
972 }
973 }
974 return false;
975 }
976
977 final private boolean jj_3R_48() {
978 if (jj_scan_token(31)) return true;
979 if (jj_3R_41()) return true;
980 return false;
981 }
982
983 final private boolean jj_3R_47() {
984 if (jj_scan_token(30)) return true;
985 if (jj_3R_41()) return true;
986 return false;
987 }
988
989 final private boolean jj_3R_42() {
990 Token xsp;
991 xsp = jj_scanpos;
992 if (jj_3R_47()) {
993 jj_scanpos = xsp;
994 if (jj_3R_48()) {
995 jj_scanpos = xsp;
996 if (jj_3R_49()) {
997 jj_scanpos = xsp;
998 if (jj_3R_50()) {
999 jj_scanpos = xsp;
1000 if (jj_3R_51()) {
1001 jj_scanpos = xsp;
1002 if (jj_3_2()) {
1003 jj_scanpos = xsp;
1004 if (jj_3R_52()) {
1005 jj_scanpos = xsp;
1006 if (jj_3_3()) {
1007 jj_scanpos = xsp;
1008 if (jj_3R_53()) {
1009 jj_scanpos = xsp;
1010 if (jj_3_4()) return true;
1011 }
1012 }
1013 }
1014 }
1015 }
1016 }
1017 }
1018 }
1019 }
1020 return false;
1021 }
1022
1023 final private boolean jj_3R_24() {
1024 if (jj_scan_token(ID)) return true;
1025 return false;
1026 }
1027
1028 public SelectorParserTokenManager token_source;
1029 SimpleCharStream jj_input_stream;
1030 public Token token, jj_nt;
1031 private int jj_ntk;
1032 private Token jj_scanpos, jj_lastpos;
1033 private int jj_la;
1034 public boolean lookingAhead = false;
1035 private boolean jj_semLA;
1036
1037 public SelectorParser(java.io.InputStream stream) {
1038 this(stream, null);
1039 }
1040 public SelectorParser(java.io.InputStream stream, String encoding) {
1041 try { jj_input_stream = new SimpleCharStream(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
1042 token_source = new SelectorParserTokenManager(jj_input_stream);
1043 token = new Token();
1044 jj_ntk = -1;
1045 }
1046
1047 public void ReInit(java.io.InputStream stream) {
1048 ReInit(stream, null);
1049 }
1050 public void ReInit(java.io.InputStream stream, String encoding) {
1051 try { jj_input_stream.ReInit(stream, encoding, 1, 1); } catch(java.io.UnsupportedEncodingException e) { throw new RuntimeException(e); }
1052 token_source.ReInit(jj_input_stream);
1053 token = new Token();
1054 jj_ntk = -1;
1055 }
1056
1057 public SelectorParser(java.io.Reader stream) {
1058 jj_input_stream = new SimpleCharStream(stream, 1, 1);
1059 token_source = new SelectorParserTokenManager(jj_input_stream);
1060 token = new Token();
1061 jj_ntk = -1;
1062 }
1063
1064 public void ReInit(java.io.Reader stream) {
1065 jj_input_stream.ReInit(stream, 1, 1);
1066 token_source.ReInit(jj_input_stream);
1067 token = new Token();
1068 jj_ntk = -1;
1069 }
1070
1071 public SelectorParser(SelectorParserTokenManager tm) {
1072 token_source = tm;
1073 token = new Token();
1074 jj_ntk = -1;
1075 }
1076
1077 public void ReInit(SelectorParserTokenManager tm) {
1078 token_source = tm;
1079 token = new Token();
1080 jj_ntk = -1;
1081 }
1082
1083 final private Token jj_consume_token(int kind) throws ParseException {
1084 Token oldToken;
1085 if ((oldToken = token).next != null) token = token.next;
1086 else token = token.next = token_source.getNextToken();
1087 jj_ntk = -1;
1088 if (token.kind == kind) {
1089 return token;
1090 }
1091 token = oldToken;
1092 throw generateParseException();
1093 }
1094
1095 static private final class LookaheadSuccess extends java.lang.Error {
1096 private static final long serialVersionUID = 1L; }
1097 final private LookaheadSuccess jj_ls = new LookaheadSuccess();
1098 final private boolean jj_scan_token(int kind) {
1099 if (jj_scanpos == jj_lastpos) {
1100 jj_la--;
1101 if (jj_scanpos.next == null) {
1102 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
1103 } else {
1104 jj_lastpos = jj_scanpos = jj_scanpos.next;
1105 }
1106 } else {
1107 jj_scanpos = jj_scanpos.next;
1108 }
1109 if (jj_scanpos.kind != kind) return true;
1110 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
1111 return false;
1112 }
1113
1114 final public Token getNextToken() {
1115 if (token.next != null) token = token.next;
1116 else token = token.next = token_source.getNextToken();
1117 jj_ntk = -1;
1118 return token;
1119 }
1120
1121 final public Token getToken(int index) {
1122 Token t = lookingAhead ? jj_scanpos : token;
1123 for (int i = 0; i < index; i++) {
1124 if (t.next != null) t = t.next;
1125 else t = t.next = token_source.getNextToken();
1126 }
1127 return t;
1128 }
1129
1130 final private int jj_ntk() {
1131 if ((jj_nt=token.next) == null)
1132 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
1133 return (jj_ntk = jj_nt.kind);
1134 }
1135
1136 public ParseException generateParseException() {
1137 Token errortok = token.next;
1138 int line = errortok.beginLine, column = errortok.beginColumn;
1139 String mess = (errortok.kind == 0) ? tokenImage[0] : errortok.image;
1140 return new ParseException("Parse error at line " + line + ", column " + column + ". Encountered: " + mess);
1141 }
1142
1143 final public void enable_tracing() {
1144 }
1145
1146 final public void disable_tracing() {
1147 }
1148
1149 }