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