1 /* Generated By:JJTree&JavaCC: Do not edit this line. StandardParser.java */ 2 package org.apache.velocity.runtime.parser; 3 import org.apache.velocity.runtime.parser.node.*; 4 5 6 import java.io.*; 7 import java.util.*; 8 import org.apache.velocity.Template; 9 import org.apache.velocity.exception.VelocityException; 10 import org.apache.velocity.runtime.RuntimeServices; 11 import org.apache.velocity.runtime.parser.*; 12 import org.apache.velocity.runtime.parser.node.*; 13 import org.apache.velocity.runtime.directive.*; 14 import org.apache.velocity.runtime.directive.MacroParseException; 15 import org.apache.velocity.runtime.RuntimeConstants; 16 import static org.apache.velocity.runtime.RuntimeConstants.SpaceGobbling; 17 18 import org.slf4j.Logger; 19 20 /** 21 * This class is responsible for parsing a Velocity 22 * template. This class was generated by JavaCC using 23 * the JJTree extension to produce an Abstract 24 * Syntax Tree (AST) of the template. 25 * 26 * Please look at the Parser.jjt file which is 27 * what controls the generation of this class. 28 * 29 * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a> 30 * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a> 31 * @author <a href="hps@intermeta.de">Henning P. Schmiedehausen</a> 32 * @version $Id$ 33 */ 34 public class StandardParser implements/*@bgen(jjtree)*/ StandardParserTreeConstants,Parser, StandardParserConstants {/*@bgen(jjtree)*/ 35 protected JJTStandardParserState jjtree = new JJTStandardParserState();/** 36 * Parser debugging flag. 37 * When debug is active, javacc Parser will contain (among other things) 38 * a trace_call() method. So we use the presence of this method to 39 * initialize our flag. 40 */ 41 private static boolean debugParser; 42 static 43 { 44 try 45 { 46 StandardParser.class.getDeclaredMethod("trace_call", String.class); 47 debugParser = true; 48 } 49 catch(NoSuchMethodException nsfe) 50 { 51 debugParser = false; 52 } 53 } 54 55 /** 56 * Our own trace method. Use sparsingly in production, since each 57 * and every call will introduce an execution branch and slow down parsing. 58 */ trace(String message)59 public static void trace(String message) 60 { 61 if (debugParser) System.out.println(message); 62 } 63 64 /** 65 * Keep track of defined macros, used for escape processing 66 */ 67 private Map macroNames = new HashMap(); 68 69 /** 70 * Current template we are parsing. Passed to us in parse() 71 */ 72 public Template currentTemplate = null; 73 74 /** 75 * Set to true if the property 76 * RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE is set to true 77 */ 78 public boolean strictEscape = false; 79 80 /** 81 * Set to true if the propoerty 82 * RuntimeConstants.PARSER_HYPHEN_ALLOWED is set to true 83 */ 84 public boolean hyphenAllowedInIdentifiers = false; 85 86 VelocityCharStream velcharstream = null; 87 88 private RuntimeServices rsvc = null; 89 90 @Override getRuntimeServices()91 public RuntimeServices getRuntimeServices() 92 { 93 return rsvc; 94 } 95 96 private Logger log = null; 97 98 /** 99 * This constructor was added to allow the re-use of parsers. 100 * The normal constructor takes a single argument which 101 * an InputStream. This simply creates a re-usable parser 102 * object, we satisfy the requirement of an InputStream 103 * by using a newline character as an input stream. 104 */ StandardParser( RuntimeServices rs)105 public StandardParser( RuntimeServices rs) 106 { 107 /* 108 * need to call the CTOR first thing. 109 */ 110 111 this( new VelocityCharStream( 112 new ByteArrayInputStream("\u005cn".getBytes()), 1, 1 )); 113 114 /* 115 * then initialize logger 116 */ 117 118 log = rs.getLog("parser"); 119 120 121 /* 122 * now setup a VCS for later use 123 */ 124 velcharstream = new VelocityCharStream( 125 new ByteArrayInputStream("\u005cn".getBytes()), 1, 1 ); 126 127 128 strictEscape = 129 rs.getBoolean(RuntimeConstants.RUNTIME_REFERENCES_STRICT_ESCAPE, false); 130 131 hyphenAllowedInIdentifiers = 132 rs.getBoolean(RuntimeConstants.PARSER_HYPHEN_ALLOWED, false); 133 134 /* 135 * and save the RuntimeServices 136 */ 137 rsvc = rs; 138 139 /* 140 * then initialize customizable characters 141 */ 142 dollar = '$'; 143 hash = '#'; 144 at = '@'; 145 asterisk = '*'; 146 } 147 148 /** 149 * This was also added to allow parsers to be 150 * re-usable. Normal JavaCC use entails passing an 151 * input stream to the constructor and the parsing 152 * process is carried out once. We want to be able 153 * to re-use parsers: we do this by adding this 154 * method and re-initializing the lexer with 155 * the new stream that we want parsed. 156 */ 157 @Override parse( Reader reader, Template template )158 public SimpleNode parse( Reader reader, Template template ) 159 throws ParseException 160 { 161 SimpleNode sn = null; 162 163 currentTemplate = template; 164 165 try 166 { 167 token_source.clearStateVars(); 168 169 /* 170 * reinitialize the VelocityCharStream 171 * with the new reader 172 */ 173 velcharstream.ReInit( reader, 1, 1 ); 174 175 /* 176 * now reinit the Parser with this CharStream 177 */ 178 ReInit( velcharstream ); 179 180 /* 181 * do that voodoo... 182 */ 183 sn = process(); 184 } 185 catch (MacroParseException mee) 186 { 187 /* 188 * thrown by the Macro class when something is amiss in the 189 * Macro specification 190 */ 191 log.error("{}: {}", template.getName(), mee.getMessage(), mee); 192 throw mee; 193 } 194 catch (ParseException pe) 195 { 196 log.error("{}: {}", currentTemplate.getName(), pe.getMessage()); 197 throw new TemplateParseException (pe.currentToken, 198 pe.expectedTokenSequences, pe.tokenImage, currentTemplate.getName()); 199 } 200 catch (TokenMgrError tme) 201 { 202 throw new ParseException("Lexical error: " + tme.toString()); 203 } 204 catch (Exception e) 205 { 206 String msg = template.getName() + ": " + e.getMessage(); 207 log.error(msg, e); 208 throw new VelocityException(msg, e, getRuntimeServices().getLogContext().getStackTrace()); 209 } 210 211 currentTemplate = null; 212 213 return sn; 214 } 215 216 /** 217 * This method gets a Directive from the directives Hashtable 218 */ 219 @Override getDirective(String directive)220 public Directive getDirective(String directive) 221 { 222 return (Directive) rsvc.getDirective(directive); 223 } 224 225 /** 226 * This method finds out of the directive exists in the directives Map. 227 */ 228 @Override isDirective(String directive)229 public boolean isDirective(String directive) 230 { 231 return rsvc.getDirective(directive) != null; 232 } 233 234 235 /** 236 * Produces a processed output for an escaped control or 237 * pluggable directive 238 */ escapedDirective( String strImage )239 private String escapedDirective( String strImage ) 240 { 241 int iLast = strImage.lastIndexOf("\u005c\u005c"); 242 243 String strDirective = strImage.substring(iLast + 1); 244 245 boolean bRecognizedDirective = false; 246 247 // we don't have to call substring method all the time in this method 248 String dirTag = strDirective.substring(1); 249 if (dirTag.charAt(0) == '{') 250 { 251 dirTag = dirTag.substring(1, dirTag.length() - 1); 252 } 253 254 /* 255 * If this is a predefined derective or if we detect 256 * a macro definition (this is aproximate at best) then 257 * we absorb the forward slash. If in strict reference 258 * mode then we always absord the forward slash regardless 259 * if the derective is defined or not. 260 */ 261 262 if (strictEscape 263 || isDirective(dirTag) 264 || macroNames.containsKey(dirTag) 265 || rsvc.isVelocimacro(dirTag, currentTemplate)) 266 { 267 bRecognizedDirective = true; 268 } 269 else 270 { 271 /* order for speed? */ 272 273 if ( dirTag.equals("if") 274 || dirTag.equals("end") 275 || dirTag.equals("set") 276 || dirTag.equals("else") 277 || dirTag.equals("elseif") 278 ) 279 { 280 bRecognizedDirective = true; 281 } 282 } 283 284 /* 285 * if so, make the proper prefix string (let the escapes do their thing..) 286 * otherwise, just return what it is.. 287 */ 288 289 if (bRecognizedDirective) 290 return ( strImage.substring(0,iLast/2) + strDirective); 291 else 292 return ( strImage ); 293 } 294 295 /** 296 * Check whether there is a left parenthesis with leading optional 297 * whitespaces. This method is used in the semantic look ahead of 298 * Directive method. This is done in code instead of as a production 299 * for simplicity and efficiency. 300 */ isLeftParenthesis()301 private boolean isLeftParenthesis() 302 { 303 char c; 304 int no = 0; 305 try { 306 while(true) 307 { 308 /** 309 * Read a character 310 */ 311 c = velcharstream.readChar(); 312 no++; 313 if (c == '(') 314 { 315 return true; 316 } 317 /** 318 * if not a white space return 319 */ 320 else if (c != ' ' && c != '\u005cn' && c != '\u005cr' && c != '\u005ct') 321 { 322 return false; 323 } 324 } 325 } 326 catch(IOException e) 327 { 328 } 329 finally 330 { 331 /** 332 * Backup the stream to the initial state 333 */ 334 velcharstream.backup(no); 335 } 336 return false; 337 } 338 339 /** 340 * Check whether there is a right parenthesis with leading optional 341 * whitespaces. This method is used in the semantic look ahead of 342 * Directive method. This is done in code instead of as a production 343 * for simplicity and efficiency. 344 */ isRightParenthesis()345 private boolean isRightParenthesis() 346 { 347 char c; 348 int no = -1; 349 try { 350 while(true) 351 { 352 /** 353 * Read a character 354 */ 355 if (no == -1) 356 { 357 switch (getToken(1).kind) 358 { 359 case RPAREN: 360 return true; 361 case WHITESPACE: 362 case NEWLINE: 363 no = 0; 364 break; 365 default: 366 return false; 367 } 368 } 369 c = velcharstream.readChar(); 370 no++; 371 if (c == ')') 372 { 373 return true; 374 } 375 /** 376 * if not a white space return 377 */ 378 else if (c != ' ' && c != '\u005cn' && c != '\u005cr' && c != '\u005ct') 379 { 380 return false; 381 } 382 } 383 } 384 catch(IOException e) 385 { 386 } 387 finally 388 { 389 /** 390 * Backup the stream to the initial state 391 */ 392 if (no > 0) velcharstream.backup(no); 393 } 394 return false; 395 } 396 397 /** 398 * We use this method in a lookahead to determine if we are in a macro 399 * default value assignment. The standard lookahead is not smart enough. 400 * here we look for the equals after the reference. 401 */ isAssignment()402 private boolean isAssignment() 403 { 404 // Basically if the last character read was not '$' then false 405 if (token_source.getCurrentLexicalState() != REFERENCE) return false; 406 407 char c = ' '; 408 int backup = 0; 409 try 410 { 411 // Read through any white space 412 while(Character.isWhitespace(c)) 413 { 414 c = velcharstream.readChar(); 415 backup++; 416 } 417 418 // This is what we are ultimately looking for 419 if (c != '=') return false; 420 } 421 catch (IOException e) 422 { 423 } 424 finally 425 { 426 velcharstream.backup(backup); 427 } 428 429 return true; 430 } 431 432 @Override getCurrentTemplate()433 public Template getCurrentTemplate() 434 { 435 return currentTemplate; 436 } 437 438 @Override resetCurrentTemplate()439 public void resetCurrentTemplate() 440 { 441 currentTemplate = null; 442 } 443 444 @Override dollar()445 public char dollar() 446 { 447 return dollar; 448 } 449 450 @Override hash()451 public char hash() 452 { 453 return hash; 454 } 455 456 @Override at()457 public char at() 458 { 459 return at; 460 } 461 462 @Override asterisk()463 public char asterisk() 464 { 465 return asterisk; 466 } 467 468 private char dollar = '$'; 469 private char hash = '#'; 470 private char at = '@'; 471 private char asterisk = '*'; 472 473 /** 474 * This method is what starts the whole parsing 475 * process. After the parsing is complete and 476 * the template has been turned into an AST, 477 * this method returns the root of AST which 478 * can subsequently be traversed by a visitor 479 * which implements the ParserVisitor interface 480 * which is generated automatically by JavaCC 481 */ process()482 final public SimpleNode process() throws ParseException { 483 /*@bgen(jjtree) process */ 484 ASTprocess jjtn000 = new ASTprocess(this, JJTPROCESS); 485 boolean jjtc000 = true; 486 jjtree.openNodeScope(jjtn000);boolean afterNewline = true; 487 try { 488 label_1: 489 while (true) { 490 if (getToken(1).kind != EOF) { 491 ; 492 } else { 493 break label_1; 494 } 495 afterNewline = Statement(afterNewline); 496 } 497 jj_consume_token(0); 498 jjtree.closeNodeScope(jjtn000, true); 499 jjtc000 = false; 500 {if (true) return jjtn000;} 501 } catch (Throwable jjte000) { 502 if (jjtc000) { 503 jjtree.clearNodeScope(jjtn000); 504 jjtc000 = false; 505 } else { 506 jjtree.popNode(); 507 } 508 if (jjte000 instanceof RuntimeException) { 509 {if (true) throw (RuntimeException)jjte000;} 510 } 511 if (jjte000 instanceof ParseException) { 512 {if (true) throw (ParseException)jjte000;} 513 } 514 {if (true) throw (Error)jjte000;} 515 } finally { 516 if (jjtc000) { 517 jjtree.closeNodeScope(jjtn000, true); 518 } 519 } 520 throw new Error("Missing return statement in function"); 521 } 522 523 /** 524 * These are the types of statements that 525 * are acceptable in Velocity templates. 526 */ Statement(boolean afterNewline)527 final public boolean Statement(boolean afterNewline) throws ParseException { 528 if (getToken(1).kind == IF_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == IF_DIRECTIVE) { 529 afterNewline = IfStatement(afterNewline); 530 {if (true) return afterNewline;} 531 } else if (jj_2_1(2)) { 532 Reference(); 533 {if (true) return false;} 534 } else if (jj_2_2(2)) { 535 afterNewline = Comment(); 536 {if (true) return afterNewline;} 537 } else { 538 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 539 case TEXTBLOCK: 540 Textblock(); 541 {if (true) return false;} 542 break; 543 default: 544 jj_la1[1] = jj_gen; 545 if (getToken(1).kind == SET_DIRECTIVE || afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == SET_DIRECTIVE) { 546 afterNewline = SetDirective(afterNewline); 547 {if (true) return afterNewline;} 548 } else { 549 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 550 case ESCAPE_DIRECTIVE: 551 EscapedDirective(); 552 {if (true) return false;} 553 break; 554 case DOUBLE_ESCAPE: 555 Escape(); 556 {if (true) return false;} 557 break; 558 default: 559 jj_la1[2] = jj_gen; 560 if (getToken(1).kind == WORD || getToken(1).kind == BRACKETED_WORD || afterNewline && getToken(1).kind == WHITESPACE && ( getToken(2).kind == WORD || getToken(2).kind == BRACKETED_WORD )) { 561 afterNewline = Directive(afterNewline); 562 {if (true) return afterNewline;} 563 } else { 564 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 565 case LONE_SYMBOL: 566 case PIPE: 567 case LPAREN: 568 case RPAREN: 569 case STRING_LITERAL: 570 case INTEGER_LITERAL: 571 case FLOATING_POINT_LITERAL: 572 case DOT: 573 case LCURLY: 574 case RCURLY: 575 case ESCAPE: 576 case TEXT: 577 case EMPTY_INDEX: 578 afterNewline = Text(); 579 {if (true) return afterNewline;} 580 break; 581 case NEWLINE: 582 ASTText jjtn001 = new ASTText(this, JJTTEXT); 583 boolean jjtc001 = true; 584 jjtree.openNodeScope(jjtn001); 585 try { 586 jj_consume_token(NEWLINE); 587 } finally { 588 if (jjtc001) { 589 jjtree.closeNodeScope(jjtn001, true); 590 } 591 } 592 {if (true) return true;} 593 break; 594 case INLINE_TEXT: 595 ASTText jjtn002 = new ASTText(this, JJTTEXT); 596 boolean jjtc002 = true; 597 jjtree.openNodeScope(jjtn002); 598 try { 599 jj_consume_token(INLINE_TEXT); 600 afterNewline = false; 601 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 602 case TEXT: 603 jj_consume_token(TEXT); 604 afterNewline = true; 605 break; 606 default: 607 jj_la1[0] = jj_gen; 608 ; 609 } 610 } finally { 611 if (jjtc002) { 612 jjtree.closeNodeScope(jjtn002, true); 613 } 614 } 615 {if (true) return afterNewline;} 616 break; 617 case WHITESPACE: 618 ASTText jjtn003 = new ASTText(this, JJTTEXT); 619 boolean jjtc003 = true; 620 jjtree.openNodeScope(jjtn003); 621 try { 622 jj_consume_token(WHITESPACE); 623 } finally { 624 if (jjtc003) { 625 jjtree.closeNodeScope(jjtn003, true); 626 } 627 } 628 {if (true) return false;} 629 break; 630 case SUFFIX: 631 ASTText jjtn004 = new ASTText(this, JJTTEXT); 632 boolean jjtc004 = true; 633 jjtree.openNodeScope(jjtn004); 634 try { 635 jj_consume_token(SUFFIX); 636 } finally { 637 if (jjtc004) { 638 jjtree.closeNodeScope(jjtn004, true); 639 } 640 } 641 {if (true) return true;} 642 break; 643 default: 644 jj_la1[3] = jj_gen; 645 if (jj_2_3(2)) { 646 EndingZeroWidthWhitespace(); 647 {if (true) return afterNewline;} 648 } else { 649 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 650 case LOGICAL_OR_2: 651 ASTText jjtn005 = new ASTText(this, JJTTEXT); 652 boolean jjtc005 = true; 653 jjtree.openNodeScope(jjtn005); 654 try { 655 jj_consume_token(LOGICAL_OR_2); 656 } finally { 657 if (jjtc005) { 658 jjtree.closeNodeScope(jjtn005, true); 659 } 660 } 661 {if (true) return afterNewline;} 662 break; 663 case ZERO_WIDTH_WHITESPACE: 664 ASTText jjtn006 = new ASTText(this, JJTTEXT); 665 boolean jjtc006 = true; 666 jjtree.openNodeScope(jjtn006); 667 try { 668 jj_consume_token(ZERO_WIDTH_WHITESPACE); 669 } finally { 670 if (jjtc006) { 671 jjtree.closeNodeScope(jjtn006, true); 672 } 673 } 674 afterNewline = !afterNewline; {if (true) return false;} 675 break; 676 default: 677 jj_la1[4] = jj_gen; 678 jj_consume_token(-1); 679 throw new ParseException(); 680 } 681 } 682 } 683 } 684 } 685 } 686 } 687 } 688 throw new Error("Missing return statement in function"); 689 } 690 EndingZeroWidthWhitespace()691 final public void EndingZeroWidthWhitespace() throws ParseException { 692 jj_consume_token(ZERO_WIDTH_WHITESPACE); 693 jj_consume_token(0); 694 695 } 696 697 /** 698 * used to separate the notion of a valid directive that has been 699 * escaped, versus something that looks like a directive and 700 * is just schmoo. This is important to do as a separate production 701 * that creates a node, because we want this, in either case, to stop 702 * the further parsing of the Directive() tree. 703 */ EscapedDirective()704 final public void EscapedDirective() throws ParseException { 705 /*@bgen(jjtree) EscapedDirective */ 706 ASTEscapedDirective jjtn000 = new ASTEscapedDirective(this, JJTESCAPEDDIRECTIVE); 707 boolean jjtc000 = true; 708 jjtree.openNodeScope(jjtn000); 709 try { 710 Token t = null; 711 t = jj_consume_token(ESCAPE_DIRECTIVE); 712 jjtree.closeNodeScope(jjtn000, true); 713 jjtc000 = false; 714 /* 715 * churn and burn.. 716 */ 717 t.image = escapedDirective( t.image ); 718 } finally { 719 if (jjtc000) { 720 jjtree.closeNodeScope(jjtn000, true); 721 } 722 } 723 } 724 725 /** 726 * Used to catch and process escape sequences in grammatical constructs 727 * as escapes outside of VTL are just characters. Right now we have both 728 * this and the EscapeDirective() construction because in the EscapeDirective() 729 * case, we want to suck in the #<directive> and here we don't. We just want 730 * the escapes to render correctly 731 */ Escape()732 final public void Escape() throws ParseException { 733 /*@bgen(jjtree) Escape */ 734 ASTEscape jjtn000 = new ASTEscape(this, JJTESCAPE); 735 boolean jjtc000 = true; 736 jjtree.openNodeScope(jjtn000); 737 try { 738 Token t = null; 739 int count = 0; 740 boolean control = false; 741 label_2: 742 while (true) { 743 t = jj_consume_token(DOUBLE_ESCAPE); 744 count++; 745 if (jj_2_4(2)) { 746 ; 747 } else { 748 break label_2; 749 } 750 } 751 jjtree.closeNodeScope(jjtn000, true); 752 jjtc000 = false; 753 /* 754 * first, check to see if we have a control directive 755 */ 756 switch(t.next.kind ) { 757 case IF_DIRECTIVE : 758 case ELSE : 759 case ELSEIF : 760 case END : 761 control = true; 762 break; 763 } 764 765 /* 766 * if that failed, lets lookahead to see if we matched a PD or a VM 767 */ 768 String nTag = t.next.image.substring(1); 769 if (strictEscape 770 || isDirective(nTag) 771 || macroNames.containsKey(nTag) 772 || rsvc.isVelocimacro(nTag, currentTemplate)) 773 { 774 control = true; 775 } 776 777 jjtn000.val = ""; 778 779 for( int i = 0; i < count; i++) 780 jjtn000.val += ( control ? "\u005c\u005c" : "\u005c\u005c\u005c\u005c"); 781 } finally { 782 if (jjtc000) { 783 jjtree.closeNodeScope(jjtn000, true); 784 } 785 } 786 } 787 Comment()788 final public boolean Comment() throws ParseException { 789 /*@bgen(jjtree) Comment */ 790 ASTComment jjtn000 = new ASTComment(this, JJTCOMMENT); 791 boolean jjtc000 = true; 792 jjtree.openNodeScope(jjtn000); 793 try { 794 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 795 case SINGLE_LINE_COMMENT_START: 796 jj_consume_token(SINGLE_LINE_COMMENT_START); 797 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 798 case SINGLE_LINE_COMMENT: 799 jj_consume_token(SINGLE_LINE_COMMENT); 800 break; 801 default: 802 jj_la1[5] = jj_gen; 803 ; 804 } 805 jjtree.closeNodeScope(jjtn000, true); 806 jjtc000 = false; 807 {if (true) return true;} 808 break; 809 case MULTI_LINE_COMMENT: 810 jj_consume_token(MULTI_LINE_COMMENT); 811 jjtree.closeNodeScope(jjtn000, true); 812 jjtc000 = false; 813 {if (true) return false;} 814 break; 815 case FORMAL_COMMENT: 816 jj_consume_token(FORMAL_COMMENT); 817 jjtree.closeNodeScope(jjtn000, true); 818 jjtc000 = false; 819 {if (true) return false;} 820 break; 821 default: 822 jj_la1[6] = jj_gen; 823 jj_consume_token(-1); 824 throw new ParseException(); 825 } 826 } finally { 827 if (jjtc000) { 828 jjtree.closeNodeScope(jjtn000, true); 829 } 830 } 831 throw new Error("Missing return statement in function"); 832 } 833 Textblock()834 final public void Textblock() throws ParseException { 835 /*@bgen(jjtree) Textblock */ 836 ASTTextblock jjtn000 = new ASTTextblock(this, JJTTEXTBLOCK); 837 boolean jjtc000 = true; 838 jjtree.openNodeScope(jjtn000); 839 try { 840 jj_consume_token(TEXTBLOCK); 841 } finally { 842 if (jjtc000) { 843 jjtree.closeNodeScope(jjtn000, true); 844 } 845 } 846 } 847 FloatingPointLiteral()848 final public void FloatingPointLiteral() throws ParseException { 849 /*@bgen(jjtree) FloatingPointLiteral */ 850 ASTFloatingPointLiteral jjtn000 = new ASTFloatingPointLiteral(this, JJTFLOATINGPOINTLITERAL); 851 boolean jjtc000 = true; 852 jjtree.openNodeScope(jjtn000); 853 try { 854 jj_consume_token(FLOATING_POINT_LITERAL); 855 } finally { 856 if (jjtc000) { 857 jjtree.closeNodeScope(jjtn000, true); 858 } 859 } 860 } 861 IntegerLiteral()862 final public void IntegerLiteral() throws ParseException { 863 /*@bgen(jjtree) IntegerLiteral */ 864 ASTIntegerLiteral jjtn000 = new ASTIntegerLiteral(this, JJTINTEGERLITERAL); 865 boolean jjtc000 = true; 866 jjtree.openNodeScope(jjtn000); 867 try { 868 jj_consume_token(INTEGER_LITERAL); 869 } finally { 870 if (jjtc000) { 871 jjtree.closeNodeScope(jjtn000, true); 872 } 873 } 874 } 875 StringLiteral()876 final public void StringLiteral() throws ParseException { 877 /*@bgen(jjtree) StringLiteral */ 878 ASTStringLiteral jjtn000 = new ASTStringLiteral(this, JJTSTRINGLITERAL); 879 boolean jjtc000 = true; 880 jjtree.openNodeScope(jjtn000); 881 try { 882 jj_consume_token(STRING_LITERAL); 883 } finally { 884 if (jjtc000) { 885 jjtree.closeNodeScope(jjtn000, true); 886 } 887 } 888 } 889 890 /** 891 * This method corresponds to variable 892 * references in Velocity templates. 893 * The following are examples of variable 894 * references that may be found in a 895 * template: 896 * 897 * $foo 898 * $bar 899 * 900 */ Identifier()901 final public void Identifier() throws ParseException { 902 /*@bgen(jjtree) Identifier */ 903 ASTIdentifier jjtn000 = new ASTIdentifier(this, JJTIDENTIFIER); 904 boolean jjtc000 = true; 905 jjtree.openNodeScope(jjtn000); 906 try { 907 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 908 case IDENTIFIER: 909 jj_consume_token(IDENTIFIER); 910 break; 911 case OLD_IDENTIFIER: 912 jj_consume_token(OLD_IDENTIFIER); 913 break; 914 default: 915 jj_la1[7] = jj_gen; 916 jj_consume_token(-1); 917 throw new ParseException(); 918 } 919 } finally { 920 if (jjtc000) { 921 jjtree.closeNodeScope(jjtn000, true); 922 } 923 } 924 } 925 Word()926 final public void Word() throws ParseException { 927 /*@bgen(jjtree) Word */ 928 ASTWord jjtn000 = new ASTWord(this, JJTWORD); 929 boolean jjtc000 = true; 930 jjtree.openNodeScope(jjtn000); 931 try { 932 jj_consume_token(WORD); 933 } finally { 934 if (jjtc000) { 935 jjtree.closeNodeScope(jjtn000, true); 936 } 937 } 938 } 939 940 /** 941 * Supports the arguments for the Pluggable Directives 942 */ DirectiveArg()943 final public int DirectiveArg() throws ParseException { 944 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 945 case IDENTIFIER: 946 case OLD_IDENTIFIER: 947 case LCURLY: 948 Reference(); 949 {if (true) return ParserTreeConstants.JJTREFERENCE;} 950 break; 951 case WORD: 952 Word(); 953 {if (true) return ParserTreeConstants.JJTWORD;} 954 break; 955 case STRING_LITERAL: 956 StringLiteral(); 957 {if (true) return ParserTreeConstants.JJTSTRINGLITERAL;} 958 break; 959 case INTEGER_LITERAL: 960 IntegerLiteral(); 961 {if (true) return ParserTreeConstants.JJTINTEGERLITERAL;} 962 break; 963 default: 964 jj_la1[8] = jj_gen; 965 if (jj_2_5(2147483647)) { 966 IntegerRange(); 967 {if (true) return ParserTreeConstants.JJTINTEGERRANGE;} 968 } else { 969 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 970 case FLOATING_POINT_LITERAL: 971 FloatingPointLiteral(); 972 {if (true) return ParserTreeConstants.JJTFLOATINGPOINTLITERAL;} 973 break; 974 case LEFT_CURLEY: 975 Map(); 976 {if (true) return ParserTreeConstants.JJTMAP;} 977 break; 978 case LBRACKET: 979 ObjectArray(); 980 {if (true) return ParserTreeConstants.JJTOBJECTARRAY;} 981 break; 982 case TRUE: 983 True(); 984 {if (true) return ParserTreeConstants.JJTTRUE;} 985 break; 986 case FALSE: 987 False(); 988 {if (true) return ParserTreeConstants.JJTFALSE;} 989 break; 990 default: 991 jj_la1[9] = jj_gen; 992 jj_consume_token(-1); 993 throw new ParseException(); 994 } 995 } 996 } 997 throw new Error("Missing return statement in function"); 998 } 999 DirectiveAssign()1000 final public void DirectiveAssign() throws ParseException { 1001 /*@bgen(jjtree) DirectiveAssign */ 1002 ASTDirectiveAssign jjtn000 = new ASTDirectiveAssign(this, JJTDIRECTIVEASSIGN); 1003 boolean jjtc000 = true; 1004 jjtree.openNodeScope(jjtn000); 1005 try { 1006 Reference(); 1007 } catch (Throwable jjte000) { 1008 if (jjtc000) { 1009 jjtree.clearNodeScope(jjtn000); 1010 jjtc000 = false; 1011 } else { 1012 jjtree.popNode(); 1013 } 1014 if (jjte000 instanceof RuntimeException) { 1015 {if (true) throw (RuntimeException)jjte000;} 1016 } 1017 if (jjte000 instanceof ParseException) { 1018 {if (true) throw (ParseException)jjte000;} 1019 } 1020 {if (true) throw (Error)jjte000;} 1021 } finally { 1022 if (jjtc000) { 1023 jjtree.closeNodeScope(jjtn000, true); 1024 } 1025 } 1026 } 1027 1028 /** 1029 * Supports the Pluggable Directives 1030 * #foo( arg+ ) 1031 * @return true if ends with a newline 1032 */ Directive(boolean afterNewline)1033 final public boolean Directive(boolean afterNewline) throws ParseException { 1034 /*@bgen(jjtree) Directive */ 1035 ASTDirective jjtn000 = new ASTDirective(this, JJTDIRECTIVE); 1036 boolean jjtc000 = true; 1037 jjtree.openNodeScope(jjtn000);Token id = null, t = null, u = null, end = null, _else = null; 1038 int argType; 1039 int argPos = 0; 1040 Directive d; 1041 int directiveType; 1042 boolean isVM = false; 1043 boolean isMacro = false; 1044 ArrayList argtypes = new ArrayList(4); 1045 String blockPrefix = ""; 1046 ASTBlock block = null, elseBlock = null; 1047 boolean hasParentheses = false; 1048 boolean newlineAtStart = afterNewline; 1049 try { 1050 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1051 case WHITESPACE: 1052 t = jj_consume_token(WHITESPACE); 1053 // only possible if not after new line 1054 jjtn000.setPrefix(t.image); 1055 t = null; 1056 break; 1057 default: 1058 jj_la1[10] = jj_gen; 1059 ; 1060 } 1061 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1062 case WORD: 1063 id = jj_consume_token(WORD); 1064 break; 1065 case BRACKETED_WORD: 1066 id = jj_consume_token(BRACKETED_WORD); 1067 break; 1068 default: 1069 jj_la1[11] = jj_gen; 1070 jj_consume_token(-1); 1071 throw new ParseException(); 1072 } 1073 String directiveName; 1074 int p = id.image.lastIndexOf(hash); 1075 if (id.kind == StandardParserConstants.BRACKETED_WORD) 1076 { 1077 directiveName = id.image.substring(p + 2, id.image.length() - 1); 1078 } 1079 else 1080 { 1081 directiveName = id.image.substring(p + 1); 1082 } 1083 1084 d = getDirective(directiveName); 1085 1086 /* 1087 * Velocimacro support : if the directive is macro directive 1088 * then set the flag so after the block parsing, we add the VM 1089 * right then. (So available if used w/in the current template ) 1090 */ 1091 1092 if (directiveName.equals("macro")) 1093 { 1094 isMacro = true; 1095 } 1096 1097 /* 1098 * set the directive name from here. No reason for the thing to know 1099 * about parser tokens 1100 */ 1101 1102 jjtn000.setDirectiveName(directiveName); 1103 1104 if ( d == null) 1105 { 1106 if( directiveName.charAt(0) == at ) 1107 { 1108 // block macro call of type: #@foobar($arg1 $arg2) astBody #end 1109 directiveType = Directive.BLOCK; 1110 } 1111 else 1112 { 1113 /* 1114 * if null, then not a real directive, but maybe a Velocimacro 1115 */ 1116 isVM = rsvc.isVelocimacro(directiveName, currentTemplate); 1117 1118 directiveType = Directive.LINE; 1119 } 1120 } 1121 else 1122 { 1123 directiveType = d.getType(); 1124 } 1125 1126 /* 1127 * now, switch us out of PRE_DIRECTIVE 1128 */ 1129 1130 token_source.switchTo(DIRECTIVE); 1131 argPos = 0; 1132 if (isLeftParenthesis()) { 1133 label_3: 1134 while (true) { 1135 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1136 case WHITESPACE: 1137 case NEWLINE: 1138 ; 1139 break; 1140 default: 1141 jj_la1[12] = jj_gen; 1142 break label_3; 1143 } 1144 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1145 case WHITESPACE: 1146 jj_consume_token(WHITESPACE); 1147 break; 1148 case NEWLINE: 1149 jj_consume_token(NEWLINE); 1150 break; 1151 default: 1152 jj_la1[13] = jj_gen; 1153 jj_consume_token(-1); 1154 throw new ParseException(); 1155 } 1156 } 1157 jj_consume_token(LPAREN); 1158 label_4: 1159 while (true) { 1160 if (!isRightParenthesis()) { 1161 ; 1162 } else { 1163 break label_4; 1164 } 1165 label_5: 1166 while (true) { 1167 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1168 case WHITESPACE: 1169 case NEWLINE: 1170 ; 1171 break; 1172 default: 1173 jj_la1[14] = jj_gen; 1174 break label_5; 1175 } 1176 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1177 case WHITESPACE: 1178 jj_consume_token(WHITESPACE); 1179 break; 1180 case NEWLINE: 1181 jj_consume_token(NEWLINE); 1182 break; 1183 default: 1184 jj_la1[15] = jj_gen; 1185 jj_consume_token(-1); 1186 throw new ParseException(); 1187 } 1188 } 1189 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1190 case COMMA: 1191 jj_consume_token(COMMA); 1192 label_6: 1193 while (true) { 1194 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1195 case WHITESPACE: 1196 case NEWLINE: 1197 ; 1198 break; 1199 default: 1200 jj_la1[16] = jj_gen; 1201 break label_6; 1202 } 1203 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1204 case WHITESPACE: 1205 jj_consume_token(WHITESPACE); 1206 break; 1207 case NEWLINE: 1208 jj_consume_token(NEWLINE); 1209 break; 1210 default: 1211 jj_la1[17] = jj_gen; 1212 jj_consume_token(-1); 1213 throw new ParseException(); 1214 } 1215 } 1216 break; 1217 default: 1218 jj_la1[18] = jj_gen; 1219 ; 1220 } 1221 if (jj_2_6(1)) { 1222 if (isMacro && isAssignment()) { 1223 DirectiveAssign(); 1224 label_7: 1225 while (true) { 1226 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1227 case WHITESPACE: 1228 case NEWLINE: 1229 ; 1230 break; 1231 default: 1232 jj_la1[19] = jj_gen; 1233 break label_7; 1234 } 1235 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1236 case WHITESPACE: 1237 jj_consume_token(WHITESPACE); 1238 break; 1239 case NEWLINE: 1240 jj_consume_token(NEWLINE); 1241 break; 1242 default: 1243 jj_la1[20] = jj_gen; 1244 jj_consume_token(-1); 1245 throw new ParseException(); 1246 } 1247 } 1248 jj_consume_token(EQUALS); 1249 label_8: 1250 while (true) { 1251 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1252 case WHITESPACE: 1253 case NEWLINE: 1254 ; 1255 break; 1256 default: 1257 jj_la1[21] = jj_gen; 1258 break label_8; 1259 } 1260 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1261 case WHITESPACE: 1262 jj_consume_token(WHITESPACE); 1263 break; 1264 case NEWLINE: 1265 jj_consume_token(NEWLINE); 1266 break; 1267 default: 1268 jj_la1[22] = jj_gen; 1269 jj_consume_token(-1); 1270 throw new ParseException(); 1271 } 1272 } 1273 argtypes.add(ParserTreeConstants.JJTDIRECTIVEASSIGN); 1274 } else { 1275 ; 1276 } 1277 if (!isRightParenthesis()) { 1278 1279 } else { 1280 jj_consume_token(-1); 1281 throw new ParseException(); 1282 } 1283 argType = DirectiveArg(); 1284 argtypes.add(argType); 1285 if (d == null && argType == ParserTreeConstants.JJTWORD) 1286 { 1287 if (isVM) 1288 { 1289 {if (true) throw new MacroParseException("Invalid argument " 1290 + (argPos+1) + " in macro call " + id.image, currentTemplate.getName(), id);} 1291 } 1292 } 1293 argPos++; 1294 } else { 1295 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1296 case SINGLE_LINE_COMMENT_START: 1297 if (!isMacro) 1298 { 1299 // We only allow line comments in macro definitions for now 1300 {if (true) throw new MacroParseException("A Line comment is not allowed in " + id.image 1301 + " arguments", currentTemplate.getName(), id);} 1302 } 1303 jj_consume_token(SINGLE_LINE_COMMENT_START); 1304 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1305 case SINGLE_LINE_COMMENT: 1306 jj_consume_token(SINGLE_LINE_COMMENT); 1307 break; 1308 default: 1309 jj_la1[23] = jj_gen; 1310 ; 1311 } 1312 break; 1313 default: 1314 jj_la1[24] = jj_gen; 1315 jj_consume_token(-1); 1316 throw new ParseException(); 1317 } 1318 } 1319 } 1320 label_9: 1321 while (true) { 1322 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1323 case WHITESPACE: 1324 case NEWLINE: 1325 ; 1326 break; 1327 default: 1328 jj_la1[25] = jj_gen; 1329 break label_9; 1330 } 1331 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1332 case WHITESPACE: 1333 jj_consume_token(WHITESPACE); 1334 break; 1335 case NEWLINE: 1336 jj_consume_token(NEWLINE); 1337 break; 1338 default: 1339 jj_la1[26] = jj_gen; 1340 jj_consume_token(-1); 1341 throw new ParseException(); 1342 } 1343 } 1344 jj_consume_token(RPAREN); 1345 hasParentheses = true; 1346 } else { 1347 token_source.stateStackPop(); 1348 } 1349 afterNewline = false; 1350 if (jj_2_7(2) && (directiveType != Directive.LINE || newlineAtStart && rsvc.getSpaceGobbling() != SpaceGobbling.BC || rsvc.getSpaceGobbling() == SpaceGobbling.BC && hasParentheses || d != null && (d instanceof Include || d instanceof Parse))) { 1351 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1352 case WHITESPACE: 1353 t = jj_consume_token(WHITESPACE); 1354 break; 1355 default: 1356 jj_la1[27] = jj_gen; 1357 ; 1358 } 1359 u = jj_consume_token(NEWLINE); 1360 afterNewline = true; 1361 if (directiveType == Directive.LINE) 1362 { 1363 jjtn000.setPostfix(t == null ? u.image : t.image + u.image); 1364 } 1365 else 1366 { 1367 blockPrefix = (t == null ? u.image : t.image + u.image); 1368 } 1369 t = u = null; 1370 } else { 1371 ; 1372 } 1373 if (d != null) 1374 { 1375 d.checkArgs(argtypes, id, currentTemplate.getName()); 1376 } 1377 if (directiveType == Directive.LINE) 1378 { 1379 {if (true) return afterNewline;} 1380 } 1381 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK); 1382 boolean jjtc001 = true; 1383 jjtree.openNodeScope(jjtn001); 1384 try { 1385 label_10: 1386 while (true) { 1387 if (getToken(1).kind != END && getToken(1).kind != ELSE && ( !afterNewline || getToken(1).kind != WHITESPACE || getToken(2).kind != END && getToken(2).kind != ELSE )) { 1388 ; 1389 } else { 1390 break label_10; 1391 } 1392 afterNewline = Statement(afterNewline); 1393 } 1394 jjtree.closeNodeScope(jjtn001, true); 1395 jjtc001 = false; 1396 block = jjtn001; 1397 block.setPrefix(blockPrefix); 1398 blockPrefix = ""; 1399 } catch (Throwable jjte001) { 1400 if (jjtc001) { 1401 jjtree.clearNodeScope(jjtn001); 1402 jjtc001 = false; 1403 } else { 1404 jjtree.popNode(); 1405 } 1406 if (jjte001 instanceof RuntimeException) { 1407 {if (true) throw (RuntimeException)jjte001;} 1408 } 1409 if (jjte001 instanceof ParseException) { 1410 {if (true) throw (ParseException)jjte001;} 1411 } 1412 {if (true) throw (Error)jjte001;} 1413 } finally { 1414 if (jjtc001) { 1415 jjtree.closeNodeScope(jjtn001, true); 1416 } 1417 } 1418 if (jj_2_8(1) && (afterNewline)) { 1419 t = jj_consume_token(WHITESPACE); 1420 block.setPostfix(t.image); 1421 t = null; 1422 } else { 1423 ; 1424 } 1425 if (d != null && (d instanceof Foreach) && getToken(1).kind == ELSE) { 1426 _else = jj_consume_token(ELSE); 1427 ASTBlock jjtn002 = new ASTBlock(this, JJTBLOCK); 1428 boolean jjtc002 = true; 1429 jjtree.openNodeScope(jjtn002); 1430 try { 1431 if (jj_2_9(2)) { 1432 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1433 case WHITESPACE: 1434 t = jj_consume_token(WHITESPACE); 1435 break; 1436 default: 1437 jj_la1[28] = jj_gen; 1438 ; 1439 } 1440 u = jj_consume_token(NEWLINE); 1441 jjtn002.setPrefix(t == null ? u.image : t.image + u.image); 1442 t = u = null; 1443 afterNewline = true; 1444 } else { 1445 ; 1446 } 1447 label_11: 1448 while (true) { 1449 if (getToken(1).kind != END && (!afterNewline || getToken(1).kind != WHITESPACE || getToken(2).kind != END)) { 1450 ; 1451 } else { 1452 break label_11; 1453 } 1454 afterNewline = Statement(afterNewline); 1455 } 1456 jjtree.closeNodeScope(jjtn002, true); 1457 jjtc002 = false; 1458 elseBlock = jjtn002; 1459 } catch (Throwable jjte002) { 1460 if (jjtc002) { 1461 jjtree.clearNodeScope(jjtn002); 1462 jjtc002 = false; 1463 } else { 1464 jjtree.popNode(); 1465 } 1466 if (jjte002 instanceof RuntimeException) { 1467 {if (true) throw (RuntimeException)jjte002;} 1468 } 1469 if (jjte002 instanceof ParseException) { 1470 {if (true) throw (ParseException)jjte002;} 1471 } 1472 {if (true) throw (Error)jjte002;} 1473 } finally { 1474 if (jjtc002) { 1475 jjtree.closeNodeScope(jjtn002, true); 1476 } 1477 } 1478 int pos = _else.image.lastIndexOf(hash); 1479 if (pos > 0) 1480 { 1481 block.setMorePostfix(_else.image.substring(0, pos)); 1482 } 1483 block = elseBlock; 1484 } else { 1485 ; 1486 } 1487 if (jj_2_10(1) && (afterNewline)) { 1488 t = jj_consume_token(WHITESPACE); 1489 block.setPostfix(t.image); 1490 t = null; 1491 afterNewline = false; 1492 } else { 1493 ; 1494 } 1495 end = jj_consume_token(END); 1496 afterNewline = false; 1497 if (jj_2_11(2) && (newlineAtStart || rsvc.getSpaceGobbling() == SpaceGobbling.BC)) { 1498 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1499 case WHITESPACE: 1500 t = jj_consume_token(WHITESPACE); 1501 break; 1502 default: 1503 jj_la1[29] = jj_gen; 1504 ; 1505 } 1506 u = jj_consume_token(NEWLINE); 1507 jjtn000.setPostfix(t == null ? u.image : t.image + u.image); 1508 t = u = null; 1509 afterNewline = true; 1510 } else { 1511 ; 1512 } 1513 int pos = end.image.lastIndexOf(hash); 1514 if (pos > 0) 1515 { 1516 block.setMorePostfix(end.image.substring(0, pos)); 1517 } 1518 jjtree.closeNodeScope(jjtn000, true); 1519 jjtc000 = false; 1520 /* 1521 * VM : if we are processing a #macro directive, we need to 1522 * process the block. In truth, I can just register the name 1523 * and do the work later when init-ing. That would work 1524 * as long as things were always defined before use. This way 1525 * we don't have to worry about forward references and such... 1526 */ 1527 if (isMacro) 1528 { 1529 // Add the macro name so that we can peform escape processing 1530 // on defined macros 1531 String macroName = jjtn000.jjtGetChild(0).getFirstToken().image; 1532 macroNames.put(macroName, macroName); 1533 } 1534 if (d != null) 1535 { 1536 d.checkArgs(argtypes, id, currentTemplate.getName()); 1537 } 1538 /* 1539 * VM : end 1540 */ 1541 {if (true) return afterNewline;} 1542 } catch (Throwable jjte000) { 1543 if (jjtc000) { 1544 jjtree.clearNodeScope(jjtn000); 1545 jjtc000 = false; 1546 } else { 1547 jjtree.popNode(); 1548 } 1549 if (jjte000 instanceof RuntimeException) { 1550 {if (true) throw (RuntimeException)jjte000;} 1551 } 1552 if (jjte000 instanceof ParseException) { 1553 {if (true) throw (ParseException)jjte000;} 1554 } 1555 {if (true) throw (Error)jjte000;} 1556 } finally { 1557 if (jjtc000) { 1558 jjtree.closeNodeScope(jjtn000, true); 1559 } 1560 } 1561 throw new Error("Missing return statement in function"); 1562 } 1563 1564 /** 1565 * for creating a map in a #set 1566 * 1567 * #set($foo = {$foo : $bar, $blargh : $thingy}) 1568 */ Map()1569 final public void Map() throws ParseException { 1570 /*@bgen(jjtree) Map */ 1571 ASTMap jjtn000 = new ASTMap(this, JJTMAP); 1572 boolean jjtc000 = true; 1573 jjtree.openNodeScope(jjtn000); 1574 try { 1575 jj_consume_token(LEFT_CURLEY); 1576 if (jj_2_12(2147483647)) { 1577 Parameter(); 1578 jj_consume_token(COLON); 1579 Parameter(); 1580 label_12: 1581 while (true) { 1582 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1583 case COMMA: 1584 ; 1585 break; 1586 default: 1587 jj_la1[30] = jj_gen; 1588 break label_12; 1589 } 1590 jj_consume_token(COMMA); 1591 Parameter(); 1592 jj_consume_token(COLON); 1593 Parameter(); 1594 } 1595 } else { 1596 label_13: 1597 while (true) { 1598 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1599 case WHITESPACE: 1600 case NEWLINE: 1601 ; 1602 break; 1603 default: 1604 jj_la1[31] = jj_gen; 1605 break label_13; 1606 } 1607 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1608 case WHITESPACE: 1609 jj_consume_token(WHITESPACE); 1610 break; 1611 case NEWLINE: 1612 jj_consume_token(NEWLINE); 1613 break; 1614 default: 1615 jj_la1[32] = jj_gen; 1616 jj_consume_token(-1); 1617 throw new ParseException(); 1618 } 1619 } 1620 } 1621 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1622 case RIGHT_CURLEY: 1623 jj_consume_token(RIGHT_CURLEY); 1624 break; 1625 case RCURLY: 1626 jj_consume_token(RCURLY); 1627 break; 1628 default: 1629 jj_la1[33] = jj_gen; 1630 jj_consume_token(-1); 1631 throw new ParseException(); 1632 } 1633 } catch (Throwable jjte000) { 1634 if (jjtc000) { 1635 jjtree.clearNodeScope(jjtn000); 1636 jjtc000 = false; 1637 } else { 1638 jjtree.popNode(); 1639 } 1640 if (jjte000 instanceof RuntimeException) { 1641 {if (true) throw (RuntimeException)jjte000;} 1642 } 1643 if (jjte000 instanceof ParseException) { 1644 {if (true) throw (ParseException)jjte000;} 1645 } 1646 {if (true) throw (Error)jjte000;} 1647 } finally { 1648 if (jjtc000) { 1649 jjtree.closeNodeScope(jjtn000, true); 1650 } 1651 } 1652 } 1653 ObjectArray()1654 final public void ObjectArray() throws ParseException { 1655 /*@bgen(jjtree) ObjectArray */ 1656 ASTObjectArray jjtn000 = new ASTObjectArray(this, JJTOBJECTARRAY); 1657 boolean jjtc000 = true; 1658 jjtree.openNodeScope(jjtn000); 1659 try { 1660 jj_consume_token(LBRACKET); 1661 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1662 case LBRACKET: 1663 case LEFT_CURLEY: 1664 case WHITESPACE: 1665 case NEWLINE: 1666 case STRING_LITERAL: 1667 case TRUE: 1668 case FALSE: 1669 case INTEGER_LITERAL: 1670 case FLOATING_POINT_LITERAL: 1671 case IDENTIFIER: 1672 case OLD_IDENTIFIER: 1673 case LCURLY: 1674 Parameter(); 1675 label_14: 1676 while (true) { 1677 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1678 case COMMA: 1679 ; 1680 break; 1681 default: 1682 jj_la1[34] = jj_gen; 1683 break label_14; 1684 } 1685 jj_consume_token(COMMA); 1686 Parameter(); 1687 } 1688 break; 1689 default: 1690 jj_la1[35] = jj_gen; 1691 ; 1692 } 1693 jj_consume_token(RBRACKET); 1694 } catch (Throwable jjte000) { 1695 if (jjtc000) { 1696 jjtree.clearNodeScope(jjtn000); 1697 jjtc000 = false; 1698 } else { 1699 jjtree.popNode(); 1700 } 1701 if (jjte000 instanceof RuntimeException) { 1702 {if (true) throw (RuntimeException)jjte000;} 1703 } 1704 if (jjte000 instanceof ParseException) { 1705 {if (true) throw (ParseException)jjte000;} 1706 } 1707 {if (true) throw (Error)jjte000;} 1708 } finally { 1709 if (jjtc000) { 1710 jjtree.closeNodeScope(jjtn000, true); 1711 } 1712 } 1713 } 1714 1715 /** 1716 * supports the [n..m] vector generator for use in 1717 * the #foreach() to generate measured ranges w/o 1718 * needing explicit support from the app/servlet 1719 */ IntegerRange()1720 final public void IntegerRange() throws ParseException { 1721 /*@bgen(jjtree) IntegerRange */ 1722 ASTIntegerRange jjtn000 = new ASTIntegerRange(this, JJTINTEGERRANGE); 1723 boolean jjtc000 = true; 1724 jjtree.openNodeScope(jjtn000); 1725 try { 1726 jj_consume_token(LBRACKET); 1727 label_15: 1728 while (true) { 1729 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1730 case WHITESPACE: 1731 case NEWLINE: 1732 ; 1733 break; 1734 default: 1735 jj_la1[36] = jj_gen; 1736 break label_15; 1737 } 1738 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1739 case WHITESPACE: 1740 jj_consume_token(WHITESPACE); 1741 break; 1742 case NEWLINE: 1743 jj_consume_token(NEWLINE); 1744 break; 1745 default: 1746 jj_la1[37] = jj_gen; 1747 jj_consume_token(-1); 1748 throw new ParseException(); 1749 } 1750 } 1751 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1752 case IDENTIFIER: 1753 case OLD_IDENTIFIER: 1754 case LCURLY: 1755 Reference(); 1756 break; 1757 case INTEGER_LITERAL: 1758 IntegerLiteral(); 1759 break; 1760 default: 1761 jj_la1[38] = jj_gen; 1762 jj_consume_token(-1); 1763 throw new ParseException(); 1764 } 1765 label_16: 1766 while (true) { 1767 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1768 case WHITESPACE: 1769 case NEWLINE: 1770 ; 1771 break; 1772 default: 1773 jj_la1[39] = jj_gen; 1774 break label_16; 1775 } 1776 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1777 case WHITESPACE: 1778 jj_consume_token(WHITESPACE); 1779 break; 1780 case NEWLINE: 1781 jj_consume_token(NEWLINE); 1782 break; 1783 default: 1784 jj_la1[40] = jj_gen; 1785 jj_consume_token(-1); 1786 throw new ParseException(); 1787 } 1788 } 1789 jj_consume_token(DOUBLEDOT); 1790 label_17: 1791 while (true) { 1792 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1793 case WHITESPACE: 1794 case NEWLINE: 1795 ; 1796 break; 1797 default: 1798 jj_la1[41] = jj_gen; 1799 break label_17; 1800 } 1801 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1802 case WHITESPACE: 1803 jj_consume_token(WHITESPACE); 1804 break; 1805 case NEWLINE: 1806 jj_consume_token(NEWLINE); 1807 break; 1808 default: 1809 jj_la1[42] = jj_gen; 1810 jj_consume_token(-1); 1811 throw new ParseException(); 1812 } 1813 } 1814 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1815 case IDENTIFIER: 1816 case OLD_IDENTIFIER: 1817 case LCURLY: 1818 Reference(); 1819 break; 1820 case INTEGER_LITERAL: 1821 IntegerLiteral(); 1822 break; 1823 default: 1824 jj_la1[43] = jj_gen; 1825 jj_consume_token(-1); 1826 throw new ParseException(); 1827 } 1828 label_18: 1829 while (true) { 1830 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1831 case WHITESPACE: 1832 case NEWLINE: 1833 ; 1834 break; 1835 default: 1836 jj_la1[44] = jj_gen; 1837 break label_18; 1838 } 1839 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1840 case WHITESPACE: 1841 jj_consume_token(WHITESPACE); 1842 break; 1843 case NEWLINE: 1844 jj_consume_token(NEWLINE); 1845 break; 1846 default: 1847 jj_la1[45] = jj_gen; 1848 jj_consume_token(-1); 1849 throw new ParseException(); 1850 } 1851 } 1852 jj_consume_token(RBRACKET); 1853 } catch (Throwable jjte000) { 1854 if (jjtc000) { 1855 jjtree.clearNodeScope(jjtn000); 1856 jjtc000 = false; 1857 } else { 1858 jjtree.popNode(); 1859 } 1860 if (jjte000 instanceof RuntimeException) { 1861 {if (true) throw (RuntimeException)jjte000;} 1862 } 1863 if (jjte000 instanceof ParseException) { 1864 {if (true) throw (ParseException)jjte000;} 1865 } 1866 {if (true) throw (Error)jjte000;} 1867 } finally { 1868 if (jjtc000) { 1869 jjtree.closeNodeScope(jjtn000, true); 1870 } 1871 } 1872 } 1873 1874 /** 1875 * A Simplified parameter more suitable for an index position: $foo[$index] 1876 */ IndexParameter()1877 final public void IndexParameter() throws ParseException { 1878 label_19: 1879 while (true) { 1880 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1881 case WHITESPACE: 1882 case NEWLINE: 1883 ; 1884 break; 1885 default: 1886 jj_la1[46] = jj_gen; 1887 break label_19; 1888 } 1889 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1890 case WHITESPACE: 1891 jj_consume_token(WHITESPACE); 1892 break; 1893 case NEWLINE: 1894 jj_consume_token(NEWLINE); 1895 break; 1896 default: 1897 jj_la1[47] = jj_gen; 1898 jj_consume_token(-1); 1899 throw new ParseException(); 1900 } 1901 } 1902 Expression(); 1903 label_20: 1904 while (true) { 1905 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1906 case WHITESPACE: 1907 case NEWLINE: 1908 ; 1909 break; 1910 default: 1911 jj_la1[48] = jj_gen; 1912 break label_20; 1913 } 1914 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1915 case WHITESPACE: 1916 jj_consume_token(WHITESPACE); 1917 break; 1918 case NEWLINE: 1919 jj_consume_token(NEWLINE); 1920 break; 1921 default: 1922 jj_la1[49] = jj_gen; 1923 jj_consume_token(-1); 1924 throw new ParseException(); 1925 } 1926 } 1927 } 1928 1929 /** 1930 * This method has yet to be fully implemented 1931 * but will allow arbitrarily nested method 1932 * calls 1933 */ Parameter()1934 final public void Parameter() throws ParseException { 1935 label_21: 1936 while (true) { 1937 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1938 case WHITESPACE: 1939 case NEWLINE: 1940 ; 1941 break; 1942 default: 1943 jj_la1[50] = jj_gen; 1944 break label_21; 1945 } 1946 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1947 case WHITESPACE: 1948 jj_consume_token(WHITESPACE); 1949 break; 1950 case NEWLINE: 1951 jj_consume_token(NEWLINE); 1952 break; 1953 default: 1954 jj_la1[51] = jj_gen; 1955 jj_consume_token(-1); 1956 throw new ParseException(); 1957 } 1958 } 1959 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1960 case STRING_LITERAL: 1961 StringLiteral(); 1962 break; 1963 case INTEGER_LITERAL: 1964 IntegerLiteral(); 1965 break; 1966 default: 1967 jj_la1[52] = jj_gen; 1968 if (jj_2_13(2147483647)) { 1969 IntegerRange(); 1970 } else { 1971 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 1972 case LEFT_CURLEY: 1973 Map(); 1974 break; 1975 case LBRACKET: 1976 ObjectArray(); 1977 break; 1978 case TRUE: 1979 True(); 1980 break; 1981 case FALSE: 1982 False(); 1983 break; 1984 case IDENTIFIER: 1985 case OLD_IDENTIFIER: 1986 case LCURLY: 1987 Reference(); 1988 break; 1989 case FLOATING_POINT_LITERAL: 1990 FloatingPointLiteral(); 1991 break; 1992 default: 1993 jj_la1[53] = jj_gen; 1994 jj_consume_token(-1); 1995 throw new ParseException(); 1996 } 1997 } 1998 } 1999 label_22: 2000 while (true) { 2001 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2002 case WHITESPACE: 2003 case NEWLINE: 2004 ; 2005 break; 2006 default: 2007 jj_la1[54] = jj_gen; 2008 break label_22; 2009 } 2010 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2011 case WHITESPACE: 2012 jj_consume_token(WHITESPACE); 2013 break; 2014 case NEWLINE: 2015 jj_consume_token(NEWLINE); 2016 break; 2017 default: 2018 jj_la1[55] = jj_gen; 2019 jj_consume_token(-1); 2020 throw new ParseException(); 2021 } 2022 } 2023 } 2024 2025 /** 2026 * This method has yet to be fully implemented 2027 * but will allow arbitrarily nested method 2028 * calls 2029 */ Method()2030 final public void Method() throws ParseException { 2031 /*@bgen(jjtree) Method */ 2032 ASTMethod jjtn000 = new ASTMethod(this, JJTMETHOD); 2033 boolean jjtc000 = true; 2034 jjtree.openNodeScope(jjtn000); 2035 try { 2036 Identifier(); 2037 jj_consume_token(LPAREN); 2038 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2039 case LBRACKET: 2040 case LEFT_CURLEY: 2041 case LPAREN: 2042 case WHITESPACE: 2043 case NEWLINE: 2044 case STRING_LITERAL: 2045 case TRUE: 2046 case FALSE: 2047 case MINUS: 2048 case LOGICAL_NOT: 2049 case INTEGER_LITERAL: 2050 case FLOATING_POINT_LITERAL: 2051 case IDENTIFIER: 2052 case OLD_IDENTIFIER: 2053 case LCURLY: 2054 Expression(); 2055 label_23: 2056 while (true) { 2057 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2058 case COMMA: 2059 ; 2060 break; 2061 default: 2062 jj_la1[56] = jj_gen; 2063 break label_23; 2064 } 2065 jj_consume_token(COMMA); 2066 Expression(); 2067 } 2068 break; 2069 default: 2070 jj_la1[57] = jj_gen; 2071 ; 2072 } 2073 jj_consume_token(REFMOD2_RPAREN); 2074 } catch (Throwable jjte000) { 2075 if (jjtc000) { 2076 jjtree.clearNodeScope(jjtn000); 2077 jjtc000 = false; 2078 } else { 2079 jjtree.popNode(); 2080 } 2081 if (jjte000 instanceof RuntimeException) { 2082 {if (true) throw (RuntimeException)jjte000;} 2083 } 2084 if (jjte000 instanceof ParseException) { 2085 {if (true) throw (ParseException)jjte000;} 2086 } 2087 {if (true) throw (Error)jjte000;} 2088 } finally { 2089 if (jjtc000) { 2090 jjtree.closeNodeScope(jjtn000, true); 2091 } 2092 } 2093 } 2094 Index()2095 final public void Index() throws ParseException { 2096 /*@bgen(jjtree) Index */ 2097 ASTIndex jjtn000 = new ASTIndex(this, JJTINDEX); 2098 boolean jjtc000 = true; 2099 jjtree.openNodeScope(jjtn000); 2100 try { 2101 jj_consume_token(INDEX_LBRACKET); 2102 IndexParameter(); 2103 jj_consume_token(INDEX_RBRACKET); 2104 } catch (Throwable jjte000) { 2105 if (jjtc000) { 2106 jjtree.clearNodeScope(jjtn000); 2107 jjtc000 = false; 2108 } else { 2109 jjtree.popNode(); 2110 } 2111 if (jjte000 instanceof RuntimeException) { 2112 {if (true) throw (RuntimeException)jjte000;} 2113 } 2114 if (jjte000 instanceof ParseException) { 2115 {if (true) throw (ParseException)jjte000;} 2116 } 2117 {if (true) throw (Error)jjte000;} 2118 } finally { 2119 if (jjtc000) { 2120 jjtree.closeNodeScope(jjtn000, true); 2121 } 2122 } 2123 } 2124 Reference()2125 final public void Reference() throws ParseException { 2126 /*@bgen(jjtree) Reference */ 2127 ASTReference jjtn000 = new ASTReference(this, JJTREFERENCE); 2128 boolean jjtc000 = true; 2129 jjtree.openNodeScope(jjtn000); 2130 try { 2131 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2132 case IDENTIFIER: 2133 case OLD_IDENTIFIER: 2134 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2135 case IDENTIFIER: 2136 jj_consume_token(IDENTIFIER); 2137 break; 2138 case OLD_IDENTIFIER: 2139 jj_consume_token(OLD_IDENTIFIER); 2140 break; 2141 default: 2142 jj_la1[58] = jj_gen; 2143 jj_consume_token(-1); 2144 throw new ParseException(); 2145 } 2146 label_24: 2147 while (true) { 2148 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2149 case INDEX_LBRACKET: 2150 ; 2151 break; 2152 default: 2153 jj_la1[59] = jj_gen; 2154 break label_24; 2155 } 2156 Index(); 2157 } 2158 label_25: 2159 while (true) { 2160 if (jj_2_14(2)) { 2161 ; 2162 } else { 2163 break label_25; 2164 } 2165 jj_consume_token(DOT); 2166 if (jj_2_15(3)) { 2167 Method(); 2168 } else { 2169 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2170 case IDENTIFIER: 2171 case OLD_IDENTIFIER: 2172 Identifier(); 2173 break; 2174 default: 2175 jj_la1[60] = jj_gen; 2176 jj_consume_token(-1); 2177 throw new ParseException(); 2178 } 2179 } 2180 label_26: 2181 while (true) { 2182 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2183 case INDEX_LBRACKET: 2184 ; 2185 break; 2186 default: 2187 jj_la1[61] = jj_gen; 2188 break label_26; 2189 } 2190 Index(); 2191 } 2192 } 2193 break; 2194 case LCURLY: 2195 jj_consume_token(LCURLY); 2196 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2197 case IDENTIFIER: 2198 jj_consume_token(IDENTIFIER); 2199 break; 2200 case OLD_IDENTIFIER: 2201 jj_consume_token(OLD_IDENTIFIER); 2202 break; 2203 default: 2204 jj_la1[62] = jj_gen; 2205 jj_consume_token(-1); 2206 throw new ParseException(); 2207 } 2208 label_27: 2209 while (true) { 2210 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2211 case INDEX_LBRACKET: 2212 ; 2213 break; 2214 default: 2215 jj_la1[63] = jj_gen; 2216 break label_27; 2217 } 2218 Index(); 2219 } 2220 label_28: 2221 while (true) { 2222 if (jj_2_16(2)) { 2223 ; 2224 } else { 2225 break label_28; 2226 } 2227 jj_consume_token(DOT); 2228 if (jj_2_17(3)) { 2229 Method(); 2230 } else { 2231 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2232 case IDENTIFIER: 2233 case OLD_IDENTIFIER: 2234 Identifier(); 2235 break; 2236 default: 2237 jj_la1[64] = jj_gen; 2238 jj_consume_token(-1); 2239 throw new ParseException(); 2240 } 2241 } 2242 label_29: 2243 while (true) { 2244 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2245 case INDEX_LBRACKET: 2246 ; 2247 break; 2248 default: 2249 jj_la1[65] = jj_gen; 2250 break label_29; 2251 } 2252 Index(); 2253 } 2254 } 2255 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2256 case PIPE: 2257 jj_consume_token(PIPE); 2258 Expression(); 2259 break; 2260 default: 2261 jj_la1[66] = jj_gen; 2262 ; 2263 } 2264 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2265 case RCURLY: 2266 jj_consume_token(RCURLY); 2267 break; 2268 case RIGHT_CURLEY: 2269 jj_consume_token(RIGHT_CURLEY); 2270 break; 2271 default: 2272 jj_la1[67] = jj_gen; 2273 jj_consume_token(-1); 2274 throw new ParseException(); 2275 } 2276 break; 2277 default: 2278 jj_la1[68] = jj_gen; 2279 jj_consume_token(-1); 2280 throw new ParseException(); 2281 } 2282 } catch (Throwable jjte000) { 2283 if (jjtc000) { 2284 jjtree.clearNodeScope(jjtn000); 2285 jjtc000 = false; 2286 } else { 2287 jjtree.popNode(); 2288 } 2289 if (jjte000 instanceof RuntimeException) { 2290 {if (true) throw (RuntimeException)jjte000;} 2291 } 2292 if (jjte000 instanceof ParseException) { 2293 {if (true) throw (ParseException)jjte000;} 2294 } 2295 {if (true) throw (Error)jjte000;} 2296 } finally { 2297 if (jjtc000) { 2298 jjtree.closeNodeScope(jjtn000, true); 2299 } 2300 } 2301 } 2302 True()2303 final public void True() throws ParseException { 2304 /*@bgen(jjtree) True */ 2305 ASTTrue jjtn000 = new ASTTrue(this, JJTTRUE); 2306 boolean jjtc000 = true; 2307 jjtree.openNodeScope(jjtn000); 2308 try { 2309 jj_consume_token(TRUE); 2310 } finally { 2311 if (jjtc000) { 2312 jjtree.closeNodeScope(jjtn000, true); 2313 } 2314 } 2315 } 2316 False()2317 final public void False() throws ParseException { 2318 /*@bgen(jjtree) False */ 2319 ASTFalse jjtn000 = new ASTFalse(this, JJTFALSE); 2320 boolean jjtc000 = true; 2321 jjtree.openNodeScope(jjtn000); 2322 try { 2323 jj_consume_token(FALSE); 2324 } finally { 2325 if (jjtc000) { 2326 jjtree.closeNodeScope(jjtn000, true); 2327 } 2328 } 2329 } 2330 2331 /** 2332 * This method is responsible for allowing 2333 * all non-grammar text to pass through 2334 * unscathed. 2335 * @return true if last read token was a newline 2336 */ Text()2337 final public boolean Text() throws ParseException { 2338 /*@bgen(jjtree) Text */ 2339 ASTText jjtn000 = new ASTText(this, JJTTEXT); 2340 boolean jjtc000 = true; 2341 jjtree.openNodeScope(jjtn000);Token t = null; 2342 try { 2343 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2344 case TEXT: 2345 jj_consume_token(TEXT); 2346 jjtree.closeNodeScope(jjtn000, true); 2347 jjtc000 = false; 2348 {if (true) return true;} 2349 break; 2350 case DOT: 2351 jj_consume_token(DOT); 2352 jjtree.closeNodeScope(jjtn000, true); 2353 jjtc000 = false; 2354 {if (true) return false;} 2355 break; 2356 case RPAREN: 2357 jj_consume_token(RPAREN); 2358 jjtree.closeNodeScope(jjtn000, true); 2359 jjtc000 = false; 2360 {if (true) return false;} 2361 break; 2362 case LPAREN: 2363 jj_consume_token(LPAREN); 2364 jjtree.closeNodeScope(jjtn000, true); 2365 jjtc000 = false; 2366 {if (true) return false;} 2367 break; 2368 case INTEGER_LITERAL: 2369 jj_consume_token(INTEGER_LITERAL); 2370 jjtree.closeNodeScope(jjtn000, true); 2371 jjtc000 = false; 2372 {if (true) return false;} 2373 break; 2374 case FLOATING_POINT_LITERAL: 2375 jj_consume_token(FLOATING_POINT_LITERAL); 2376 jjtree.closeNodeScope(jjtn000, true); 2377 jjtc000 = false; 2378 {if (true) return false;} 2379 break; 2380 case STRING_LITERAL: 2381 jj_consume_token(STRING_LITERAL); 2382 jjtree.closeNodeScope(jjtn000, true); 2383 jjtc000 = false; 2384 {if (true) return false;} 2385 break; 2386 case ESCAPE: 2387 jj_consume_token(ESCAPE); 2388 jjtree.closeNodeScope(jjtn000, true); 2389 jjtc000 = false; 2390 {if (true) return false;} 2391 break; 2392 case LCURLY: 2393 jj_consume_token(LCURLY); 2394 jjtree.closeNodeScope(jjtn000, true); 2395 jjtc000 = false; 2396 {if (true) return false;} 2397 break; 2398 case RCURLY: 2399 jj_consume_token(RCURLY); 2400 jjtree.closeNodeScope(jjtn000, true); 2401 jjtc000 = false; 2402 {if (true) return false;} 2403 break; 2404 case EMPTY_INDEX: 2405 jj_consume_token(EMPTY_INDEX); 2406 jjtree.closeNodeScope(jjtn000, true); 2407 jjtc000 = false; 2408 {if (true) return false;} 2409 break; 2410 case PIPE: 2411 jj_consume_token(PIPE); 2412 jjtree.closeNodeScope(jjtn000, true); 2413 jjtc000 = false; 2414 {if (true) return false;} 2415 break; 2416 case LONE_SYMBOL: 2417 t = jj_consume_token(LONE_SYMBOL); 2418 jjtree.closeNodeScope(jjtn000, true); 2419 jjtc000 = false; 2420 /* Drop the ending zero-width whitespace */ 2421 t.image = t.image.substring(0, t.image.length() - 1); {if (true) return false;} 2422 break; 2423 default: 2424 jj_la1[69] = jj_gen; 2425 jj_consume_token(-1); 2426 throw new ParseException(); 2427 } 2428 } finally { 2429 if (jjtc000) { 2430 jjtree.closeNodeScope(jjtn000, true); 2431 } 2432 } 2433 throw new Error("Missing return statement in function"); 2434 } 2435 2436 /* ----------------------------------------------------------------------- 2437 * 2438 * Defined Directive Syntax 2439 * 2440 * ----------------------------------------------------------------------*/ IfStatement(boolean afterNewline)2441 final public boolean IfStatement(boolean afterNewline) throws ParseException { 2442 /*@bgen(jjtree) IfStatement */ 2443 ASTIfStatement jjtn000 = new ASTIfStatement(this, JJTIFSTATEMENT); 2444 boolean jjtc000 = true; 2445 jjtree.openNodeScope(jjtn000);Token t = null, u = null, end = null; 2446 ASTBlock lastBlock = null; 2447 boolean newlineAtStart = afterNewline; 2448 try { 2449 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2450 case WHITESPACE: 2451 t = jj_consume_token(WHITESPACE); 2452 // only possible if not after new line 2453 jjtn000.setPrefix(t.image); 2454 t = null; 2455 break; 2456 default: 2457 jj_la1[70] = jj_gen; 2458 ; 2459 } 2460 jj_consume_token(IF_DIRECTIVE); 2461 label_30: 2462 while (true) { 2463 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2464 case WHITESPACE: 2465 case NEWLINE: 2466 ; 2467 break; 2468 default: 2469 jj_la1[71] = jj_gen; 2470 break label_30; 2471 } 2472 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2473 case WHITESPACE: 2474 jj_consume_token(WHITESPACE); 2475 break; 2476 case NEWLINE: 2477 jj_consume_token(NEWLINE); 2478 break; 2479 default: 2480 jj_la1[72] = jj_gen; 2481 jj_consume_token(-1); 2482 throw new ParseException(); 2483 } 2484 } 2485 jj_consume_token(LPAREN); 2486 Expression(); 2487 jj_consume_token(RPAREN); 2488 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK); 2489 boolean jjtc001 = true; 2490 jjtree.openNodeScope(jjtn001); 2491 try { 2492 if (jj_2_18(2)) { 2493 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2494 case WHITESPACE: 2495 t = jj_consume_token(WHITESPACE); 2496 break; 2497 default: 2498 jj_la1[73] = jj_gen; 2499 ; 2500 } 2501 u = jj_consume_token(NEWLINE); 2502 jjtn001.setPrefix(t == null ? u.image : t.image + u.image); 2503 t = u = null; 2504 afterNewline = true; 2505 } else { 2506 ; 2507 } 2508 label_31: 2509 while (true) { 2510 if ((getToken(1).kind != ELSEIF && getToken(1).kind != ELSE && getToken(1).kind != END) && 2511 (!afterNewline || getToken(1).kind != WHITESPACE || (getToken(2).kind != ELSEIF && getToken(2).kind != ELSE && getToken(2).kind != END))) { 2512 ; 2513 } else { 2514 break label_31; 2515 } 2516 afterNewline = Statement(afterNewline); 2517 } 2518 jjtree.closeNodeScope(jjtn001, true); 2519 jjtc001 = false; 2520 lastBlock = jjtn001; 2521 } catch (Throwable jjte001) { 2522 if (jjtc001) { 2523 jjtree.clearNodeScope(jjtn001); 2524 jjtc001 = false; 2525 } else { 2526 jjtree.popNode(); 2527 } 2528 if (jjte001 instanceof RuntimeException) { 2529 {if (true) throw (RuntimeException)jjte001;} 2530 } 2531 if (jjte001 instanceof ParseException) { 2532 {if (true) throw (ParseException)jjte001;} 2533 } 2534 {if (true) throw (Error)jjte001;} 2535 } finally { 2536 if (jjtc001) { 2537 jjtree.closeNodeScope(jjtn001, true); 2538 } 2539 } 2540 if (getToken(1).kind == ELSEIF || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSEIF)) { 2541 label_32: 2542 while (true) { 2543 lastBlock = ElseIfStatement(lastBlock, afterNewline); 2544 afterNewline = lastBlock.endsWithNewline; 2545 if (getToken(1).kind == ELSEIF || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSEIF)) { 2546 ; 2547 } else { 2548 break label_32; 2549 } 2550 } 2551 } else { 2552 ; 2553 } 2554 if (getToken(1).kind == ELSE || (afterNewline && getToken(1).kind == WHITESPACE && getToken(2).kind == ELSE)) { 2555 lastBlock = ElseStatement(lastBlock, afterNewline); 2556 afterNewline = lastBlock.endsWithNewline; 2557 } else { 2558 ; 2559 } 2560 if (jj_2_19(1) && (afterNewline)) { 2561 t = jj_consume_token(WHITESPACE); 2562 lastBlock.setPostfix(t.image); 2563 t = null; 2564 } else { 2565 ; 2566 } 2567 end = jj_consume_token(END); 2568 afterNewline = false; 2569 if (jj_2_20(2) && (newlineAtStart || rsvc.getSpaceGobbling() == SpaceGobbling.BC)) { 2570 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2571 case WHITESPACE: 2572 t = jj_consume_token(WHITESPACE); 2573 break; 2574 default: 2575 jj_la1[74] = jj_gen; 2576 ; 2577 } 2578 u = jj_consume_token(NEWLINE); 2579 jjtn000.setPostfix(t == null ? u.image : t.image + u.image); 2580 afterNewline = true; 2581 } else { 2582 ; 2583 } 2584 jjtree.closeNodeScope(jjtn000, true); 2585 jjtc000 = false; 2586 int pos = end.image.lastIndexOf(hash); 2587 if (pos > 0) 2588 { 2589 lastBlock.setMorePostfix(end.image.substring(0, pos)); 2590 } 2591 {if (true) return afterNewline;} 2592 } catch (Throwable jjte000) { 2593 if (jjtc000) { 2594 jjtree.clearNodeScope(jjtn000); 2595 jjtc000 = false; 2596 } else { 2597 jjtree.popNode(); 2598 } 2599 if (jjte000 instanceof RuntimeException) { 2600 {if (true) throw (RuntimeException)jjte000;} 2601 } 2602 if (jjte000 instanceof ParseException) { 2603 {if (true) throw (ParseException)jjte000;} 2604 } 2605 {if (true) throw (Error)jjte000;} 2606 } finally { 2607 if (jjtc000) { 2608 jjtree.closeNodeScope(jjtn000, true); 2609 } 2610 } 2611 throw new Error("Missing return statement in function"); 2612 } 2613 ElseStatement(ASTBlock previousBlock, boolean afterNewline)2614 final public ASTBlock ElseStatement(ASTBlock previousBlock, boolean afterNewline) throws ParseException { 2615 /*@bgen(jjtree) ElseStatement */ 2616 ASTElseStatement jjtn000 = new ASTElseStatement(this, JJTELSESTATEMENT); 2617 boolean jjtc000 = true; 2618 jjtree.openNodeScope(jjtn000);Token t = null, u = null, _else = null; 2619 ASTBlock block = null; 2620 try { 2621 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2622 case WHITESPACE: 2623 t = jj_consume_token(WHITESPACE); 2624 previousBlock.setPostfix(t.image); 2625 t = null; 2626 break; 2627 default: 2628 jj_la1[75] = jj_gen; 2629 ; 2630 } 2631 _else = jj_consume_token(ELSE); 2632 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK); 2633 boolean jjtc001 = true; 2634 jjtree.openNodeScope(jjtn001); 2635 try { 2636 if (jj_2_21(2)) { 2637 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2638 case WHITESPACE: 2639 t = jj_consume_token(WHITESPACE); 2640 break; 2641 default: 2642 jj_la1[76] = jj_gen; 2643 ; 2644 } 2645 u = jj_consume_token(NEWLINE); 2646 jjtn001.setPrefix(t == null ? u.image : t.image + u.image); 2647 t = u = null; 2648 afterNewline = true; 2649 } else { 2650 ; 2651 } 2652 label_33: 2653 while (true) { 2654 if (getToken(1).kind != END && (!afterNewline || getToken(1).kind != WHITESPACE || getToken(2).kind != END)) { 2655 ; 2656 } else { 2657 break label_33; 2658 } 2659 afterNewline = Statement(afterNewline); 2660 } 2661 jjtree.closeNodeScope(jjtn001, true); 2662 jjtc001 = false; 2663 block = jjtn001; 2664 block.endsWithNewline = afterNewline; 2665 } catch (Throwable jjte001) { 2666 if (jjtc001) { 2667 jjtree.clearNodeScope(jjtn001); 2668 jjtc001 = false; 2669 } else { 2670 jjtree.popNode(); 2671 } 2672 if (jjte001 instanceof RuntimeException) { 2673 {if (true) throw (RuntimeException)jjte001;} 2674 } 2675 if (jjte001 instanceof ParseException) { 2676 {if (true) throw (ParseException)jjte001;} 2677 } 2678 {if (true) throw (Error)jjte001;} 2679 } finally { 2680 if (jjtc001) { 2681 jjtree.closeNodeScope(jjtn001, true); 2682 } 2683 } 2684 jjtree.closeNodeScope(jjtn000, true); 2685 jjtc000 = false; 2686 int pos = _else.image.lastIndexOf(hash); 2687 if (pos > 0) 2688 { 2689 previousBlock.setMorePostfix(_else.image.substring(0, pos)); 2690 } 2691 {if (true) return block;} 2692 } catch (Throwable jjte000) { 2693 if (jjtc000) { 2694 jjtree.clearNodeScope(jjtn000); 2695 jjtc000 = false; 2696 } else { 2697 jjtree.popNode(); 2698 } 2699 if (jjte000 instanceof RuntimeException) { 2700 {if (true) throw (RuntimeException)jjte000;} 2701 } 2702 if (jjte000 instanceof ParseException) { 2703 {if (true) throw (ParseException)jjte000;} 2704 } 2705 {if (true) throw (Error)jjte000;} 2706 } finally { 2707 if (jjtc000) { 2708 jjtree.closeNodeScope(jjtn000, true); 2709 } 2710 } 2711 throw new Error("Missing return statement in function"); 2712 } 2713 ElseIfStatement(ASTBlock previousBlock, boolean afterNewline)2714 final public ASTBlock ElseIfStatement(ASTBlock previousBlock, boolean afterNewline) throws ParseException { 2715 /*@bgen(jjtree) ElseIfStatement */ 2716 ASTElseIfStatement jjtn000 = new ASTElseIfStatement(this, JJTELSEIFSTATEMENT); 2717 boolean jjtc000 = true; 2718 jjtree.openNodeScope(jjtn000);Token t = null, u = null, elseif = null; 2719 ASTBlock block = null; 2720 try { 2721 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2722 case WHITESPACE: 2723 t = jj_consume_token(WHITESPACE); 2724 previousBlock.setPostfix(t.image); 2725 t = null; 2726 break; 2727 default: 2728 jj_la1[77] = jj_gen; 2729 ; 2730 } 2731 elseif = jj_consume_token(ELSEIF); 2732 label_34: 2733 while (true) { 2734 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2735 case WHITESPACE: 2736 case NEWLINE: 2737 ; 2738 break; 2739 default: 2740 jj_la1[78] = jj_gen; 2741 break label_34; 2742 } 2743 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2744 case WHITESPACE: 2745 jj_consume_token(WHITESPACE); 2746 break; 2747 case NEWLINE: 2748 jj_consume_token(NEWLINE); 2749 break; 2750 default: 2751 jj_la1[79] = jj_gen; 2752 jj_consume_token(-1); 2753 throw new ParseException(); 2754 } 2755 } 2756 jj_consume_token(LPAREN); 2757 Expression(); 2758 jj_consume_token(RPAREN); 2759 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK); 2760 boolean jjtc001 = true; 2761 jjtree.openNodeScope(jjtn001); 2762 try { 2763 if (jj_2_22(2)) { 2764 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2765 case WHITESPACE: 2766 t = jj_consume_token(WHITESPACE); 2767 break; 2768 default: 2769 jj_la1[80] = jj_gen; 2770 ; 2771 } 2772 u = jj_consume_token(NEWLINE); 2773 jjtn001.setPrefix(t == null ? u.image : t.image + u.image); 2774 t = u = null; 2775 afterNewline = true; 2776 } else { 2777 ; 2778 } 2779 label_35: 2780 while (true) { 2781 if ((getToken(1).kind != ELSEIF && getToken(1).kind != ELSE && getToken(1).kind != END) && (!afterNewline || getToken(1).kind != WHITESPACE || (getToken(2).kind != ELSEIF && getToken(2).kind != ELSE && getToken(2).kind != END))) { 2782 ; 2783 } else { 2784 break label_35; 2785 } 2786 afterNewline = Statement(afterNewline); 2787 } 2788 jjtree.closeNodeScope(jjtn001, true); 2789 jjtc001 = false; 2790 block = jjtn001; 2791 block.endsWithNewline = afterNewline; 2792 } catch (Throwable jjte001) { 2793 if (jjtc001) { 2794 jjtree.clearNodeScope(jjtn001); 2795 jjtc001 = false; 2796 } else { 2797 jjtree.popNode(); 2798 } 2799 if (jjte001 instanceof RuntimeException) { 2800 {if (true) throw (RuntimeException)jjte001;} 2801 } 2802 if (jjte001 instanceof ParseException) { 2803 {if (true) throw (ParseException)jjte001;} 2804 } 2805 {if (true) throw (Error)jjte001;} 2806 } finally { 2807 if (jjtc001) { 2808 jjtree.closeNodeScope(jjtn001, true); 2809 } 2810 } 2811 jjtree.closeNodeScope(jjtn000, true); 2812 jjtc000 = false; 2813 int pos = elseif.image.lastIndexOf(hash); 2814 if (pos > 0) 2815 { 2816 previousBlock.setMorePostfix(elseif.image.substring(0, pos)); 2817 } 2818 {if (true) return block;} 2819 } catch (Throwable jjte000) { 2820 if (jjtc000) { 2821 jjtree.clearNodeScope(jjtn000); 2822 jjtc000 = false; 2823 } else { 2824 jjtree.popNode(); 2825 } 2826 if (jjte000 instanceof RuntimeException) { 2827 {if (true) throw (RuntimeException)jjte000;} 2828 } 2829 if (jjte000 instanceof ParseException) { 2830 {if (true) throw (ParseException)jjte000;} 2831 } 2832 {if (true) throw (Error)jjte000;} 2833 } finally { 2834 if (jjtc000) { 2835 jjtree.closeNodeScope(jjtn000, true); 2836 } 2837 } 2838 throw new Error("Missing return statement in function"); 2839 } 2840 2841 /** 2842 * Currently support both types of set : 2843 * #set( expr ) 2844 * #set expr 2845 */ SetDirective(boolean afterNewline)2846 final public boolean SetDirective(boolean afterNewline) throws ParseException { 2847 /*@bgen(jjtree) SetDirective */ 2848 ASTSetDirective jjtn000 = new ASTSetDirective(this, JJTSETDIRECTIVE); 2849 boolean jjtc000 = true; 2850 jjtree.openNodeScope(jjtn000);Token t = null, u = null; 2851 boolean endsWithNewline = false; 2852 try { 2853 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2854 case WHITESPACE: 2855 t = jj_consume_token(WHITESPACE); 2856 // only possible after new line 2857 jjtn000.setPrefix(t.image); 2858 t = null; 2859 break; 2860 default: 2861 jj_la1[81] = jj_gen; 2862 ; 2863 } 2864 jj_consume_token(SET_DIRECTIVE); 2865 label_36: 2866 while (true) { 2867 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2868 case WHITESPACE: 2869 case NEWLINE: 2870 ; 2871 break; 2872 default: 2873 jj_la1[82] = jj_gen; 2874 break label_36; 2875 } 2876 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2877 case WHITESPACE: 2878 jj_consume_token(WHITESPACE); 2879 break; 2880 case NEWLINE: 2881 jj_consume_token(NEWLINE); 2882 break; 2883 default: 2884 jj_la1[83] = jj_gen; 2885 jj_consume_token(-1); 2886 throw new ParseException(); 2887 } 2888 } 2889 Reference(); 2890 label_37: 2891 while (true) { 2892 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2893 case WHITESPACE: 2894 case NEWLINE: 2895 ; 2896 break; 2897 default: 2898 jj_la1[84] = jj_gen; 2899 break label_37; 2900 } 2901 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2902 case WHITESPACE: 2903 jj_consume_token(WHITESPACE); 2904 break; 2905 case NEWLINE: 2906 jj_consume_token(NEWLINE); 2907 break; 2908 default: 2909 jj_la1[85] = jj_gen; 2910 jj_consume_token(-1); 2911 throw new ParseException(); 2912 } 2913 } 2914 jj_consume_token(EQUALS); 2915 Expression(); 2916 jj_consume_token(RPAREN); 2917 /* 2918 * ensure that inSet is false. Leads to some amusing bugs... 2919 */ 2920 2921 token_source.setInSet(false); 2922 if (jj_2_23(2) && (afterNewline || rsvc.getSpaceGobbling() == SpaceGobbling.BC)) { 2923 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 2924 case WHITESPACE: 2925 t = jj_consume_token(WHITESPACE); 2926 break; 2927 default: 2928 jj_la1[86] = jj_gen; 2929 ; 2930 } 2931 u = jj_consume_token(NEWLINE); 2932 jjtn000.setPostfix(t == null ? u.image : t.image + u.image); 2933 endsWithNewline = true; 2934 } else { 2935 ; 2936 } 2937 jjtree.closeNodeScope(jjtn000, true); 2938 jjtc000 = false; 2939 {if (true) return endsWithNewline;} 2940 } catch (Throwable jjte000) { 2941 if (jjtc000) { 2942 jjtree.clearNodeScope(jjtn000); 2943 jjtc000 = false; 2944 } else { 2945 jjtree.popNode(); 2946 } 2947 if (jjte000 instanceof RuntimeException) { 2948 {if (true) throw (RuntimeException)jjte000;} 2949 } 2950 if (jjte000 instanceof ParseException) { 2951 {if (true) throw (ParseException)jjte000;} 2952 } 2953 {if (true) throw (Error)jjte000;} 2954 } finally { 2955 if (jjtc000) { 2956 jjtree.closeNodeScope(jjtn000, true); 2957 } 2958 } 2959 throw new Error("Missing return statement in function"); 2960 } 2961 2962 /* ----------------------------------------------------------------------- 2963 * 2964 * Expression Syntax 2965 * 2966 * ----------------------------------------------------------------------*/ Expression()2967 final public void Expression() throws ParseException { 2968 /*@bgen(jjtree) Expression */ 2969 ASTExpression jjtn000 = new ASTExpression(this, JJTEXPRESSION); 2970 boolean jjtc000 = true; 2971 jjtree.openNodeScope(jjtn000); 2972 try { 2973 ConditionalOrExpression(); 2974 } catch (Throwable jjte000) { 2975 if (jjtc000) { 2976 jjtree.clearNodeScope(jjtn000); 2977 jjtc000 = false; 2978 } else { 2979 jjtree.popNode(); 2980 } 2981 if (jjte000 instanceof RuntimeException) { 2982 {if (true) throw (RuntimeException)jjte000;} 2983 } 2984 if (jjte000 instanceof ParseException) { 2985 {if (true) throw (ParseException)jjte000;} 2986 } 2987 {if (true) throw (Error)jjte000;} 2988 } finally { 2989 if (jjtc000) { 2990 jjtree.closeNodeScope(jjtn000, true); 2991 } 2992 } 2993 } 2994 Assignment()2995 final public void Assignment() throws ParseException { 2996 /*@bgen(jjtree) #Assignment( 2) */ 2997 ASTAssignment jjtn000 = new ASTAssignment(this, JJTASSIGNMENT); 2998 boolean jjtc000 = true; 2999 jjtree.openNodeScope(jjtn000); 3000 try { 3001 PrimaryExpression(); 3002 jj_consume_token(EQUALS); 3003 Expression(); 3004 } catch (Throwable jjte000) { 3005 if (jjtc000) { 3006 jjtree.clearNodeScope(jjtn000); 3007 jjtc000 = false; 3008 } else { 3009 jjtree.popNode(); 3010 } 3011 if (jjte000 instanceof RuntimeException) { 3012 {if (true) throw (RuntimeException)jjte000;} 3013 } 3014 if (jjte000 instanceof ParseException) { 3015 {if (true) throw (ParseException)jjte000;} 3016 } 3017 {if (true) throw (Error)jjte000;} 3018 } finally { 3019 if (jjtc000) { 3020 jjtree.closeNodeScope(jjtn000, 2); 3021 } 3022 } 3023 } 3024 ConditionalOrExpression()3025 final public void ConditionalOrExpression() throws ParseException { 3026 ConditionalAndExpression(); 3027 label_38: 3028 while (true) { 3029 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3030 case LOGICAL_OR_2: 3031 case LOGICAL_OR: 3032 ; 3033 break; 3034 default: 3035 jj_la1[87] = jj_gen; 3036 break label_38; 3037 } 3038 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3039 case LOGICAL_OR: 3040 jj_consume_token(LOGICAL_OR); 3041 break; 3042 case LOGICAL_OR_2: 3043 jj_consume_token(LOGICAL_OR_2); 3044 break; 3045 default: 3046 jj_la1[88] = jj_gen; 3047 jj_consume_token(-1); 3048 throw new ParseException(); 3049 } 3050 ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE); 3051 boolean jjtc001 = true; 3052 jjtree.openNodeScope(jjtn001); 3053 try { 3054 ConditionalAndExpression(); 3055 } catch (Throwable jjte001) { 3056 if (jjtc001) { 3057 jjtree.clearNodeScope(jjtn001); 3058 jjtc001 = false; 3059 } else { 3060 jjtree.popNode(); 3061 } 3062 if (jjte001 instanceof RuntimeException) { 3063 {if (true) throw (RuntimeException)jjte001;} 3064 } 3065 if (jjte001 instanceof ParseException) { 3066 {if (true) throw (ParseException)jjte001;} 3067 } 3068 {if (true) throw (Error)jjte001;} 3069 } finally { 3070 if (jjtc001) { 3071 jjtree.closeNodeScope(jjtn001, 2); 3072 } 3073 } 3074 } 3075 } 3076 ConditionalAndExpression()3077 final public void ConditionalAndExpression() throws ParseException { 3078 EqualityExpression(); 3079 label_39: 3080 while (true) { 3081 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3082 case LOGICAL_AND: 3083 ; 3084 break; 3085 default: 3086 jj_la1[89] = jj_gen; 3087 break label_39; 3088 } 3089 jj_consume_token(LOGICAL_AND); 3090 ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE); 3091 boolean jjtc001 = true; 3092 jjtree.openNodeScope(jjtn001); 3093 try { 3094 EqualityExpression(); 3095 } catch (Throwable jjte001) { 3096 if (jjtc001) { 3097 jjtree.clearNodeScope(jjtn001); 3098 jjtc001 = false; 3099 } else { 3100 jjtree.popNode(); 3101 } 3102 if (jjte001 instanceof RuntimeException) { 3103 {if (true) throw (RuntimeException)jjte001;} 3104 } 3105 if (jjte001 instanceof ParseException) { 3106 {if (true) throw (ParseException)jjte001;} 3107 } 3108 {if (true) throw (Error)jjte001;} 3109 } finally { 3110 if (jjtc001) { 3111 jjtree.closeNodeScope(jjtn001, 2); 3112 } 3113 } 3114 } 3115 } 3116 EqualityExpression()3117 final public void EqualityExpression() throws ParseException { 3118 RelationalExpression(); 3119 label_40: 3120 while (true) { 3121 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3122 case LOGICAL_EQUALS: 3123 case LOGICAL_NOT_EQUALS: 3124 ; 3125 break; 3126 default: 3127 jj_la1[90] = jj_gen; 3128 break label_40; 3129 } 3130 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3131 case LOGICAL_EQUALS: 3132 jj_consume_token(LOGICAL_EQUALS); 3133 ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE); 3134 boolean jjtc001 = true; 3135 jjtree.openNodeScope(jjtn001); 3136 try { 3137 RelationalExpression(); 3138 } catch (Throwable jjte001) { 3139 if (jjtc001) { 3140 jjtree.clearNodeScope(jjtn001); 3141 jjtc001 = false; 3142 } else { 3143 jjtree.popNode(); 3144 } 3145 if (jjte001 instanceof RuntimeException) { 3146 {if (true) throw (RuntimeException)jjte001;} 3147 } 3148 if (jjte001 instanceof ParseException) { 3149 {if (true) throw (ParseException)jjte001;} 3150 } 3151 {if (true) throw (Error)jjte001;} 3152 } finally { 3153 if (jjtc001) { 3154 jjtree.closeNodeScope(jjtn001, 2); 3155 } 3156 } 3157 break; 3158 case LOGICAL_NOT_EQUALS: 3159 jj_consume_token(LOGICAL_NOT_EQUALS); 3160 ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE); 3161 boolean jjtc002 = true; 3162 jjtree.openNodeScope(jjtn002); 3163 try { 3164 RelationalExpression(); 3165 } catch (Throwable jjte002) { 3166 if (jjtc002) { 3167 jjtree.clearNodeScope(jjtn002); 3168 jjtc002 = false; 3169 } else { 3170 jjtree.popNode(); 3171 } 3172 if (jjte002 instanceof RuntimeException) { 3173 {if (true) throw (RuntimeException)jjte002;} 3174 } 3175 if (jjte002 instanceof ParseException) { 3176 {if (true) throw (ParseException)jjte002;} 3177 } 3178 {if (true) throw (Error)jjte002;} 3179 } finally { 3180 if (jjtc002) { 3181 jjtree.closeNodeScope(jjtn002, 2); 3182 } 3183 } 3184 break; 3185 default: 3186 jj_la1[91] = jj_gen; 3187 jj_consume_token(-1); 3188 throw new ParseException(); 3189 } 3190 } 3191 } 3192 RelationalExpression()3193 final public void RelationalExpression() throws ParseException { 3194 AdditiveExpression(); 3195 label_41: 3196 while (true) { 3197 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3198 case LOGICAL_LT: 3199 case LOGICAL_LE: 3200 case LOGICAL_GT: 3201 case LOGICAL_GE: 3202 ; 3203 break; 3204 default: 3205 jj_la1[92] = jj_gen; 3206 break label_41; 3207 } 3208 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3209 case LOGICAL_LT: 3210 jj_consume_token(LOGICAL_LT); 3211 ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE); 3212 boolean jjtc001 = true; 3213 jjtree.openNodeScope(jjtn001); 3214 try { 3215 AdditiveExpression(); 3216 } catch (Throwable jjte001) { 3217 if (jjtc001) { 3218 jjtree.clearNodeScope(jjtn001); 3219 jjtc001 = false; 3220 } else { 3221 jjtree.popNode(); 3222 } 3223 if (jjte001 instanceof RuntimeException) { 3224 {if (true) throw (RuntimeException)jjte001;} 3225 } 3226 if (jjte001 instanceof ParseException) { 3227 {if (true) throw (ParseException)jjte001;} 3228 } 3229 {if (true) throw (Error)jjte001;} 3230 } finally { 3231 if (jjtc001) { 3232 jjtree.closeNodeScope(jjtn001, 2); 3233 } 3234 } 3235 break; 3236 case LOGICAL_GT: 3237 jj_consume_token(LOGICAL_GT); 3238 ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE); 3239 boolean jjtc002 = true; 3240 jjtree.openNodeScope(jjtn002); 3241 try { 3242 AdditiveExpression(); 3243 } catch (Throwable jjte002) { 3244 if (jjtc002) { 3245 jjtree.clearNodeScope(jjtn002); 3246 jjtc002 = false; 3247 } else { 3248 jjtree.popNode(); 3249 } 3250 if (jjte002 instanceof RuntimeException) { 3251 {if (true) throw (RuntimeException)jjte002;} 3252 } 3253 if (jjte002 instanceof ParseException) { 3254 {if (true) throw (ParseException)jjte002;} 3255 } 3256 {if (true) throw (Error)jjte002;} 3257 } finally { 3258 if (jjtc002) { 3259 jjtree.closeNodeScope(jjtn002, 2); 3260 } 3261 } 3262 break; 3263 case LOGICAL_LE: 3264 jj_consume_token(LOGICAL_LE); 3265 ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE); 3266 boolean jjtc003 = true; 3267 jjtree.openNodeScope(jjtn003); 3268 try { 3269 AdditiveExpression(); 3270 } catch (Throwable jjte003) { 3271 if (jjtc003) { 3272 jjtree.clearNodeScope(jjtn003); 3273 jjtc003 = false; 3274 } else { 3275 jjtree.popNode(); 3276 } 3277 if (jjte003 instanceof RuntimeException) { 3278 {if (true) throw (RuntimeException)jjte003;} 3279 } 3280 if (jjte003 instanceof ParseException) { 3281 {if (true) throw (ParseException)jjte003;} 3282 } 3283 {if (true) throw (Error)jjte003;} 3284 } finally { 3285 if (jjtc003) { 3286 jjtree.closeNodeScope(jjtn003, 2); 3287 } 3288 } 3289 break; 3290 case LOGICAL_GE: 3291 jj_consume_token(LOGICAL_GE); 3292 ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE); 3293 boolean jjtc004 = true; 3294 jjtree.openNodeScope(jjtn004); 3295 try { 3296 AdditiveExpression(); 3297 } catch (Throwable jjte004) { 3298 if (jjtc004) { 3299 jjtree.clearNodeScope(jjtn004); 3300 jjtc004 = false; 3301 } else { 3302 jjtree.popNode(); 3303 } 3304 if (jjte004 instanceof RuntimeException) { 3305 {if (true) throw (RuntimeException)jjte004;} 3306 } 3307 if (jjte004 instanceof ParseException) { 3308 {if (true) throw (ParseException)jjte004;} 3309 } 3310 {if (true) throw (Error)jjte004;} 3311 } finally { 3312 if (jjtc004) { 3313 jjtree.closeNodeScope(jjtn004, 2); 3314 } 3315 } 3316 break; 3317 default: 3318 jj_la1[93] = jj_gen; 3319 jj_consume_token(-1); 3320 throw new ParseException(); 3321 } 3322 } 3323 } 3324 AdditiveExpression()3325 final public void AdditiveExpression() throws ParseException { 3326 MultiplicativeExpression(); 3327 label_42: 3328 while (true) { 3329 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3330 case MINUS: 3331 case PLUS: 3332 ; 3333 break; 3334 default: 3335 jj_la1[94] = jj_gen; 3336 break label_42; 3337 } 3338 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3339 case PLUS: 3340 jj_consume_token(PLUS); 3341 ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE); 3342 boolean jjtc001 = true; 3343 jjtree.openNodeScope(jjtn001); 3344 try { 3345 MultiplicativeExpression(); 3346 } catch (Throwable jjte001) { 3347 if (jjtc001) { 3348 jjtree.clearNodeScope(jjtn001); 3349 jjtc001 = false; 3350 } else { 3351 jjtree.popNode(); 3352 } 3353 if (jjte001 instanceof RuntimeException) { 3354 {if (true) throw (RuntimeException)jjte001;} 3355 } 3356 if (jjte001 instanceof ParseException) { 3357 {if (true) throw (ParseException)jjte001;} 3358 } 3359 {if (true) throw (Error)jjte001;} 3360 } finally { 3361 if (jjtc001) { 3362 jjtree.closeNodeScope(jjtn001, 2); 3363 } 3364 } 3365 break; 3366 case MINUS: 3367 jj_consume_token(MINUS); 3368 ASTSubtractNode jjtn002 = new ASTSubtractNode(this, JJTSUBTRACTNODE); 3369 boolean jjtc002 = true; 3370 jjtree.openNodeScope(jjtn002); 3371 try { 3372 MultiplicativeExpression(); 3373 } catch (Throwable jjte002) { 3374 if (jjtc002) { 3375 jjtree.clearNodeScope(jjtn002); 3376 jjtc002 = false; 3377 } else { 3378 jjtree.popNode(); 3379 } 3380 if (jjte002 instanceof RuntimeException) { 3381 {if (true) throw (RuntimeException)jjte002;} 3382 } 3383 if (jjte002 instanceof ParseException) { 3384 {if (true) throw (ParseException)jjte002;} 3385 } 3386 {if (true) throw (Error)jjte002;} 3387 } finally { 3388 if (jjtc002) { 3389 jjtree.closeNodeScope(jjtn002, 2); 3390 } 3391 } 3392 break; 3393 default: 3394 jj_la1[95] = jj_gen; 3395 jj_consume_token(-1); 3396 throw new ParseException(); 3397 } 3398 } 3399 } 3400 MultiplicativeExpression()3401 final public void MultiplicativeExpression() throws ParseException { 3402 UnaryExpression(); 3403 label_43: 3404 while (true) { 3405 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3406 case MULTIPLY: 3407 case DIVIDE: 3408 case MODULUS: 3409 ; 3410 break; 3411 default: 3412 jj_la1[96] = jj_gen; 3413 break label_43; 3414 } 3415 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3416 case MULTIPLY: 3417 jj_consume_token(MULTIPLY); 3418 ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE); 3419 boolean jjtc001 = true; 3420 jjtree.openNodeScope(jjtn001); 3421 try { 3422 UnaryExpression(); 3423 } catch (Throwable jjte001) { 3424 if (jjtc001) { 3425 jjtree.clearNodeScope(jjtn001); 3426 jjtc001 = false; 3427 } else { 3428 jjtree.popNode(); 3429 } 3430 if (jjte001 instanceof RuntimeException) { 3431 {if (true) throw (RuntimeException)jjte001;} 3432 } 3433 if (jjte001 instanceof ParseException) { 3434 {if (true) throw (ParseException)jjte001;} 3435 } 3436 {if (true) throw (Error)jjte001;} 3437 } finally { 3438 if (jjtc001) { 3439 jjtree.closeNodeScope(jjtn001, 2); 3440 } 3441 } 3442 break; 3443 case DIVIDE: 3444 jj_consume_token(DIVIDE); 3445 ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE); 3446 boolean jjtc002 = true; 3447 jjtree.openNodeScope(jjtn002); 3448 try { 3449 UnaryExpression(); 3450 } catch (Throwable jjte002) { 3451 if (jjtc002) { 3452 jjtree.clearNodeScope(jjtn002); 3453 jjtc002 = false; 3454 } else { 3455 jjtree.popNode(); 3456 } 3457 if (jjte002 instanceof RuntimeException) { 3458 {if (true) throw (RuntimeException)jjte002;} 3459 } 3460 if (jjte002 instanceof ParseException) { 3461 {if (true) throw (ParseException)jjte002;} 3462 } 3463 {if (true) throw (Error)jjte002;} 3464 } finally { 3465 if (jjtc002) { 3466 jjtree.closeNodeScope(jjtn002, 2); 3467 } 3468 } 3469 break; 3470 case MODULUS: 3471 jj_consume_token(MODULUS); 3472 ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE); 3473 boolean jjtc003 = true; 3474 jjtree.openNodeScope(jjtn003); 3475 try { 3476 UnaryExpression(); 3477 } catch (Throwable jjte003) { 3478 if (jjtc003) { 3479 jjtree.clearNodeScope(jjtn003); 3480 jjtc003 = false; 3481 } else { 3482 jjtree.popNode(); 3483 } 3484 if (jjte003 instanceof RuntimeException) { 3485 {if (true) throw (RuntimeException)jjte003;} 3486 } 3487 if (jjte003 instanceof ParseException) { 3488 {if (true) throw (ParseException)jjte003;} 3489 } 3490 {if (true) throw (Error)jjte003;} 3491 } finally { 3492 if (jjtc003) { 3493 jjtree.closeNodeScope(jjtn003, 2); 3494 } 3495 } 3496 break; 3497 default: 3498 jj_la1[97] = jj_gen; 3499 jj_consume_token(-1); 3500 throw new ParseException(); 3501 } 3502 } 3503 } 3504 UnaryExpression()3505 final public void UnaryExpression() throws ParseException { 3506 label_44: 3507 while (true) { 3508 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3509 case WHITESPACE: 3510 case NEWLINE: 3511 ; 3512 break; 3513 default: 3514 jj_la1[98] = jj_gen; 3515 break label_44; 3516 } 3517 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3518 case WHITESPACE: 3519 jj_consume_token(WHITESPACE); 3520 break; 3521 case NEWLINE: 3522 jj_consume_token(NEWLINE); 3523 break; 3524 default: 3525 jj_la1[99] = jj_gen; 3526 jj_consume_token(-1); 3527 throw new ParseException(); 3528 } 3529 } 3530 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3531 case LOGICAL_NOT: 3532 jj_consume_token(LOGICAL_NOT); 3533 ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE); 3534 boolean jjtc001 = true; 3535 jjtree.openNodeScope(jjtn001); 3536 try { 3537 UnaryExpression(); 3538 } catch (Throwable jjte001) { 3539 if (jjtc001) { 3540 jjtree.clearNodeScope(jjtn001); 3541 jjtc001 = false; 3542 } else { 3543 jjtree.popNode(); 3544 } 3545 if (jjte001 instanceof RuntimeException) { 3546 {if (true) throw (RuntimeException)jjte001;} 3547 } 3548 if (jjte001 instanceof ParseException) { 3549 {if (true) throw (ParseException)jjte001;} 3550 } 3551 {if (true) throw (Error)jjte001;} 3552 } finally { 3553 if (jjtc001) { 3554 jjtree.closeNodeScope(jjtn001, 1); 3555 } 3556 } 3557 break; 3558 case MINUS: 3559 jj_consume_token(MINUS); 3560 ASTNegateNode jjtn002 = new ASTNegateNode(this, JJTNEGATENODE); 3561 boolean jjtc002 = true; 3562 jjtree.openNodeScope(jjtn002); 3563 try { 3564 PrimaryExpression(); 3565 } catch (Throwable jjte002) { 3566 if (jjtc002) { 3567 jjtree.clearNodeScope(jjtn002); 3568 jjtc002 = false; 3569 } else { 3570 jjtree.popNode(); 3571 } 3572 if (jjte002 instanceof RuntimeException) { 3573 {if (true) throw (RuntimeException)jjte002;} 3574 } 3575 if (jjte002 instanceof ParseException) { 3576 {if (true) throw (ParseException)jjte002;} 3577 } 3578 {if (true) throw (Error)jjte002;} 3579 } finally { 3580 if (jjtc002) { 3581 jjtree.closeNodeScope(jjtn002, 1); 3582 } 3583 } 3584 break; 3585 case LBRACKET: 3586 case LEFT_CURLEY: 3587 case LPAREN: 3588 case WHITESPACE: 3589 case NEWLINE: 3590 case STRING_LITERAL: 3591 case TRUE: 3592 case FALSE: 3593 case INTEGER_LITERAL: 3594 case FLOATING_POINT_LITERAL: 3595 case IDENTIFIER: 3596 case OLD_IDENTIFIER: 3597 case LCURLY: 3598 PrimaryExpression(); 3599 break; 3600 default: 3601 jj_la1[100] = jj_gen; 3602 jj_consume_token(-1); 3603 throw new ParseException(); 3604 } 3605 } 3606 PrimaryExpression()3607 final public void PrimaryExpression() throws ParseException { 3608 label_45: 3609 while (true) { 3610 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3611 case WHITESPACE: 3612 case NEWLINE: 3613 ; 3614 break; 3615 default: 3616 jj_la1[101] = jj_gen; 3617 break label_45; 3618 } 3619 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3620 case WHITESPACE: 3621 jj_consume_token(WHITESPACE); 3622 break; 3623 case NEWLINE: 3624 jj_consume_token(NEWLINE); 3625 break; 3626 default: 3627 jj_la1[102] = jj_gen; 3628 jj_consume_token(-1); 3629 throw new ParseException(); 3630 } 3631 } 3632 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3633 case STRING_LITERAL: 3634 StringLiteral(); 3635 break; 3636 case IDENTIFIER: 3637 case OLD_IDENTIFIER: 3638 case LCURLY: 3639 Reference(); 3640 break; 3641 case INTEGER_LITERAL: 3642 IntegerLiteral(); 3643 break; 3644 default: 3645 jj_la1[103] = jj_gen; 3646 if (jj_2_24(2147483647)) { 3647 IntegerRange(); 3648 } else { 3649 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3650 case FLOATING_POINT_LITERAL: 3651 FloatingPointLiteral(); 3652 break; 3653 case LEFT_CURLEY: 3654 Map(); 3655 break; 3656 case LBRACKET: 3657 ObjectArray(); 3658 break; 3659 case TRUE: 3660 True(); 3661 break; 3662 case FALSE: 3663 False(); 3664 break; 3665 case LPAREN: 3666 jj_consume_token(LPAREN); 3667 Expression(); 3668 jj_consume_token(RPAREN); 3669 break; 3670 default: 3671 jj_la1[104] = jj_gen; 3672 jj_consume_token(-1); 3673 throw new ParseException(); 3674 } 3675 } 3676 } 3677 label_46: 3678 while (true) { 3679 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3680 case WHITESPACE: 3681 case NEWLINE: 3682 ; 3683 break; 3684 default: 3685 jj_la1[105] = jj_gen; 3686 break label_46; 3687 } 3688 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { 3689 case WHITESPACE: 3690 jj_consume_token(WHITESPACE); 3691 break; 3692 case NEWLINE: 3693 jj_consume_token(NEWLINE); 3694 break; 3695 default: 3696 jj_la1[106] = jj_gen; 3697 jj_consume_token(-1); 3698 throw new ParseException(); 3699 } 3700 } 3701 } 3702 jj_2_1(int xla)3703 private boolean jj_2_1(int xla) { 3704 jj_la = xla; jj_lastpos = jj_scanpos = token; 3705 try { return !jj_3_1(); } 3706 catch(LookaheadSuccess ls) { return true; } 3707 finally { jj_save(0, xla); } 3708 } 3709 jj_2_2(int xla)3710 private boolean jj_2_2(int xla) { 3711 jj_la = xla; jj_lastpos = jj_scanpos = token; 3712 try { return !jj_3_2(); } 3713 catch(LookaheadSuccess ls) { return true; } 3714 finally { jj_save(1, xla); } 3715 } 3716 jj_2_3(int xla)3717 private boolean jj_2_3(int xla) { 3718 jj_la = xla; jj_lastpos = jj_scanpos = token; 3719 try { return !jj_3_3(); } 3720 catch(LookaheadSuccess ls) { return true; } 3721 finally { jj_save(2, xla); } 3722 } 3723 jj_2_4(int xla)3724 private boolean jj_2_4(int xla) { 3725 jj_la = xla; jj_lastpos = jj_scanpos = token; 3726 try { return !jj_3_4(); } 3727 catch(LookaheadSuccess ls) { return true; } 3728 finally { jj_save(3, xla); } 3729 } 3730 jj_2_5(int xla)3731 private boolean jj_2_5(int xla) { 3732 jj_la = xla; jj_lastpos = jj_scanpos = token; 3733 try { return !jj_3_5(); } 3734 catch(LookaheadSuccess ls) { return true; } 3735 finally { jj_save(4, xla); } 3736 } 3737 jj_2_6(int xla)3738 private boolean jj_2_6(int xla) { 3739 jj_la = xla; jj_lastpos = jj_scanpos = token; 3740 try { return !jj_3_6(); } 3741 catch(LookaheadSuccess ls) { return true; } 3742 finally { jj_save(5, xla); } 3743 } 3744 jj_2_7(int xla)3745 private boolean jj_2_7(int xla) { 3746 jj_la = xla; jj_lastpos = jj_scanpos = token; 3747 try { return !jj_3_7(); } 3748 catch(LookaheadSuccess ls) { return true; } 3749 finally { jj_save(6, xla); } 3750 } 3751 jj_2_8(int xla)3752 private boolean jj_2_8(int xla) { 3753 jj_la = xla; jj_lastpos = jj_scanpos = token; 3754 try { return !jj_3_8(); } 3755 catch(LookaheadSuccess ls) { return true; } 3756 finally { jj_save(7, xla); } 3757 } 3758 jj_2_9(int xla)3759 private boolean jj_2_9(int xla) { 3760 jj_la = xla; jj_lastpos = jj_scanpos = token; 3761 try { return !jj_3_9(); } 3762 catch(LookaheadSuccess ls) { return true; } 3763 finally { jj_save(8, xla); } 3764 } 3765 jj_2_10(int xla)3766 private boolean jj_2_10(int xla) { 3767 jj_la = xla; jj_lastpos = jj_scanpos = token; 3768 try { return !jj_3_10(); } 3769 catch(LookaheadSuccess ls) { return true; } 3770 finally { jj_save(9, xla); } 3771 } 3772 jj_2_11(int xla)3773 private boolean jj_2_11(int xla) { 3774 jj_la = xla; jj_lastpos = jj_scanpos = token; 3775 try { return !jj_3_11(); } 3776 catch(LookaheadSuccess ls) { return true; } 3777 finally { jj_save(10, xla); } 3778 } 3779 jj_2_12(int xla)3780 private boolean jj_2_12(int xla) { 3781 jj_la = xla; jj_lastpos = jj_scanpos = token; 3782 try { return !jj_3_12(); } 3783 catch(LookaheadSuccess ls) { return true; } 3784 finally { jj_save(11, xla); } 3785 } 3786 jj_2_13(int xla)3787 private boolean jj_2_13(int xla) { 3788 jj_la = xla; jj_lastpos = jj_scanpos = token; 3789 try { return !jj_3_13(); } 3790 catch(LookaheadSuccess ls) { return true; } 3791 finally { jj_save(12, xla); } 3792 } 3793 jj_2_14(int xla)3794 private boolean jj_2_14(int xla) { 3795 jj_la = xla; jj_lastpos = jj_scanpos = token; 3796 try { return !jj_3_14(); } 3797 catch(LookaheadSuccess ls) { return true; } 3798 finally { jj_save(13, xla); } 3799 } 3800 jj_2_15(int xla)3801 private boolean jj_2_15(int xla) { 3802 jj_la = xla; jj_lastpos = jj_scanpos = token; 3803 try { return !jj_3_15(); } 3804 catch(LookaheadSuccess ls) { return true; } 3805 finally { jj_save(14, xla); } 3806 } 3807 jj_2_16(int xla)3808 private boolean jj_2_16(int xla) { 3809 jj_la = xla; jj_lastpos = jj_scanpos = token; 3810 try { return !jj_3_16(); } 3811 catch(LookaheadSuccess ls) { return true; } 3812 finally { jj_save(15, xla); } 3813 } 3814 jj_2_17(int xla)3815 private boolean jj_2_17(int xla) { 3816 jj_la = xla; jj_lastpos = jj_scanpos = token; 3817 try { return !jj_3_17(); } 3818 catch(LookaheadSuccess ls) { return true; } 3819 finally { jj_save(16, xla); } 3820 } 3821 jj_2_18(int xla)3822 private boolean jj_2_18(int xla) { 3823 jj_la = xla; jj_lastpos = jj_scanpos = token; 3824 try { return !jj_3_18(); } 3825 catch(LookaheadSuccess ls) { return true; } 3826 finally { jj_save(17, xla); } 3827 } 3828 jj_2_19(int xla)3829 private boolean jj_2_19(int xla) { 3830 jj_la = xla; jj_lastpos = jj_scanpos = token; 3831 try { return !jj_3_19(); } 3832 catch(LookaheadSuccess ls) { return true; } 3833 finally { jj_save(18, xla); } 3834 } 3835 jj_2_20(int xla)3836 private boolean jj_2_20(int xla) { 3837 jj_la = xla; jj_lastpos = jj_scanpos = token; 3838 try { return !jj_3_20(); } 3839 catch(LookaheadSuccess ls) { return true; } 3840 finally { jj_save(19, xla); } 3841 } 3842 jj_2_21(int xla)3843 private boolean jj_2_21(int xla) { 3844 jj_la = xla; jj_lastpos = jj_scanpos = token; 3845 try { return !jj_3_21(); } 3846 catch(LookaheadSuccess ls) { return true; } 3847 finally { jj_save(20, xla); } 3848 } 3849 jj_2_22(int xla)3850 private boolean jj_2_22(int xla) { 3851 jj_la = xla; jj_lastpos = jj_scanpos = token; 3852 try { return !jj_3_22(); } 3853 catch(LookaheadSuccess ls) { return true; } 3854 finally { jj_save(21, xla); } 3855 } 3856 jj_2_23(int xla)3857 private boolean jj_2_23(int xla) { 3858 jj_la = xla; jj_lastpos = jj_scanpos = token; 3859 try { return !jj_3_23(); } 3860 catch(LookaheadSuccess ls) { return true; } 3861 finally { jj_save(22, xla); } 3862 } 3863 jj_2_24(int xla)3864 private boolean jj_2_24(int xla) { 3865 jj_la = xla; jj_lastpos = jj_scanpos = token; 3866 try { return !jj_3_24(); } 3867 catch(LookaheadSuccess ls) { return true; } 3868 finally { jj_save(23, xla); } 3869 } 3870 jj_3_20()3871 private boolean jj_3_20() { 3872 Token xsp; 3873 xsp = jj_scanpos; 3874 if (jj_scan_token(32)) jj_scanpos = xsp; 3875 if (jj_scan_token(NEWLINE)) return true; 3876 return false; 3877 } 3878 jj_3_19()3879 private boolean jj_3_19() { 3880 if (jj_scan_token(WHITESPACE)) return true; 3881 return false; 3882 } 3883 jj_3R_55()3884 private boolean jj_3R_55() { 3885 return false; 3886 } 3887 jj_3R_54()3888 private boolean jj_3R_54() { 3889 if (jj_3R_76()) return true; 3890 return false; 3891 } 3892 jj_3_6()3893 private boolean jj_3_6() { 3894 Token xsp; 3895 xsp = jj_scanpos; 3896 if (jj_3R_54()) jj_scanpos = xsp; 3897 jj_lookingAhead = true; 3898 jj_semLA = !isRightParenthesis(); 3899 jj_lookingAhead = false; 3900 if (!jj_semLA || jj_3R_55()) return true; 3901 if (jj_3R_56()) return true; 3902 return false; 3903 } 3904 jj_3_18()3905 private boolean jj_3_18() { 3906 Token xsp; 3907 xsp = jj_scanpos; 3908 if (jj_scan_token(32)) jj_scanpos = xsp; 3909 if (jj_scan_token(NEWLINE)) return true; 3910 return false; 3911 } 3912 jj_3R_126()3913 private boolean jj_3R_126() { 3914 if (jj_3R_110()) return true; 3915 return false; 3916 } 3917 jj_3R_62()3918 private boolean jj_3R_62() { 3919 Token xsp; 3920 xsp = jj_scanpos; 3921 if (jj_scan_token(32)) { 3922 jj_scanpos = xsp; 3923 if (jj_scan_token(33)) return true; 3924 } 3925 return false; 3926 } 3927 jj_3R_125()3928 private boolean jj_3R_125() { 3929 if (jj_3R_110()) return true; 3930 return false; 3931 } 3932 jj_3R_65()3933 private boolean jj_3R_65() { 3934 if (jj_3R_98()) return true; 3935 return false; 3936 } 3937 jj_3R_69()3938 private boolean jj_3R_69() { 3939 Token xsp; 3940 xsp = jj_scanpos; 3941 if (jj_scan_token(32)) { 3942 jj_scanpos = xsp; 3943 if (jj_scan_token(33)) return true; 3944 } 3945 return false; 3946 } 3947 jj_3R_63()3948 private boolean jj_3R_63() { 3949 if (jj_3R_98()) return true; 3950 return false; 3951 } 3952 jj_3R_111()3953 private boolean jj_3R_111() { 3954 if (jj_3R_110()) return true; 3955 return false; 3956 } 3957 jj_3R_53()3958 private boolean jj_3R_53() { 3959 Token xsp; 3960 xsp = jj_scanpos; 3961 if (jj_scan_token(32)) { 3962 jj_scanpos = xsp; 3963 if (jj_scan_token(33)) return true; 3964 } 3965 return false; 3966 } 3967 jj_3R_61()3968 private boolean jj_3R_61() { 3969 if (jj_3R_75()) return true; 3970 return false; 3971 } 3972 jj_3R_100()3973 private boolean jj_3R_100() { 3974 if (jj_3R_110()) return true; 3975 return false; 3976 } 3977 jj_3_17()3978 private boolean jj_3_17() { 3979 if (jj_3R_64()) return true; 3980 return false; 3981 } 3982 jj_3R_68()3983 private boolean jj_3R_68() { 3984 if (jj_3R_75()) return true; 3985 return false; 3986 } 3987 jj_3R_60()3988 private boolean jj_3R_60() { 3989 if (jj_3R_47()) return true; 3990 return false; 3991 } 3992 jj_3_15()3993 private boolean jj_3_15() { 3994 if (jj_3R_64()) return true; 3995 return false; 3996 } 3997 jj_3R_137()3998 private boolean jj_3R_137() { 3999 if (jj_scan_token(COMMA)) return true; 4000 if (jj_3R_109()) return true; 4001 return false; 4002 } 4003 jj_3R_52()4004 private boolean jj_3R_52() { 4005 if (jj_3R_75()) return true; 4006 return false; 4007 } 4008 jj_3R_108()4009 private boolean jj_3R_108() { 4010 if (jj_scan_token(FALSE)) return true; 4011 return false; 4012 } 4013 jj_3R_67()4014 private boolean jj_3R_67() { 4015 if (jj_3R_47()) return true; 4016 return false; 4017 } 4018 jj_3R_107()4019 private boolean jj_3R_107() { 4020 if (jj_scan_token(TRUE)) return true; 4021 return false; 4022 } 4023 jj_3R_112()4024 private boolean jj_3R_112() { 4025 if (jj_scan_token(PIPE)) return true; 4026 if (jj_3R_109()) return true; 4027 return false; 4028 } 4029 jj_3_16()4030 private boolean jj_3_16() { 4031 if (jj_scan_token(DOT)) return true; 4032 Token xsp; 4033 xsp = jj_scanpos; 4034 if (jj_3_17()) { 4035 jj_scanpos = xsp; 4036 if (jj_3R_65()) return true; 4037 } 4038 while (true) { 4039 xsp = jj_scanpos; 4040 if (jj_3R_126()) { jj_scanpos = xsp; break; } 4041 } 4042 return false; 4043 } 4044 jj_3R_127()4045 private boolean jj_3R_127() { 4046 if (jj_scan_token(COMMA)) return true; 4047 if (jj_3R_58()) return true; 4048 if (jj_scan_token(COLON)) return true; 4049 if (jj_3R_58()) return true; 4050 return false; 4051 } 4052 jj_3R_51()4053 private boolean jj_3R_51() { 4054 if (jj_3R_47()) return true; 4055 return false; 4056 } 4057 jj_3_14()4058 private boolean jj_3_14() { 4059 if (jj_scan_token(DOT)) return true; 4060 Token xsp; 4061 xsp = jj_scanpos; 4062 if (jj_3_15()) { 4063 jj_scanpos = xsp; 4064 if (jj_3R_63()) return true; 4065 } 4066 while (true) { 4067 xsp = jj_scanpos; 4068 if (jj_3R_125()) { jj_scanpos = xsp; break; } 4069 } 4070 return false; 4071 } 4072 jj_3R_99()4073 private boolean jj_3R_99() { 4074 if (jj_3R_109()) return true; 4075 Token xsp; 4076 while (true) { 4077 xsp = jj_scanpos; 4078 if (jj_3R_137()) { jj_scanpos = xsp; break; } 4079 } 4080 return false; 4081 } 4082 jj_3R_71()4083 private boolean jj_3R_71() { 4084 if (jj_scan_token(LCURLY)) return true; 4085 Token xsp; 4086 xsp = jj_scanpos; 4087 if (jj_scan_token(67)) { 4088 jj_scanpos = xsp; 4089 if (jj_scan_token(70)) return true; 4090 } 4091 while (true) { 4092 xsp = jj_scanpos; 4093 if (jj_3R_111()) { jj_scanpos = xsp; break; } 4094 } 4095 while (true) { 4096 xsp = jj_scanpos; 4097 if (jj_3_16()) { jj_scanpos = xsp; break; } 4098 } 4099 xsp = jj_scanpos; 4100 if (jj_3R_112()) jj_scanpos = xsp; 4101 xsp = jj_scanpos; 4102 if (jj_scan_token(73)) { 4103 jj_scanpos = xsp; 4104 if (jj_scan_token(13)) return true; 4105 } 4106 return false; 4107 } 4108 jj_3R_70()4109 private boolean jj_3R_70() { 4110 Token xsp; 4111 xsp = jj_scanpos; 4112 if (jj_scan_token(67)) { 4113 jj_scanpos = xsp; 4114 if (jj_scan_token(70)) return true; 4115 } 4116 while (true) { 4117 xsp = jj_scanpos; 4118 if (jj_3R_100()) { jj_scanpos = xsp; break; } 4119 } 4120 while (true) { 4121 xsp = jj_scanpos; 4122 if (jj_3_14()) { jj_scanpos = xsp; break; } 4123 } 4124 return false; 4125 } 4126 jj_3R_59()4127 private boolean jj_3R_59() { 4128 Token xsp; 4129 xsp = jj_scanpos; 4130 if (jj_scan_token(32)) { 4131 jj_scanpos = xsp; 4132 if (jj_scan_token(33)) return true; 4133 } 4134 return false; 4135 } 4136 jj_3R_47()4137 private boolean jj_3R_47() { 4138 Token xsp; 4139 xsp = jj_scanpos; 4140 if (jj_3R_70()) { 4141 jj_scanpos = xsp; 4142 if (jj_3R_71()) return true; 4143 } 4144 return false; 4145 } 4146 jj_3R_110()4147 private boolean jj_3R_110() { 4148 if (jj_scan_token(INDEX_LBRACKET)) return true; 4149 if (jj_3R_131()) return true; 4150 if (jj_scan_token(INDEX_RBRACKET)) return true; 4151 return false; 4152 } 4153 jj_3R_66()4154 private boolean jj_3R_66() { 4155 Token xsp; 4156 xsp = jj_scanpos; 4157 if (jj_scan_token(32)) { 4158 jj_scanpos = xsp; 4159 if (jj_scan_token(33)) return true; 4160 } 4161 return false; 4162 } 4163 jj_3_13()4164 private boolean jj_3_13() { 4165 if (jj_scan_token(LBRACKET)) return true; 4166 Token xsp; 4167 while (true) { 4168 xsp = jj_scanpos; 4169 if (jj_3R_59()) { jj_scanpos = xsp; break; } 4170 } 4171 xsp = jj_scanpos; 4172 if (jj_3R_60()) { 4173 jj_scanpos = xsp; 4174 if (jj_3R_61()) return true; 4175 } 4176 while (true) { 4177 xsp = jj_scanpos; 4178 if (jj_3R_62()) { jj_scanpos = xsp; break; } 4179 } 4180 if (jj_scan_token(DOUBLEDOT)) return true; 4181 return false; 4182 } 4183 jj_3R_64()4184 private boolean jj_3R_64() { 4185 if (jj_3R_98()) return true; 4186 if (jj_scan_token(LPAREN)) return true; 4187 Token xsp; 4188 xsp = jj_scanpos; 4189 if (jj_3R_99()) jj_scanpos = xsp; 4190 if (jj_scan_token(REFMOD2_RPAREN)) return true; 4191 return false; 4192 } 4193 jj_3R_76()4194 private boolean jj_3R_76() { 4195 if (jj_3R_47()) return true; 4196 return false; 4197 } 4198 jj_3R_50()4199 private boolean jj_3R_50() { 4200 Token xsp; 4201 xsp = jj_scanpos; 4202 if (jj_scan_token(32)) { 4203 jj_scanpos = xsp; 4204 if (jj_scan_token(33)) return true; 4205 } 4206 return false; 4207 } 4208 jj_3R_96()4209 private boolean jj_3R_96() { 4210 if (jj_3R_104()) return true; 4211 return false; 4212 } 4213 jj_3R_95()4214 private boolean jj_3R_95() { 4215 if (jj_3R_47()) return true; 4216 return false; 4217 } 4218 jj_3R_94()4219 private boolean jj_3R_94() { 4220 if (jj_3R_108()) return true; 4221 return false; 4222 } 4223 jj_3R_93()4224 private boolean jj_3R_93() { 4225 if (jj_3R_107()) return true; 4226 return false; 4227 } 4228 jj_3R_97()4229 private boolean jj_3R_97() { 4230 Token xsp; 4231 xsp = jj_scanpos; 4232 if (jj_scan_token(32)) { 4233 jj_scanpos = xsp; 4234 if (jj_scan_token(33)) return true; 4235 } 4236 return false; 4237 } 4238 jj_3R_117()4239 private boolean jj_3R_117() { 4240 Token xsp; 4241 xsp = jj_scanpos; 4242 if (jj_scan_token(32)) { 4243 jj_scanpos = xsp; 4244 if (jj_scan_token(33)) return true; 4245 } 4246 return false; 4247 } 4248 jj_3R_86()4249 private boolean jj_3R_86() { 4250 if (jj_3R_108()) return true; 4251 return false; 4252 } 4253 jj_3R_92()4254 private boolean jj_3R_92() { 4255 if (jj_3R_106()) return true; 4256 return false; 4257 } 4258 jj_3R_91()4259 private boolean jj_3R_91() { 4260 if (jj_3R_105()) return true; 4261 return false; 4262 } 4263 jj_3_24()4264 private boolean jj_3_24() { 4265 if (jj_scan_token(LBRACKET)) return true; 4266 Token xsp; 4267 while (true) { 4268 xsp = jj_scanpos; 4269 if (jj_3R_66()) { jj_scanpos = xsp; break; } 4270 } 4271 xsp = jj_scanpos; 4272 if (jj_3R_67()) { 4273 jj_scanpos = xsp; 4274 if (jj_3R_68()) return true; 4275 } 4276 while (true) { 4277 xsp = jj_scanpos; 4278 if (jj_3R_69()) { jj_scanpos = xsp; break; } 4279 } 4280 if (jj_scan_token(DOUBLEDOT)) return true; 4281 return false; 4282 } 4283 jj_3R_90()4284 private boolean jj_3R_90() { 4285 if (jj_3R_103()) return true; 4286 return false; 4287 } 4288 jj_3R_89()4289 private boolean jj_3R_89() { 4290 if (jj_3R_75()) return true; 4291 return false; 4292 } 4293 jj_3R_85()4294 private boolean jj_3R_85() { 4295 if (jj_3R_107()) return true; 4296 return false; 4297 } 4298 jj_3R_173()4299 private boolean jj_3R_173() { 4300 Token xsp; 4301 xsp = jj_scanpos; 4302 if (jj_scan_token(32)) { 4303 jj_scanpos = xsp; 4304 if (jj_scan_token(33)) return true; 4305 } 4306 return false; 4307 } 4308 jj_3R_88()4309 private boolean jj_3R_88() { 4310 if (jj_3R_102()) return true; 4311 return false; 4312 } 4313 jj_3R_172()4314 private boolean jj_3R_172() { 4315 if (jj_scan_token(LPAREN)) return true; 4316 if (jj_3R_109()) return true; 4317 if (jj_scan_token(RPAREN)) return true; 4318 return false; 4319 } 4320 jj_3R_171()4321 private boolean jj_3R_171() { 4322 if (jj_3R_108()) return true; 4323 return false; 4324 } 4325 jj_3R_84()4326 private boolean jj_3R_84() { 4327 if (jj_3R_106()) return true; 4328 return false; 4329 } 4330 jj_3_5()4331 private boolean jj_3_5() { 4332 if (jj_scan_token(LBRACKET)) return true; 4333 Token xsp; 4334 while (true) { 4335 xsp = jj_scanpos; 4336 if (jj_3R_50()) { jj_scanpos = xsp; break; } 4337 } 4338 xsp = jj_scanpos; 4339 if (jj_3R_51()) { 4340 jj_scanpos = xsp; 4341 if (jj_3R_52()) return true; 4342 } 4343 while (true) { 4344 xsp = jj_scanpos; 4345 if (jj_3R_53()) { jj_scanpos = xsp; break; } 4346 } 4347 if (jj_scan_token(DOUBLEDOT)) return true; 4348 return false; 4349 } 4350 jj_3R_170()4351 private boolean jj_3R_170() { 4352 if (jj_3R_107()) return true; 4353 return false; 4354 } 4355 jj_3R_169()4356 private boolean jj_3R_169() { 4357 if (jj_3R_106()) return true; 4358 return false; 4359 } 4360 jj_3R_168()4361 private boolean jj_3R_168() { 4362 if (jj_3R_105()) return true; 4363 return false; 4364 } 4365 jj_3R_87()4366 private boolean jj_3R_87() { 4367 Token xsp; 4368 xsp = jj_scanpos; 4369 if (jj_scan_token(32)) { 4370 jj_scanpos = xsp; 4371 if (jj_scan_token(33)) return true; 4372 } 4373 return false; 4374 } 4375 jj_3R_167()4376 private boolean jj_3R_167() { 4377 if (jj_3R_104()) return true; 4378 return false; 4379 } 4380 jj_3R_83()4381 private boolean jj_3R_83() { 4382 if (jj_3R_105()) return true; 4383 return false; 4384 } 4385 jj_3R_58()4386 private boolean jj_3R_58() { 4387 Token xsp; 4388 while (true) { 4389 xsp = jj_scanpos; 4390 if (jj_3R_87()) { jj_scanpos = xsp; break; } 4391 } 4392 xsp = jj_scanpos; 4393 if (jj_3R_88()) { 4394 jj_scanpos = xsp; 4395 if (jj_3R_89()) { 4396 jj_scanpos = xsp; 4397 if (jj_3R_90()) { 4398 jj_scanpos = xsp; 4399 if (jj_3R_91()) { 4400 jj_scanpos = xsp; 4401 if (jj_3R_92()) { 4402 jj_scanpos = xsp; 4403 if (jj_3R_93()) { 4404 jj_scanpos = xsp; 4405 if (jj_3R_94()) { 4406 jj_scanpos = xsp; 4407 if (jj_3R_95()) { 4408 jj_scanpos = xsp; 4409 if (jj_3R_96()) return true; 4410 } 4411 } 4412 } 4413 } 4414 } 4415 } 4416 } 4417 } 4418 while (true) { 4419 xsp = jj_scanpos; 4420 if (jj_3R_97()) { jj_scanpos = xsp; break; } 4421 } 4422 return false; 4423 } 4424 jj_3R_166()4425 private boolean jj_3R_166() { 4426 if (jj_3R_103()) return true; 4427 return false; 4428 } 4429 jj_3R_165()4430 private boolean jj_3R_165() { 4431 if (jj_3R_75()) return true; 4432 return false; 4433 } 4434 jj_3R_164()4435 private boolean jj_3R_164() { 4436 if (jj_3R_47()) return true; 4437 return false; 4438 } 4439 jj_3R_82()4440 private boolean jj_3R_82() { 4441 if (jj_3R_104()) return true; 4442 return false; 4443 } 4444 jj_3R_163()4445 private boolean jj_3R_163() { 4446 if (jj_3R_102()) return true; 4447 return false; 4448 } 4449 jj_3R_162()4450 private boolean jj_3R_162() { 4451 Token xsp; 4452 xsp = jj_scanpos; 4453 if (jj_scan_token(32)) { 4454 jj_scanpos = xsp; 4455 if (jj_scan_token(33)) return true; 4456 } 4457 return false; 4458 } 4459 jj_3R_158()4460 private boolean jj_3R_158() { 4461 Token xsp; 4462 while (true) { 4463 xsp = jj_scanpos; 4464 if (jj_3R_162()) { jj_scanpos = xsp; break; } 4465 } 4466 xsp = jj_scanpos; 4467 if (jj_3R_163()) { 4468 jj_scanpos = xsp; 4469 if (jj_3R_164()) { 4470 jj_scanpos = xsp; 4471 if (jj_3R_165()) { 4472 jj_scanpos = xsp; 4473 if (jj_3R_166()) { 4474 jj_scanpos = xsp; 4475 if (jj_3R_167()) { 4476 jj_scanpos = xsp; 4477 if (jj_3R_168()) { 4478 jj_scanpos = xsp; 4479 if (jj_3R_169()) { 4480 jj_scanpos = xsp; 4481 if (jj_3R_170()) { 4482 jj_scanpos = xsp; 4483 if (jj_3R_171()) { 4484 jj_scanpos = xsp; 4485 if (jj_3R_172()) return true; 4486 } 4487 } 4488 } 4489 } 4490 } 4491 } 4492 } 4493 } 4494 } 4495 while (true) { 4496 xsp = jj_scanpos; 4497 if (jj_3R_173()) { jj_scanpos = xsp; break; } 4498 } 4499 return false; 4500 } 4501 jj_3R_154()4502 private boolean jj_3R_154() { 4503 if (jj_3R_158()) return true; 4504 return false; 4505 } 4506 jj_3R_81()4507 private boolean jj_3R_81() { 4508 if (jj_3R_103()) return true; 4509 return false; 4510 } 4511 jj_3R_153()4512 private boolean jj_3R_153() { 4513 if (jj_scan_token(MINUS)) return true; 4514 if (jj_3R_158()) return true; 4515 return false; 4516 } 4517 jj_3R_152()4518 private boolean jj_3R_152() { 4519 if (jj_scan_token(LOGICAL_NOT)) return true; 4520 if (jj_3R_145()) return true; 4521 return false; 4522 } 4523 jj_3R_119()4524 private boolean jj_3R_119() { 4525 if (jj_3R_75()) return true; 4526 return false; 4527 } 4528 jj_3R_134()4529 private boolean jj_3R_134() { 4530 Token xsp; 4531 xsp = jj_scanpos; 4532 if (jj_scan_token(32)) { 4533 jj_scanpos = xsp; 4534 if (jj_scan_token(33)) return true; 4535 } 4536 return false; 4537 } 4538 jj_3R_115()4539 private boolean jj_3R_115() { 4540 if (jj_3R_75()) return true; 4541 return false; 4542 } 4543 jj_3R_129()4544 private boolean jj_3R_129() { 4545 if (jj_scan_token(COMMA)) return true; 4546 if (jj_3R_58()) return true; 4547 return false; 4548 } 4549 jj_3R_133()4550 private boolean jj_3R_133() { 4551 Token xsp; 4552 xsp = jj_scanpos; 4553 if (jj_scan_token(32)) { 4554 jj_scanpos = xsp; 4555 if (jj_scan_token(33)) return true; 4556 } 4557 return false; 4558 } 4559 jj_3R_80()4560 private boolean jj_3R_80() { 4561 if (jj_3R_75()) return true; 4562 return false; 4563 } 4564 jj_3R_131()4565 private boolean jj_3R_131() { 4566 Token xsp; 4567 while (true) { 4568 xsp = jj_scanpos; 4569 if (jj_3R_133()) { jj_scanpos = xsp; break; } 4570 } 4571 if (jj_3R_109()) return true; 4572 while (true) { 4573 xsp = jj_scanpos; 4574 if (jj_3R_134()) { jj_scanpos = xsp; break; } 4575 } 4576 return false; 4577 } 4578 jj_3R_161()4579 private boolean jj_3R_161() { 4580 if (jj_scan_token(MODULUS)) return true; 4581 if (jj_3R_145()) return true; 4582 return false; 4583 } 4584 jj_3R_113()4585 private boolean jj_3R_113() { 4586 Token xsp; 4587 xsp = jj_scanpos; 4588 if (jj_scan_token(32)) { 4589 jj_scanpos = xsp; 4590 if (jj_scan_token(33)) return true; 4591 } 4592 return false; 4593 } 4594 jj_3R_151()4595 private boolean jj_3R_151() { 4596 Token xsp; 4597 xsp = jj_scanpos; 4598 if (jj_scan_token(32)) { 4599 jj_scanpos = xsp; 4600 if (jj_scan_token(33)) return true; 4601 } 4602 return false; 4603 } 4604 jj_3R_160()4605 private boolean jj_3R_160() { 4606 if (jj_scan_token(DIVIDE)) return true; 4607 if (jj_3R_145()) return true; 4608 return false; 4609 } 4610 jj_3R_159()4611 private boolean jj_3R_159() { 4612 if (jj_scan_token(MULTIPLY)) return true; 4613 if (jj_3R_145()) return true; 4614 return false; 4615 } 4616 jj_3R_155()4617 private boolean jj_3R_155() { 4618 Token xsp; 4619 xsp = jj_scanpos; 4620 if (jj_3R_159()) { 4621 jj_scanpos = xsp; 4622 if (jj_3R_160()) { 4623 jj_scanpos = xsp; 4624 if (jj_3R_161()) return true; 4625 } 4626 } 4627 return false; 4628 } 4629 jj_3R_145()4630 private boolean jj_3R_145() { 4631 Token xsp; 4632 while (true) { 4633 xsp = jj_scanpos; 4634 if (jj_3R_151()) { jj_scanpos = xsp; break; } 4635 } 4636 xsp = jj_scanpos; 4637 if (jj_3R_152()) { 4638 jj_scanpos = xsp; 4639 if (jj_3R_153()) { 4640 jj_scanpos = xsp; 4641 if (jj_3R_154()) return true; 4642 } 4643 } 4644 return false; 4645 } 4646 jj_3R_79()4647 private boolean jj_3R_79() { 4648 if (jj_3R_102()) return true; 4649 return false; 4650 } 4651 jj_3R_120()4652 private boolean jj_3R_120() { 4653 Token xsp; 4654 xsp = jj_scanpos; 4655 if (jj_scan_token(32)) { 4656 jj_scanpos = xsp; 4657 if (jj_scan_token(33)) return true; 4658 } 4659 return false; 4660 } 4661 jj_3R_78()4662 private boolean jj_3R_78() { 4663 if (jj_3R_101()) return true; 4664 return false; 4665 } 4666 jj_3R_118()4667 private boolean jj_3R_118() { 4668 if (jj_3R_47()) return true; 4669 return false; 4670 } 4671 jj_3R_114()4672 private boolean jj_3R_114() { 4673 if (jj_3R_47()) return true; 4674 return false; 4675 } 4676 jj_3R_116()4677 private boolean jj_3R_116() { 4678 Token xsp; 4679 xsp = jj_scanpos; 4680 if (jj_scan_token(32)) { 4681 jj_scanpos = xsp; 4682 if (jj_scan_token(33)) return true; 4683 } 4684 return false; 4685 } 4686 jj_3R_123()4687 private boolean jj_3R_123() { 4688 if (jj_3R_58()) return true; 4689 Token xsp; 4690 while (true) { 4691 xsp = jj_scanpos; 4692 if (jj_3R_129()) { jj_scanpos = xsp; break; } 4693 } 4694 return false; 4695 } 4696 jj_3R_77()4697 private boolean jj_3R_77() { 4698 if (jj_3R_47()) return true; 4699 return false; 4700 } 4701 jj_3R_56()4702 private boolean jj_3R_56() { 4703 Token xsp; 4704 xsp = jj_scanpos; 4705 if (jj_3R_77()) { 4706 jj_scanpos = xsp; 4707 if (jj_3R_78()) { 4708 jj_scanpos = xsp; 4709 if (jj_3R_79()) { 4710 jj_scanpos = xsp; 4711 if (jj_3R_80()) { 4712 jj_scanpos = xsp; 4713 if (jj_3R_81()) { 4714 jj_scanpos = xsp; 4715 if (jj_3R_82()) { 4716 jj_scanpos = xsp; 4717 if (jj_3R_83()) { 4718 jj_scanpos = xsp; 4719 if (jj_3R_84()) { 4720 jj_scanpos = xsp; 4721 if (jj_3R_85()) { 4722 jj_scanpos = xsp; 4723 if (jj_3R_86()) return true; 4724 } 4725 } 4726 } 4727 } 4728 } 4729 } 4730 } 4731 } 4732 } 4733 return false; 4734 } 4735 jj_3R_103()4736 private boolean jj_3R_103() { 4737 if (jj_scan_token(LBRACKET)) return true; 4738 Token xsp; 4739 while (true) { 4740 xsp = jj_scanpos; 4741 if (jj_3R_113()) { jj_scanpos = xsp; break; } 4742 } 4743 xsp = jj_scanpos; 4744 if (jj_3R_114()) { 4745 jj_scanpos = xsp; 4746 if (jj_3R_115()) return true; 4747 } 4748 while (true) { 4749 xsp = jj_scanpos; 4750 if (jj_3R_116()) { jj_scanpos = xsp; break; } 4751 } 4752 if (jj_scan_token(DOUBLEDOT)) return true; 4753 while (true) { 4754 xsp = jj_scanpos; 4755 if (jj_3R_117()) { jj_scanpos = xsp; break; } 4756 } 4757 xsp = jj_scanpos; 4758 if (jj_3R_118()) { 4759 jj_scanpos = xsp; 4760 if (jj_3R_119()) return true; 4761 } 4762 while (true) { 4763 xsp = jj_scanpos; 4764 if (jj_3R_120()) { jj_scanpos = xsp; break; } 4765 } 4766 if (jj_scan_token(RBRACKET)) return true; 4767 return false; 4768 } 4769 jj_3R_141()4770 private boolean jj_3R_141() { 4771 if (jj_3R_145()) return true; 4772 Token xsp; 4773 while (true) { 4774 xsp = jj_scanpos; 4775 if (jj_3R_155()) { jj_scanpos = xsp; break; } 4776 } 4777 return false; 4778 } 4779 jj_3R_157()4780 private boolean jj_3R_157() { 4781 if (jj_scan_token(MINUS)) return true; 4782 if (jj_3R_141()) return true; 4783 return false; 4784 } 4785 jj_3R_156()4786 private boolean jj_3R_156() { 4787 if (jj_scan_token(PLUS)) return true; 4788 if (jj_3R_141()) return true; 4789 return false; 4790 } 4791 jj_3R_146()4792 private boolean jj_3R_146() { 4793 Token xsp; 4794 xsp = jj_scanpos; 4795 if (jj_3R_156()) { 4796 jj_scanpos = xsp; 4797 if (jj_3R_157()) return true; 4798 } 4799 return false; 4800 } 4801 jj_3R_101()4802 private boolean jj_3R_101() { 4803 if (jj_scan_token(WORD)) return true; 4804 return false; 4805 } 4806 jj_3R_57()4807 private boolean jj_3R_57() { 4808 Token xsp; 4809 xsp = jj_scanpos; 4810 if (jj_scan_token(32)) { 4811 jj_scanpos = xsp; 4812 if (jj_scan_token(33)) return true; 4813 } 4814 return false; 4815 } 4816 jj_3R_139()4817 private boolean jj_3R_139() { 4818 if (jj_3R_141()) return true; 4819 Token xsp; 4820 while (true) { 4821 xsp = jj_scanpos; 4822 if (jj_3R_146()) { jj_scanpos = xsp; break; } 4823 } 4824 return false; 4825 } 4826 jj_3_12()4827 private boolean jj_3_12() { 4828 Token xsp; 4829 while (true) { 4830 xsp = jj_scanpos; 4831 if (jj_3R_57()) { jj_scanpos = xsp; break; } 4832 } 4833 if (jj_3R_58()) return true; 4834 if (jj_scan_token(COLON)) return true; 4835 return false; 4836 } 4837 jj_3R_106()4838 private boolean jj_3R_106() { 4839 if (jj_scan_token(LBRACKET)) return true; 4840 Token xsp; 4841 xsp = jj_scanpos; 4842 if (jj_3R_123()) jj_scanpos = xsp; 4843 if (jj_scan_token(RBRACKET)) return true; 4844 return false; 4845 } 4846 jj_3R_150()4847 private boolean jj_3R_150() { 4848 if (jj_scan_token(LOGICAL_GE)) return true; 4849 if (jj_3R_139()) return true; 4850 return false; 4851 } 4852 jj_3R_149()4853 private boolean jj_3R_149() { 4854 if (jj_scan_token(LOGICAL_LE)) return true; 4855 if (jj_3R_139()) return true; 4856 return false; 4857 } 4858 jj_3R_98()4859 private boolean jj_3R_98() { 4860 Token xsp; 4861 xsp = jj_scanpos; 4862 if (jj_scan_token(67)) { 4863 jj_scanpos = xsp; 4864 if (jj_scan_token(70)) return true; 4865 } 4866 return false; 4867 } 4868 jj_3R_148()4869 private boolean jj_3R_148() { 4870 if (jj_scan_token(LOGICAL_GT)) return true; 4871 if (jj_3R_139()) return true; 4872 return false; 4873 } 4874 jj_3R_142()4875 private boolean jj_3R_142() { 4876 Token xsp; 4877 xsp = jj_scanpos; 4878 if (jj_3R_147()) { 4879 jj_scanpos = xsp; 4880 if (jj_3R_148()) { 4881 jj_scanpos = xsp; 4882 if (jj_3R_149()) { 4883 jj_scanpos = xsp; 4884 if (jj_3R_150()) return true; 4885 } 4886 } 4887 } 4888 return false; 4889 } 4890 jj_3R_147()4891 private boolean jj_3R_147() { 4892 if (jj_scan_token(LOGICAL_LT)) return true; 4893 if (jj_3R_139()) return true; 4894 return false; 4895 } 4896 jj_3R_128()4897 private boolean jj_3R_128() { 4898 Token xsp; 4899 xsp = jj_scanpos; 4900 if (jj_scan_token(32)) { 4901 jj_scanpos = xsp; 4902 if (jj_scan_token(33)) return true; 4903 } 4904 return false; 4905 } 4906 jj_3R_122()4907 private boolean jj_3R_122() { 4908 Token xsp; 4909 while (true) { 4910 xsp = jj_scanpos; 4911 if (jj_3R_128()) { jj_scanpos = xsp; break; } 4912 } 4913 return false; 4914 } 4915 jj_3R_121()4916 private boolean jj_3R_121() { 4917 if (jj_3R_58()) return true; 4918 if (jj_scan_token(COLON)) return true; 4919 if (jj_3R_58()) return true; 4920 Token xsp; 4921 while (true) { 4922 xsp = jj_scanpos; 4923 if (jj_3R_127()) { jj_scanpos = xsp; break; } 4924 } 4925 return false; 4926 } 4927 jj_3R_136()4928 private boolean jj_3R_136() { 4929 if (jj_3R_139()) return true; 4930 Token xsp; 4931 while (true) { 4932 xsp = jj_scanpos; 4933 if (jj_3R_142()) { jj_scanpos = xsp; break; } 4934 } 4935 return false; 4936 } 4937 jj_3R_144()4938 private boolean jj_3R_144() { 4939 if (jj_scan_token(LOGICAL_NOT_EQUALS)) return true; 4940 if (jj_3R_136()) return true; 4941 return false; 4942 } 4943 jj_3R_105()4944 private boolean jj_3R_105() { 4945 if (jj_scan_token(LEFT_CURLEY)) return true; 4946 Token xsp; 4947 xsp = jj_scanpos; 4948 if (jj_3R_121()) { 4949 jj_scanpos = xsp; 4950 if (jj_3R_122()) return true; 4951 } 4952 xsp = jj_scanpos; 4953 if (jj_scan_token(13)) { 4954 jj_scanpos = xsp; 4955 if (jj_scan_token(73)) return true; 4956 } 4957 return false; 4958 } 4959 jj_3R_140()4960 private boolean jj_3R_140() { 4961 Token xsp; 4962 xsp = jj_scanpos; 4963 if (jj_3R_143()) { 4964 jj_scanpos = xsp; 4965 if (jj_3R_144()) return true; 4966 } 4967 return false; 4968 } 4969 jj_3R_143()4970 private boolean jj_3R_143() { 4971 if (jj_scan_token(LOGICAL_EQUALS)) return true; 4972 if (jj_3R_136()) return true; 4973 return false; 4974 } 4975 jj_3R_102()4976 private boolean jj_3R_102() { 4977 if (jj_scan_token(STRING_LITERAL)) return true; 4978 return false; 4979 } 4980 jj_3R_132()4981 private boolean jj_3R_132() { 4982 if (jj_3R_136()) return true; 4983 Token xsp; 4984 while (true) { 4985 xsp = jj_scanpos; 4986 if (jj_3R_140()) { jj_scanpos = xsp; break; } 4987 } 4988 return false; 4989 } 4990 jj_3R_75()4991 private boolean jj_3R_75() { 4992 if (jj_scan_token(INTEGER_LITERAL)) return true; 4993 return false; 4994 } 4995 jj_3R_138()4996 private boolean jj_3R_138() { 4997 if (jj_scan_token(LOGICAL_AND)) return true; 4998 if (jj_3R_132()) return true; 4999 return false; 5000 } 5001 jj_3R_130()5002 private boolean jj_3R_130() { 5003 if (jj_3R_132()) return true; 5004 Token xsp; 5005 while (true) { 5006 xsp = jj_scanpos; 5007 if (jj_3R_138()) { jj_scanpos = xsp; break; } 5008 } 5009 return false; 5010 } 5011 jj_3R_104()5012 private boolean jj_3R_104() { 5013 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; 5014 return false; 5015 } 5016 jj_3R_135()5017 private boolean jj_3R_135() { 5018 Token xsp; 5019 xsp = jj_scanpos; 5020 if (jj_scan_token(44)) { 5021 jj_scanpos = xsp; 5022 if (jj_scan_token(4)) return true; 5023 } 5024 if (jj_3R_130()) return true; 5025 return false; 5026 } 5027 jj_3R_124()5028 private boolean jj_3R_124() { 5029 if (jj_3R_130()) return true; 5030 Token xsp; 5031 while (true) { 5032 xsp = jj_scanpos; 5033 if (jj_3R_135()) { jj_scanpos = xsp; break; } 5034 } 5035 return false; 5036 } 5037 jj_3R_72()5038 private boolean jj_3R_72() { 5039 if (jj_scan_token(SINGLE_LINE_COMMENT_START)) return true; 5040 Token xsp; 5041 xsp = jj_scanpos; 5042 if (jj_scan_token(26)) jj_scanpos = xsp; 5043 return false; 5044 } 5045 jj_3R_48()5046 private boolean jj_3R_48() { 5047 Token xsp; 5048 xsp = jj_scanpos; 5049 if (jj_3R_72()) { 5050 jj_scanpos = xsp; 5051 if (jj_3R_73()) { 5052 jj_scanpos = xsp; 5053 if (jj_3R_74()) return true; 5054 } 5055 } 5056 return false; 5057 } 5058 jj_3R_74()5059 private boolean jj_3R_74() { 5060 if (jj_scan_token(FORMAL_COMMENT)) return true; 5061 return false; 5062 } 5063 jj_3R_73()5064 private boolean jj_3R_73() { 5065 if (jj_scan_token(MULTI_LINE_COMMENT)) return true; 5066 return false; 5067 } 5068 jj_3R_109()5069 private boolean jj_3R_109() { 5070 if (jj_3R_124()) return true; 5071 return false; 5072 } 5073 jj_3_11()5074 private boolean jj_3_11() { 5075 Token xsp; 5076 xsp = jj_scanpos; 5077 if (jj_scan_token(32)) jj_scanpos = xsp; 5078 if (jj_scan_token(NEWLINE)) return true; 5079 return false; 5080 } 5081 jj_3_23()5082 private boolean jj_3_23() { 5083 Token xsp; 5084 xsp = jj_scanpos; 5085 if (jj_scan_token(32)) jj_scanpos = xsp; 5086 if (jj_scan_token(NEWLINE)) return true; 5087 return false; 5088 } 5089 jj_3_10()5090 private boolean jj_3_10() { 5091 if (jj_scan_token(WHITESPACE)) return true; 5092 return false; 5093 } 5094 jj_3_4()5095 private boolean jj_3_4() { 5096 if (jj_scan_token(DOUBLE_ESCAPE)) return true; 5097 return false; 5098 } 5099 jj_3_9()5100 private boolean jj_3_9() { 5101 Token xsp; 5102 xsp = jj_scanpos; 5103 if (jj_scan_token(32)) jj_scanpos = xsp; 5104 if (jj_scan_token(NEWLINE)) return true; 5105 return false; 5106 } 5107 jj_3_22()5108 private boolean jj_3_22() { 5109 Token xsp; 5110 xsp = jj_scanpos; 5111 if (jj_scan_token(32)) jj_scanpos = xsp; 5112 if (jj_scan_token(NEWLINE)) return true; 5113 return false; 5114 } 5115 jj_3_8()5116 private boolean jj_3_8() { 5117 if (jj_scan_token(WHITESPACE)) return true; 5118 return false; 5119 } 5120 jj_3R_49()5121 private boolean jj_3R_49() { 5122 if (jj_scan_token(ZERO_WIDTH_WHITESPACE)) return true; 5123 if (jj_scan_token(0)) return true; 5124 return false; 5125 } 5126 jj_3_3()5127 private boolean jj_3_3() { 5128 if (jj_3R_49()) return true; 5129 return false; 5130 } 5131 jj_3_2()5132 private boolean jj_3_2() { 5133 if (jj_3R_48()) return true; 5134 return false; 5135 } 5136 jj_3_1()5137 private boolean jj_3_1() { 5138 if (jj_3R_47()) return true; 5139 return false; 5140 } 5141 jj_3_21()5142 private boolean jj_3_21() { 5143 Token xsp; 5144 xsp = jj_scanpos; 5145 if (jj_scan_token(32)) jj_scanpos = xsp; 5146 if (jj_scan_token(NEWLINE)) return true; 5147 return false; 5148 } 5149 jj_3_7()5150 private boolean jj_3_7() { 5151 Token xsp; 5152 xsp = jj_scanpos; 5153 if (jj_scan_token(32)) jj_scanpos = xsp; 5154 if (jj_scan_token(NEWLINE)) return true; 5155 return false; 5156 } 5157 5158 /** Generated Token Manager. */ 5159 public StandardParserTokenManager token_source; 5160 /** Current token. */ 5161 public Token token; 5162 /** Next token. */ 5163 public Token jj_nt; 5164 private int jj_ntk; 5165 private Token jj_scanpos, jj_lastpos; 5166 private int jj_la; 5167 /** Whether we are looking ahead. */ 5168 private boolean jj_lookingAhead = false; 5169 private boolean jj_semLA; 5170 private int jj_gen; 5171 final private int[] jj_la1 = new int[107]; 5172 static private int[] jj_la1_0; 5173 static private int[] jj_la1_1; 5174 static private int[] jj_la1_2; 5175 static { jj_la1_init_0()5176 jj_la1_init_0(); jj_la1_init_1()5177 jj_la1_init_1(); jj_la1_init_2()5178 jj_la1_init_2(); 5179 } jj_la1_init_0()5180 private static void jj_la1_init_0() { 5181 jj_la1_0 = new int[] {0x0,0x20000000,0x20000,0xc022,0x14,0x4000000,0x1a000000,0x0,0x0,0x1080,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x4000000,0x2000000,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x2000,0x200,0x1080,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1080,0x0,0x0,0x200,0x5080,0x0,0x8,0x0,0x8,0x0,0x8,0x0,0x8,0x20,0x2000,0x0,0xc022,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x5080,0x0,0x0,0x0,0x5080,0x0,0x0,}; 5182 } jj_la1_init_1()5183 private static void jj_la1_init_1() { 5184 jj_la1_1 = new int[] {0x0,0x0,0x0,0xc00000f,0x0,0x0,0x0,0x0,0x84000008,0x8000030,0x1,0x80000000,0x3,0x3,0x3,0x3,0x3,0x3,0x0,0x3,0x3,0x3,0x3,0x0,0x0,0x3,0x3,0x1,0x1,0x1,0x0,0x3,0x3,0x0,0x0,0xc00003b,0x3,0x3,0x4000000,0x3,0x3,0x3,0x3,0x4000000,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4000008,0x8000030,0x3,0x3,0x0,0xc08007b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc000008,0x1,0x3,0x3,0x1,0x1,0x1,0x1,0x1,0x3,0x3,0x1,0x1,0x3,0x3,0x3,0x3,0x1,0x1000,0x1000,0x800,0x60000,0x60000,0x1e000,0x1e000,0xc0,0xc0,0x700,0x700,0x3,0x3,0xc08007b,0x3,0x3,0x4000008,0x8000030,0x3,0x3,}; 5185 } jj_la1_init_2()5186 private static void jj_la1_init_2() { 5187 jj_la1_2 = new int[] {0x4000,0x0,0x1000,0x1e380,0x0,0x0,0x0,0x48,0x148,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x148,0x0,0x0,0x148,0x0,0x0,0x0,0x0,0x148,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x148,0x0,0x0,0x0,0x148,0x48,0x0,0x48,0x0,0x48,0x0,0x48,0x0,0x0,0x200,0x148,0x16380,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x148,0x0,0x0,0x148,0x0,0x0,0x0,}; 5188 } 5189 final private JJCalls[] jj_2_rtns = new JJCalls[24]; 5190 private boolean jj_rescan = false; 5191 private int jj_gc = 0; 5192 5193 /** Constructor with user supplied CharStream. */ StandardParser(CharStream stream)5194 public StandardParser(CharStream stream) { 5195 token_source = new StandardParserTokenManager(this, stream); 5196 token = new Token(); 5197 jj_ntk = -1; 5198 jj_gen = 0; 5199 for (int i = 0; i < 107; i++) jj_la1[i] = -1; 5200 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 5201 } 5202 5203 /** Reinitialise. */ ReInit(CharStream stream)5204 public void ReInit(CharStream stream) { 5205 token_source.ReInit(stream); 5206 token = new Token(); 5207 jj_ntk = -1; 5208 jj_lookingAhead = false; 5209 jjtree.reset(); 5210 jj_gen = 0; 5211 for (int i = 0; i < 107; i++) jj_la1[i] = -1; 5212 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 5213 } 5214 5215 /** Constructor with generated Token Manager. */ StandardParser(StandardParserTokenManager tm)5216 public StandardParser(StandardParserTokenManager tm) { 5217 token_source = tm; 5218 token = new Token(); 5219 jj_ntk = -1; 5220 jj_gen = 0; 5221 for (int i = 0; i < 107; i++) jj_la1[i] = -1; 5222 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 5223 } 5224 5225 /** Reinitialise. */ ReInit(StandardParserTokenManager tm)5226 public void ReInit(StandardParserTokenManager tm) { 5227 token_source = tm; 5228 token = new Token(); 5229 jj_ntk = -1; 5230 jjtree.reset(); 5231 jj_gen = 0; 5232 for (int i = 0; i < 107; i++) jj_la1[i] = -1; 5233 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); 5234 } 5235 jj_consume_token(int kind)5236 private Token jj_consume_token(int kind) throws ParseException { 5237 Token oldToken; 5238 if ((oldToken = token).next != null) token = token.next; 5239 else token = token.next = token_source.getNextToken(); 5240 jj_ntk = -1; 5241 if (token.kind == kind) { 5242 jj_gen++; 5243 if (++jj_gc > 100) { 5244 jj_gc = 0; 5245 for (int i = 0; i < jj_2_rtns.length; i++) { 5246 JJCalls c = jj_2_rtns[i]; 5247 while (c != null) { 5248 if (c.gen < jj_gen) c.first = null; 5249 c = c.next; 5250 } 5251 } 5252 } 5253 return token; 5254 } 5255 token = oldToken; 5256 jj_kind = kind; 5257 throw generateParseException(); 5258 } 5259 5260 static private final class LookaheadSuccess extends java.lang.Error { } 5261 final private LookaheadSuccess jj_ls = new LookaheadSuccess(); jj_scan_token(int kind)5262 private boolean jj_scan_token(int kind) { 5263 if (jj_scanpos == jj_lastpos) { 5264 jj_la--; 5265 if (jj_scanpos.next == null) { 5266 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); 5267 } else { 5268 jj_lastpos = jj_scanpos = jj_scanpos.next; 5269 } 5270 } else { 5271 jj_scanpos = jj_scanpos.next; 5272 } 5273 if (jj_rescan) { 5274 int i = 0; Token tok = token; 5275 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } 5276 if (tok != null) jj_add_error_token(kind, i); 5277 } 5278 if (jj_scanpos.kind != kind) return true; 5279 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls; 5280 return false; 5281 } 5282 5283 5284 /** Get the next Token. */ getNextToken()5285 final public Token getNextToken() { 5286 if (token.next != null) token = token.next; 5287 else token = token.next = token_source.getNextToken(); 5288 jj_ntk = -1; 5289 jj_gen++; 5290 return token; 5291 } 5292 5293 /** Get the specific Token. */ getToken(int index)5294 final public Token getToken(int index) { 5295 Token t = jj_lookingAhead ? jj_scanpos : token; 5296 for (int i = 0; i < index; i++) { 5297 if (t.next != null) t = t.next; 5298 else t = t.next = token_source.getNextToken(); 5299 } 5300 return t; 5301 } 5302 jj_ntk()5303 private int jj_ntk() { 5304 if ((jj_nt=token.next) == null) 5305 return (jj_ntk = (token.next=token_source.getNextToken()).kind); 5306 else 5307 return (jj_ntk = jj_nt.kind); 5308 } 5309 5310 private java.util.List<int[]> jj_expentries = new java.util.ArrayList<int[]>(); 5311 private int[] jj_expentry; 5312 private int jj_kind = -1; 5313 private int[] jj_lasttokens = new int[100]; 5314 private int jj_endpos; 5315 jj_add_error_token(int kind, int pos)5316 private void jj_add_error_token(int kind, int pos) { 5317 if (pos >= 100) return; 5318 if (pos == jj_endpos + 1) { 5319 jj_lasttokens[jj_endpos++] = kind; 5320 } else if (jj_endpos != 0) { 5321 jj_expentry = new int[jj_endpos]; 5322 for (int i = 0; i < jj_endpos; i++) { 5323 jj_expentry[i] = jj_lasttokens[i]; 5324 } 5325 jj_entries_loop: for (java.util.Iterator<?> it = jj_expentries.iterator(); it.hasNext();) { 5326 int[] oldentry = (int[])(it.next()); 5327 if (oldentry.length == jj_expentry.length) { 5328 for (int i = 0; i < jj_expentry.length; i++) { 5329 if (oldentry[i] != jj_expentry[i]) { 5330 continue jj_entries_loop; 5331 } 5332 } 5333 jj_expentries.add(jj_expentry); 5334 break jj_entries_loop; 5335 } 5336 } 5337 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; 5338 } 5339 } 5340 5341 /** Generate ParseException. */ generateParseException()5342 public ParseException generateParseException() { 5343 jj_expentries.clear(); 5344 boolean[] la1tokens = new boolean[81]; 5345 if (jj_kind >= 0) { 5346 la1tokens[jj_kind] = true; 5347 jj_kind = -1; 5348 } 5349 for (int i = 0; i < 107; i++) { 5350 if (jj_la1[i] == jj_gen) { 5351 for (int j = 0; j < 32; j++) { 5352 if ((jj_la1_0[i] & (1<<j)) != 0) { 5353 la1tokens[j] = true; 5354 } 5355 if ((jj_la1_1[i] & (1<<j)) != 0) { 5356 la1tokens[32+j] = true; 5357 } 5358 if ((jj_la1_2[i] & (1<<j)) != 0) { 5359 la1tokens[64+j] = true; 5360 } 5361 } 5362 } 5363 } 5364 for (int i = 0; i < 81; i++) { 5365 if (la1tokens[i]) { 5366 jj_expentry = new int[1]; 5367 jj_expentry[0] = i; 5368 jj_expentries.add(jj_expentry); 5369 } 5370 } 5371 jj_endpos = 0; 5372 jj_rescan_token(); 5373 jj_add_error_token(0, 0); 5374 int[][] exptokseq = new int[jj_expentries.size()][]; 5375 for (int i = 0; i < jj_expentries.size(); i++) { 5376 exptokseq[i] = jj_expentries.get(i); 5377 } 5378 return new ParseException(token, exptokseq, tokenImage); 5379 } 5380 5381 /** Enable tracing. */ enable_tracing()5382 final public void enable_tracing() { 5383 } 5384 5385 /** Disable tracing. */ disable_tracing()5386 final public void disable_tracing() { 5387 } 5388 jj_rescan_token()5389 private void jj_rescan_token() { 5390 jj_rescan = true; 5391 for (int i = 0; i < 24; i++) { 5392 try { 5393 JJCalls p = jj_2_rtns[i]; 5394 do { 5395 if (p.gen > jj_gen) { 5396 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; 5397 switch (i) { 5398 case 0: jj_3_1(); break; 5399 case 1: jj_3_2(); break; 5400 case 2: jj_3_3(); break; 5401 case 3: jj_3_4(); break; 5402 case 4: jj_3_5(); break; 5403 case 5: jj_3_6(); break; 5404 case 6: jj_3_7(); break; 5405 case 7: jj_3_8(); break; 5406 case 8: jj_3_9(); break; 5407 case 9: jj_3_10(); break; 5408 case 10: jj_3_11(); break; 5409 case 11: jj_3_12(); break; 5410 case 12: jj_3_13(); break; 5411 case 13: jj_3_14(); break; 5412 case 14: jj_3_15(); break; 5413 case 15: jj_3_16(); break; 5414 case 16: jj_3_17(); break; 5415 case 17: jj_3_18(); break; 5416 case 18: jj_3_19(); break; 5417 case 19: jj_3_20(); break; 5418 case 20: jj_3_21(); break; 5419 case 21: jj_3_22(); break; 5420 case 22: jj_3_23(); break; 5421 case 23: jj_3_24(); break; 5422 } 5423 } 5424 p = p.next; 5425 } while (p != null); 5426 } catch(LookaheadSuccess ls) { } 5427 } 5428 jj_rescan = false; 5429 } 5430 jj_save(int index, int xla)5431 private void jj_save(int index, int xla) { 5432 JJCalls p = jj_2_rtns[index]; 5433 while (p.gen > jj_gen) { 5434 if (p.next == null) { p = p.next = new JJCalls(); break; } 5435 p = p.next; 5436 } 5437 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; 5438 } 5439 5440 static final class JJCalls { 5441 int gen; 5442 Token first; 5443 int arg; 5444 JJCalls next; 5445 } 5446 5447 } 5448