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