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 041package org.granite.gravity.selector; 042 043import java.io.StringReader; 044import 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"}) 052public 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}