1
2 package org.apache.velocity.runtime.parser;
3
4 import java.io.*;
5 import java.util.*;
6
7 import org.apache.velocity.runtime.RuntimeServices;
8 import org.apache.velocity.runtime.parser.node.*;
9 import org.apache.velocity.runtime.directive.Directive;
10 import org.apache.velocity.runtime.directive.Macro;
11 import org.apache.velocity.runtime.directive.MacroParseException;
12 import org.apache.velocity.util.StringUtils;
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class Parser
29 protected JJTParserState jjtree = new JJTParserState();
30
31
32 private Hashtable directives = new Hashtable(0);
33
34
35
36
37 String currentTemplateName = "";
38
39 VelocityCharStream velcharstream = null;
40
41 private RuntimeServices rsvc = null;
42
43
44
45
46
47
48
49
50 public Parser( RuntimeServices rs)
51 {
52
53
54
55
56 this( new VelocityCharStream(
57 new ByteArrayInputStream("\n".getBytes()), 1, 1 ));
58
59
60
61
62 velcharstream = new VelocityCharStream(
63 new ByteArrayInputStream("\n".getBytes()), 1, 1 );
64
65
66
67
68 rsvc = rs;
69 }
70
71
72
73
74
75
76
77
78
79
80 public SimpleNode parse( Reader reader, String templateName )
81 throws ParseException
82 {
83 SimpleNode sn = null;
84
85 currentTemplateName = templateName;
86
87 try
88 {
89 token_source.clearStateVars();
90
91
92
93
94
95 velcharstream.ReInit( reader, 1, 1 );
96
97
98
99
100 ReInit( velcharstream );
101
102
103
104
105 sn = process();
106 }
107 catch (MacroParseException mee)
108 {
109
110
111
112
113 rsvc.getLog().error("Parser Error: #macro() : " + templateName, mee);
114 throw mee;
115 }
116 catch (ParseException pe)
117 {
118 rsvc.getLog().error("Parser Exception: " + templateName, pe);
119 throw new TemplateParseException (pe.currentToken,
120 pe.expectedTokenSequences, pe.tokenImage, currentTemplateName);
121 }
122 catch (TokenMgrError tme)
123 {
124 throw new ParseException("Lexical error: " + tme.toString());
125 }
126 catch (Exception e)
127 {
128 rsvc.getLog().error("Parser Error: " + templateName, e);
129 }
130
131 currentTemplateName = "";
132
133 return sn;
134 }
135
136
137
138
139 public void setDirectives(Hashtable directives)
140 {
141 this.directives = directives;
142 }
143
144
145
146
147 public Directive getDirective(String directive)
148 {
149 return (Directive) directives.get(directive);
150 }
151
152
153
154
155
156 public boolean isDirective(String directive)
157 {
158 return directives.containsKey(directive);
159 }
160
161
162
163
164
165
166 private String escapedDirective( String strImage )
167 {
168 int iLast = strImage.lastIndexOf("\\");
169
170 String strDirective = strImage.substring(iLast + 1);
171
172 boolean bRecognizedDirective = false;
173
174
175
176
177
178 if ( isDirective( strDirective.substring(1)))
179 {
180 bRecognizedDirective = true;
181 }
182 else if ( rsvc.isVelocimacro( strDirective.substring(1), currentTemplateName))
183 {
184 bRecognizedDirective = true;
185 }
186 else
187 {
188
189
190 if ( strDirective.substring(1).equals("if")
191 || strDirective.substring(1).equals("end")
192 || strDirective.substring(1).equals("set")
193 || strDirective.substring(1).equals("else")
194 || strDirective.substring(1).equals("elseif")
195 || strDirective.substring(1).equals("stop")
196 )
197 {
198 bRecognizedDirective = true;
199 }
200 }
201
202
203
204
205
206
207 if (bRecognizedDirective)
208 return ( strImage.substring(0,iLast/2) + strDirective);
209 else
210 return ( strImage );
211 }
212
213
214
215
216
217
218
219
220
221
222 final public SimpleNode process() throws ParseException {
223
224 ASTprocess jjtn000 = new ASTprocess(this, JJTPROCESS);
225 boolean jjtc000 = true;
226 jjtree.openNodeScope(jjtn000);
227 try {
228 label_1:
229 while (true) {
230 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
231 case LPAREN:
232 case RPAREN:
233 case ESCAPE_DIRECTIVE:
234 case SET_DIRECTIVE:
235 case SINGLE_LINE_COMMENT_START:
236 case DOUBLE_ESCAPE:
237 case ESCAPE:
238 case TEXT:
239 case FORMAL_COMMENT:
240 case MULTI_LINE_COMMENT:
241 case STRING_LITERAL:
242 case IF_DIRECTIVE:
243 case STOP_DIRECTIVE:
244 case INTEGER_LITERAL:
245 case FLOATING_POINT_LITERAL:
246 case WORD:
247 case BRACKETED_WORD:
248 case IDENTIFIER:
249 case DOT:
250 case LCURLY:
251 case RCURLY:
252 ;
253 break;
254 default:
255 jj_la1[0] = jj_gen;
256 break label_1;
257 }
258 Statement();
259 }
260 jj_consume_token(0);
261 jjtree.closeNodeScope(jjtn000, true);
262 jjtc000 = false;
263 {if (true) return jjtn000;}
264 } catch (Throwable jjte000) {
265 if (jjtc000) {
266 jjtree.clearNodeScope(jjtn000);
267 jjtc000 = false;
268 } else {
269 jjtree.popNode();
270 }
271 if (jjte000 instanceof RuntimeException) {
272 {if (true) throw (RuntimeException)jjte000;}
273 }
274 if (jjte000 instanceof ParseException) {
275 {if (true) throw (ParseException)jjte000;}
276 }
277 {if (true) throw (Error)jjte000;}
278 } finally {
279 if (jjtc000) {
280 jjtree.closeNodeScope(jjtn000, true);
281 }
282 }
283 throw new Error("Missing return statement in function");
284 }
285
286
287
288
289
290 final public void Statement() throws ParseException {
291 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
292 case IF_DIRECTIVE:
293 IfStatement();
294 break;
295 case STOP_DIRECTIVE:
296 StopStatement();
297 break;
298 default:
299 jj_la1[1] = jj_gen;
300 if (jj_2_1(2)) {
301 Reference();
302 } else {
303 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
304 case SINGLE_LINE_COMMENT_START:
305 case FORMAL_COMMENT:
306 case MULTI_LINE_COMMENT:
307 Comment();
308 break;
309 case SET_DIRECTIVE:
310 SetDirective();
311 break;
312 case ESCAPE_DIRECTIVE:
313 EscapedDirective();
314 break;
315 case DOUBLE_ESCAPE:
316 Escape();
317 break;
318 case WORD:
319 case BRACKETED_WORD:
320 Directive();
321 break;
322 case LPAREN:
323 case RPAREN:
324 case ESCAPE:
325 case TEXT:
326 case STRING_LITERAL:
327 case INTEGER_LITERAL:
328 case FLOATING_POINT_LITERAL:
329 case DOT:
330 case LCURLY:
331 case RCURLY:
332 Text();
333 break;
334 default:
335 jj_la1[2] = jj_gen;
336 jj_consume_token(-1);
337 throw new ParseException();
338 }
339 }
340 }
341 }
342
343
344
345
346
347
348
349
350 final public void EscapedDirective() throws ParseException {
351
352 ASTEscapedDirective jjtn000 = new ASTEscapedDirective(this, JJTESCAPEDDIRECTIVE);
353 boolean jjtc000 = true;
354 jjtree.openNodeScope(jjtn000);
355 try {
356 Token t = null;
357 t = jj_consume_token(ESCAPE_DIRECTIVE);
358 jjtree.closeNodeScope(jjtn000, true);
359 jjtc000 = false;
360
361
362
363 t.image = escapedDirective( t.image );
364 } finally {
365 if (jjtc000) {
366 jjtree.closeNodeScope(jjtn000, true);
367 }
368 }
369 }
370
371
372
373
374
375
376
377
378 final public void Escape() throws ParseException {
379
380 ASTEscape jjtn000 = new ASTEscape(this, JJTESCAPE);
381 boolean jjtc000 = true;
382 jjtree.openNodeScope(jjtn000);
383 try {
384 Token t = null;
385 int count = 0;
386 boolean control = false;
387 label_2:
388 while (true) {
389 t = jj_consume_token(DOUBLE_ESCAPE);
390 count++;
391 if (jj_2_2(2)) {
392 ;
393 } else {
394 break label_2;
395 }
396 }
397 jjtree.closeNodeScope(jjtn000, true);
398 jjtc000 = false;
399
400
401
402 switch(t.next.kind ) {
403 case IF_DIRECTIVE :
404 case ELSE_DIRECTIVE :
405 case ELSEIF_DIRECTIVE :
406 case END :
407 case STOP_DIRECTIVE :
408 control = true;
409 break;
410 }
411
412
413
414
415
416 if ( isDirective( t.next.image.substring(1)))
417 control = true;
418 else if ( rsvc.isVelocimacro( t.next.image.substring(1), currentTemplateName))
419 control = true;
420
421 jjtn000.val = "";
422
423 for( int i = 0; i < count; i++)
424 jjtn000.val += ( control ? "\\" : "\\\\");
425 } finally {
426 if (jjtc000) {
427 jjtree.closeNodeScope(jjtn000, true);
428 }
429 }
430 }
431
432 final public void Comment() throws ParseException {
433
434 ASTComment jjtn000 = new ASTComment(this, JJTCOMMENT);
435 boolean jjtc000 = true;
436 jjtree.openNodeScope(jjtn000);
437 try {
438 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
439 case SINGLE_LINE_COMMENT_START:
440 jj_consume_token(SINGLE_LINE_COMMENT_START);
441 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
442 case SINGLE_LINE_COMMENT:
443 jj_consume_token(SINGLE_LINE_COMMENT);
444 break;
445 default:
446 jj_la1[3] = jj_gen;
447 ;
448 }
449 break;
450 case MULTI_LINE_COMMENT:
451 jj_consume_token(MULTI_LINE_COMMENT);
452 break;
453 case FORMAL_COMMENT:
454 jj_consume_token(FORMAL_COMMENT);
455 break;
456 default:
457 jj_la1[4] = jj_gen;
458 jj_consume_token(-1);
459 throw new ParseException();
460 }
461 } finally {
462 if (jjtc000) {
463 jjtree.closeNodeScope(jjtn000, true);
464 }
465 }
466 }
467
468 final public void FloatingPointLiteral() throws ParseException {
469
470 ASTFloatingPointLiteral jjtn000 = new ASTFloatingPointLiteral(this, JJTFLOATINGPOINTLITERAL);
471 boolean jjtc000 = true;
472 jjtree.openNodeScope(jjtn000);
473 try {
474 jj_consume_token(FLOATING_POINT_LITERAL);
475 } finally {
476 if (jjtc000) {
477 jjtree.closeNodeScope(jjtn000, true);
478 }
479 }
480 }
481
482 final public void IntegerLiteral() throws ParseException {
483
484 ASTIntegerLiteral jjtn000 = new ASTIntegerLiteral(this, JJTINTEGERLITERAL);
485 boolean jjtc000 = true;
486 jjtree.openNodeScope(jjtn000);
487 try {
488 jj_consume_token(INTEGER_LITERAL);
489 } finally {
490 if (jjtc000) {
491 jjtree.closeNodeScope(jjtn000, true);
492 }
493 }
494 }
495
496 final public void StringLiteral() throws ParseException {
497
498 ASTStringLiteral jjtn000 = new ASTStringLiteral(this, JJTSTRINGLITERAL);
499 boolean jjtc000 = true;
500 jjtree.openNodeScope(jjtn000);
501 try {
502 jj_consume_token(STRING_LITERAL);
503 } finally {
504 if (jjtc000) {
505 jjtree.closeNodeScope(jjtn000, true);
506 }
507 }
508 }
509
510
511
512
513
514
515
516
517
518
519
520
521 final public void Identifier() throws ParseException {
522
523 ASTIdentifier jjtn000 = new ASTIdentifier(this, JJTIDENTIFIER);
524 boolean jjtc000 = true;
525 jjtree.openNodeScope(jjtn000);
526 try {
527 jj_consume_token(IDENTIFIER);
528 } finally {
529 if (jjtc000) {
530 jjtree.closeNodeScope(jjtn000, true);
531 }
532 }
533 }
534
535 final public void Word() throws ParseException {
536
537 ASTWord jjtn000 = new ASTWord(this, JJTWORD);
538 boolean jjtc000 = true;
539 jjtree.openNodeScope(jjtn000);
540 try {
541 jj_consume_token(WORD);
542 } finally {
543 if (jjtc000) {
544 jjtree.closeNodeScope(jjtn000, true);
545 }
546 }
547 }
548
549
550
551
552 final public int DirectiveArg() throws ParseException {
553 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
554 case IDENTIFIER:
555 case LCURLY:
556 Reference();
557 {if (true) return ParserTreeConstants.JJTREFERENCE;}
558 break;
559 case WORD:
560 Word();
561 {if (true) return ParserTreeConstants.JJTWORD;}
562 break;
563 case STRING_LITERAL:
564 StringLiteral();
565 {if (true) return ParserTreeConstants.JJTSTRINGLITERAL;}
566 break;
567 case INTEGER_LITERAL:
568 IntegerLiteral();
569 {if (true) return ParserTreeConstants.JJTINTEGERLITERAL;}
570 break;
571 default:
572 jj_la1[5] = jj_gen;
573 if (jj_2_3(2147483647)) {
574 IntegerRange();
575 {if (true) return ParserTreeConstants.JJTINTEGERRANGE;}
576 } else {
577 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
578 case FLOATING_POINT_LITERAL:
579 FloatingPointLiteral();
580 {if (true) return ParserTreeConstants.JJTFLOATINGPOINTLITERAL;}
581 break;
582 case LEFT_CURLEY:
583 Map();
584 {if (true) return ParserTreeConstants.JJTMAP;}
585 break;
586 case LBRACKET:
587 ObjectArray();
588 {if (true) return ParserTreeConstants.JJTOBJECTARRAY;}
589 break;
590 case TRUE:
591 True();
592 {if (true) return ParserTreeConstants.JJTTRUE;}
593 break;
594 case FALSE:
595 False();
596 {if (true) return ParserTreeConstants.JJTFALSE;}
597 break;
598 default:
599 jj_la1[6] = jj_gen;
600 jj_consume_token(-1);
601 throw new ParseException();
602 }
603 }
604 }
605 throw new Error("Missing return statement in function");
606 }
607
608
609
610
611
612 final public SimpleNode Directive() throws ParseException {
613
614 ASTDirective jjtn000 = new ASTDirective(this, JJTDIRECTIVE);
615 boolean jjtc000 = true;
616 jjtree.openNodeScope(jjtn000);Token t = null;
617 int argType;
618 int argPos = 0;
619 Directive d;
620 int directiveType;
621 boolean isVM = false;
622 boolean doItNow = false;
623 try {
624 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
625 case WORD:
626 t = jj_consume_token(WORD);
627 break;
628 case BRACKETED_WORD:
629 t = jj_consume_token(BRACKETED_WORD);
630 break;
631 default:
632 jj_la1[7] = jj_gen;
633 jj_consume_token(-1);
634 throw new ParseException();
635 }
636 String directiveName;
637 if (t.kind == ParserConstants.BRACKETED_WORD)
638 {
639 directiveName = t.image.substring(2,t.image.length() - 1);
640 }
641 else
642 {
643 directiveName = t.image.substring(1);
644 }
645
646 d = (Directive) directives.get(directiveName);
647
648
649
650
651
652
653
654 if (directiveName.equals("macro"))
655 {
656 doItNow = true;
657 }
658
659
660
661
662
663
664 jjtn000.setDirectiveName(directiveName);
665
666 if ( d == null)
667 {
668
669
670
671
672 isVM = rsvc.isVelocimacro(directiveName, currentTemplateName);
673
674 if (!isVM)
675 {
676 token_source.stateStackPop();
677 token_source.inDirective = false;
678 {if (true) return jjtn000;}
679 }
680
681
682
683
684
685
686 directiveType = Directive.LINE;
687 }
688 else
689 {
690 directiveType = d.getType();
691 }
692
693
694
695
696
697 token_source.SwitchTo(DIRECTIVE);
698
699 argPos = 0;
700 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
701 case WHITESPACE:
702 jj_consume_token(WHITESPACE);
703 break;
704 default:
705 jj_la1[8] = jj_gen;
706 ;
707 }
708 jj_consume_token(LPAREN);
709 label_3:
710 while (true) {
711 if (jj_2_4(2)) {
712 ;
713 } else {
714 break label_3;
715 }
716 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
717 case WHITESPACE:
718 jj_consume_token(WHITESPACE);
719 break;
720 default:
721 jj_la1[9] = jj_gen;
722 ;
723 }
724 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
725 case COMMA:
726 jj_consume_token(COMMA);
727 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
728 case WHITESPACE:
729 jj_consume_token(WHITESPACE);
730 break;
731 default:
732 jj_la1[10] = jj_gen;
733 ;
734 }
735 break;
736 default:
737 jj_la1[11] = jj_gen;
738 ;
739 }
740 argType = DirectiveArg();
741 if (argType == ParserTreeConstants.JJTWORD)
742 {
743 if (doItNow && argPos == 0)
744 {
745
746 ;
747 }
748 else if( (t.image.equals("#foreach") || t.image.equals("#{foreach}") ) && argPos == 1)
749 {
750
751 ;
752 }
753 else
754 {
755 {if (true) throw new MacroParseException("Invalid arg #"
756 + argPos + " in "
757 + (isVM ? "VM " : "directive " )
758 + t.image, currentTemplateName, t);}
759 }
760 }
761 else
762 {
763 if (doItNow && argPos == 0)
764 {
765
766
767 {if (true) throw new MacroParseException("Invalid first arg"
768 + " in #macro() directive - must be a"
769 + " word token (no \' or \" surrounding)", currentTemplateName, t);}
770 }
771 }
772
773 argPos++;
774 }
775 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
776 case WHITESPACE:
777 jj_consume_token(WHITESPACE);
778 break;
779 default:
780 jj_la1[12] = jj_gen;
781 ;
782 }
783 jj_consume_token(RPAREN);
784 if (directiveType == Directive.LINE)
785 {
786 {if (true) return jjtn000;}
787 }
788 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
789 boolean jjtc001 = true;
790 jjtree.openNodeScope(jjtn001);
791 try {
792 label_4:
793 while (true) {
794 Statement();
795 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
796 case LPAREN:
797 case RPAREN:
798 case ESCAPE_DIRECTIVE:
799 case SET_DIRECTIVE:
800 case SINGLE_LINE_COMMENT_START:
801 case DOUBLE_ESCAPE:
802 case ESCAPE:
803 case TEXT:
804 case FORMAL_COMMENT:
805 case MULTI_LINE_COMMENT:
806 case STRING_LITERAL:
807 case IF_DIRECTIVE:
808 case STOP_DIRECTIVE:
809 case INTEGER_LITERAL:
810 case FLOATING_POINT_LITERAL:
811 case WORD:
812 case BRACKETED_WORD:
813 case IDENTIFIER:
814 case DOT:
815 case LCURLY:
816 case RCURLY:
817 ;
818 break;
819 default:
820 jj_la1[13] = jj_gen;
821 break label_4;
822 }
823 }
824 } catch (Throwable jjte001) {
825 if (jjtc001) {
826 jjtree.clearNodeScope(jjtn001);
827 jjtc001 = false;
828 } else {
829 jjtree.popNode();
830 }
831 if (jjte001 instanceof RuntimeException) {
832 {if (true) throw (RuntimeException)jjte001;}
833 }
834 if (jjte001 instanceof ParseException) {
835 {if (true) throw (ParseException)jjte001;}
836 }
837 {if (true) throw (Error)jjte001;}
838 } finally {
839 if (jjtc001) {
840 jjtree.closeNodeScope(jjtn001, true);
841 }
842 }
843 jj_consume_token(END);
844 jjtree.closeNodeScope(jjtn000, true);
845 jjtc000 = false;
846
847
848
849
850
851
852
853
854 if (doItNow)
855 {
856 Macro.processAndRegister(rsvc, t, jjtn000, currentTemplateName);
857 }
858
859
860
861
862
863 {if (true) return jjtn000;}
864 } catch (Throwable jjte000) {
865 if (jjtc000) {
866 jjtree.clearNodeScope(jjtn000);
867 jjtc000 = false;
868 } else {
869 jjtree.popNode();
870 }
871 if (jjte000 instanceof RuntimeException) {
872 {if (true) throw (RuntimeException)jjte000;}
873 }
874 if (jjte000 instanceof ParseException) {
875 {if (true) throw (ParseException)jjte000;}
876 }
877 {if (true) throw (Error)jjte000;}
878 } finally {
879 if (jjtc000) {
880 jjtree.closeNodeScope(jjtn000, true);
881 }
882 }
883 throw new Error("Missing return statement in function");
884 }
885
886
887
888
889
890
891 final public void Map() throws ParseException {
892
893 ASTMap jjtn000 = new ASTMap(this, JJTMAP);
894 boolean jjtc000 = true;
895 jjtree.openNodeScope(jjtn000);
896 try {
897 jj_consume_token(LEFT_CURLEY);
898 if (jj_2_5(2)) {
899 Parameter();
900 jj_consume_token(COLON);
901 Parameter();
902 label_5:
903 while (true) {
904 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
905 case COMMA:
906 ;
907 break;
908 default:
909 jj_la1[14] = jj_gen;
910 break label_5;
911 }
912 jj_consume_token(COMMA);
913 Parameter();
914 jj_consume_token(COLON);
915 Parameter();
916 }
917 } else {
918 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
919 case WHITESPACE:
920 jj_consume_token(WHITESPACE);
921 break;
922 default:
923 jj_la1[15] = jj_gen;
924 ;
925 }
926 }
927 jj_consume_token(RIGHT_CURLEY);
928 } catch (Throwable jjte000) {
929 if (jjtc000) {
930 jjtree.clearNodeScope(jjtn000);
931 jjtc000 = false;
932 } else {
933 jjtree.popNode();
934 }
935 if (jjte000 instanceof RuntimeException) {
936 {if (true) throw (RuntimeException)jjte000;}
937 }
938 if (jjte000 instanceof ParseException) {
939 {if (true) throw (ParseException)jjte000;}
940 }
941 {if (true) throw (Error)jjte000;}
942 } finally {
943 if (jjtc000) {
944 jjtree.closeNodeScope(jjtn000, true);
945 }
946 }
947 }
948
949 final public void ObjectArray() throws ParseException {
950
951 ASTObjectArray jjtn000 = new ASTObjectArray(this, JJTOBJECTARRAY);
952 boolean jjtc000 = true;
953 jjtree.openNodeScope(jjtn000);
954 try {
955 jj_consume_token(LBRACKET);
956 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
957 case LBRACKET:
958 case LEFT_CURLEY:
959 case WHITESPACE:
960 case STRING_LITERAL:
961 case TRUE:
962 case FALSE:
963 case INTEGER_LITERAL:
964 case FLOATING_POINT_LITERAL:
965 case IDENTIFIER:
966 case LCURLY:
967 Parameter();
968 label_6:
969 while (true) {
970 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
971 case COMMA:
972 ;
973 break;
974 default:
975 jj_la1[16] = jj_gen;
976 break label_6;
977 }
978 jj_consume_token(COMMA);
979 Parameter();
980 }
981 break;
982 default:
983 jj_la1[17] = jj_gen;
984 ;
985 }
986 jj_consume_token(RBRACKET);
987 } catch (Throwable jjte000) {
988 if (jjtc000) {
989 jjtree.clearNodeScope(jjtn000);
990 jjtc000 = false;
991 } else {
992 jjtree.popNode();
993 }
994 if (jjte000 instanceof RuntimeException) {
995 {if (true) throw (RuntimeException)jjte000;}
996 }
997 if (jjte000 instanceof ParseException) {
998 {if (true) throw (ParseException)jjte000;}
999 }
1000 {if (true) throw (Error)jjte000;}
1001 } finally {
1002 if (jjtc000) {
1003 jjtree.closeNodeScope(jjtn000, true);
1004 }
1005 }
1006 }
1007
1008
1009
1010
1011
1012
1013 final public void IntegerRange() throws ParseException {
1014
1015 ASTIntegerRange jjtn000 = new ASTIntegerRange(this, JJTINTEGERRANGE);
1016 boolean jjtc000 = true;
1017 jjtree.openNodeScope(jjtn000);
1018 try {
1019 jj_consume_token(LBRACKET);
1020 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1021 case WHITESPACE:
1022 jj_consume_token(WHITESPACE);
1023 break;
1024 default:
1025 jj_la1[18] = jj_gen;
1026 ;
1027 }
1028 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1029 case IDENTIFIER:
1030 case LCURLY:
1031 Reference();
1032 break;
1033 case INTEGER_LITERAL:
1034 IntegerLiteral();
1035 break;
1036 default:
1037 jj_la1[19] = jj_gen;
1038 jj_consume_token(-1);
1039 throw new ParseException();
1040 }
1041 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1042 case WHITESPACE:
1043 jj_consume_token(WHITESPACE);
1044 break;
1045 default:
1046 jj_la1[20] = jj_gen;
1047 ;
1048 }
1049 jj_consume_token(DOUBLEDOT);
1050 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1051 case WHITESPACE:
1052 jj_consume_token(WHITESPACE);
1053 break;
1054 default:
1055 jj_la1[21] = jj_gen;
1056 ;
1057 }
1058 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1059 case IDENTIFIER:
1060 case LCURLY:
1061 Reference();
1062 break;
1063 case INTEGER_LITERAL:
1064 IntegerLiteral();
1065 break;
1066 default:
1067 jj_la1[22] = jj_gen;
1068 jj_consume_token(-1);
1069 throw new ParseException();
1070 }
1071 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1072 case WHITESPACE:
1073 jj_consume_token(WHITESPACE);
1074 break;
1075 default:
1076 jj_la1[23] = jj_gen;
1077 ;
1078 }
1079 jj_consume_token(RBRACKET);
1080 } catch (Throwable jjte000) {
1081 if (jjtc000) {
1082 jjtree.clearNodeScope(jjtn000);
1083 jjtc000 = false;
1084 } else {
1085 jjtree.popNode();
1086 }
1087 if (jjte000 instanceof RuntimeException) {
1088 {if (true) throw (RuntimeException)jjte000;}
1089 }
1090 if (jjte000 instanceof ParseException) {
1091 {if (true) throw (ParseException)jjte000;}
1092 }
1093 {if (true) throw (Error)jjte000;}
1094 } finally {
1095 if (jjtc000) {
1096 jjtree.closeNodeScope(jjtn000, true);
1097 }
1098 }
1099 }
1100
1101
1102
1103
1104
1105
1106 final public void Parameter() throws ParseException {
1107 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1108 case WHITESPACE:
1109 jj_consume_token(WHITESPACE);
1110 break;
1111 default:
1112 jj_la1[24] = jj_gen;
1113 ;
1114 }
1115 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1116 case STRING_LITERAL:
1117 StringLiteral();
1118 break;
1119 case INTEGER_LITERAL:
1120 IntegerLiteral();
1121 break;
1122 default:
1123 jj_la1[25] = jj_gen;
1124 if (jj_2_6(2147483647)) {
1125 IntegerRange();
1126 } else {
1127 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1128 case LEFT_CURLEY:
1129 Map();
1130 break;
1131 case LBRACKET:
1132 ObjectArray();
1133 break;
1134 case TRUE:
1135 True();
1136 break;
1137 case FALSE:
1138 False();
1139 break;
1140 case IDENTIFIER:
1141 case LCURLY:
1142 Reference();
1143 break;
1144 case FLOATING_POINT_LITERAL:
1145 FloatingPointLiteral();
1146 break;
1147 default:
1148 jj_la1[26] = jj_gen;
1149 jj_consume_token(-1);
1150 throw new ParseException();
1151 }
1152 }
1153 }
1154 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1155 case WHITESPACE:
1156 jj_consume_token(WHITESPACE);
1157 break;
1158 default:
1159 jj_la1[27] = jj_gen;
1160 ;
1161 }
1162 }
1163
1164
1165
1166
1167
1168
1169 final public void Method() throws ParseException {
1170
1171 ASTMethod jjtn000 = new ASTMethod(this, JJTMETHOD);
1172 boolean jjtc000 = true;
1173 jjtree.openNodeScope(jjtn000);
1174 try {
1175 Identifier();
1176 jj_consume_token(LPAREN);
1177 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1178 case LBRACKET:
1179 case LEFT_CURLEY:
1180 case WHITESPACE:
1181 case STRING_LITERAL:
1182 case TRUE:
1183 case FALSE:
1184 case INTEGER_LITERAL:
1185 case FLOATING_POINT_LITERAL:
1186 case IDENTIFIER:
1187 case LCURLY:
1188 Parameter();
1189 label_7:
1190 while (true) {
1191 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1192 case COMMA:
1193 ;
1194 break;
1195 default:
1196 jj_la1[28] = jj_gen;
1197 break label_7;
1198 }
1199 jj_consume_token(COMMA);
1200 Parameter();
1201 }
1202 break;
1203 default:
1204 jj_la1[29] = jj_gen;
1205 ;
1206 }
1207 jj_consume_token(REFMOD2_RPAREN);
1208 } catch (Throwable jjte000) {
1209 if (jjtc000) {
1210 jjtree.clearNodeScope(jjtn000);
1211 jjtc000 = false;
1212 } else {
1213 jjtree.popNode();
1214 }
1215 if (jjte000 instanceof RuntimeException) {
1216 {if (true) throw (RuntimeException)jjte000;}
1217 }
1218 if (jjte000 instanceof ParseException) {
1219 {if (true) throw (ParseException)jjte000;}
1220 }
1221 {if (true) throw (Error)jjte000;}
1222 } finally {
1223 if (jjtc000) {
1224 jjtree.closeNodeScope(jjtn000, true);
1225 }
1226 }
1227 }
1228
1229 final public void Reference() throws ParseException {
1230
1231 ASTReference jjtn000 = new ASTReference(this, JJTREFERENCE);
1232 boolean jjtc000 = true;
1233 jjtree.openNodeScope(jjtn000);
1234 try {
1235 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1236 case IDENTIFIER:
1237 jj_consume_token(IDENTIFIER);
1238 label_8:
1239 while (true) {
1240 if (jj_2_7(2)) {
1241 ;
1242 } else {
1243 break label_8;
1244 }
1245 jj_consume_token(DOT);
1246 if (jj_2_8(3)) {
1247 Method();
1248 } else {
1249 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1250 case IDENTIFIER:
1251 Identifier();
1252 break;
1253 default:
1254 jj_la1[30] = jj_gen;
1255 jj_consume_token(-1);
1256 throw new ParseException();
1257 }
1258 }
1259 }
1260 break;
1261 case LCURLY:
1262 jj_consume_token(LCURLY);
1263 jj_consume_token(IDENTIFIER);
1264 label_9:
1265 while (true) {
1266 if (jj_2_9(2)) {
1267 ;
1268 } else {
1269 break label_9;
1270 }
1271 jj_consume_token(DOT);
1272 if (jj_2_10(3)) {
1273 Method();
1274 } else {
1275 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1276 case IDENTIFIER:
1277 Identifier();
1278 break;
1279 default:
1280 jj_la1[31] = jj_gen;
1281 jj_consume_token(-1);
1282 throw new ParseException();
1283 }
1284 }
1285 }
1286 jj_consume_token(RCURLY);
1287 break;
1288 default:
1289 jj_la1[32] = jj_gen;
1290 jj_consume_token(-1);
1291 throw new ParseException();
1292 }
1293 } catch (Throwable jjte000) {
1294 if (jjtc000) {
1295 jjtree.clearNodeScope(jjtn000);
1296 jjtc000 = false;
1297 } else {
1298 jjtree.popNode();
1299 }
1300 if (jjte000 instanceof RuntimeException) {
1301 {if (true) throw (RuntimeException)jjte000;}
1302 }
1303 if (jjte000 instanceof ParseException) {
1304 {if (true) throw (ParseException)jjte000;}
1305 }
1306 {if (true) throw (Error)jjte000;}
1307 } finally {
1308 if (jjtc000) {
1309 jjtree.closeNodeScope(jjtn000, true);
1310 }
1311 }
1312 }
1313
1314 final public void True() throws ParseException {
1315
1316 ASTTrue jjtn000 = new ASTTrue(this, JJTTRUE);
1317 boolean jjtc000 = true;
1318 jjtree.openNodeScope(jjtn000);
1319 try {
1320 jj_consume_token(TRUE);
1321 } finally {
1322 if (jjtc000) {
1323 jjtree.closeNodeScope(jjtn000, true);
1324 }
1325 }
1326 }
1327
1328 final public void False() throws ParseException {
1329
1330 ASTFalse jjtn000 = new ASTFalse(this, JJTFALSE);
1331 boolean jjtc000 = true;
1332 jjtree.openNodeScope(jjtn000);
1333 try {
1334 jj_consume_token(FALSE);
1335 } finally {
1336 if (jjtc000) {
1337 jjtree.closeNodeScope(jjtn000, true);
1338 }
1339 }
1340 }
1341
1342
1343
1344
1345
1346
1347 final public void Text() throws ParseException {
1348
1349 ASTText jjtn000 = new ASTText(this, JJTTEXT);
1350 boolean jjtc000 = true;
1351 jjtree.openNodeScope(jjtn000);
1352 try {
1353 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1354 case TEXT:
1355 jj_consume_token(TEXT);
1356 break;
1357 case DOT:
1358 jj_consume_token(DOT);
1359 break;
1360 case RPAREN:
1361 jj_consume_token(RPAREN);
1362 break;
1363 case LPAREN:
1364 jj_consume_token(LPAREN);
1365 break;
1366 case INTEGER_LITERAL:
1367 jj_consume_token(INTEGER_LITERAL);
1368 break;
1369 case FLOATING_POINT_LITERAL:
1370 jj_consume_token(FLOATING_POINT_LITERAL);
1371 break;
1372 case STRING_LITERAL:
1373 jj_consume_token(STRING_LITERAL);
1374 break;
1375 case ESCAPE:
1376 jj_consume_token(ESCAPE);
1377 break;
1378 case LCURLY:
1379 jj_consume_token(LCURLY);
1380 break;
1381 case RCURLY:
1382 jj_consume_token(RCURLY);
1383 break;
1384 default:
1385 jj_la1[33] = jj_gen;
1386 jj_consume_token(-1);
1387 throw new ParseException();
1388 }
1389 } finally {
1390 if (jjtc000) {
1391 jjtree.closeNodeScope(jjtn000, true);
1392 }
1393 }
1394 }
1395
1396
1397
1398
1399
1400
1401 final public void IfStatement() throws ParseException {
1402
1403 ASTIfStatement jjtn000 = new ASTIfStatement(this, JJTIFSTATEMENT);
1404 boolean jjtc000 = true;
1405 jjtree.openNodeScope(jjtn000);
1406 try {
1407 jj_consume_token(IF_DIRECTIVE);
1408 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1409 case WHITESPACE:
1410 jj_consume_token(WHITESPACE);
1411 break;
1412 default:
1413 jj_la1[34] = jj_gen;
1414 ;
1415 }
1416 jj_consume_token(LPAREN);
1417 Expression();
1418 jj_consume_token(RPAREN);
1419 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
1420 boolean jjtc001 = true;
1421 jjtree.openNodeScope(jjtn001);
1422 try {
1423 label_10:
1424 while (true) {
1425 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1426 case LPAREN:
1427 case RPAREN:
1428 case ESCAPE_DIRECTIVE:
1429 case SET_DIRECTIVE:
1430 case SINGLE_LINE_COMMENT_START:
1431 case DOUBLE_ESCAPE:
1432 case ESCAPE:
1433 case TEXT:
1434 case FORMAL_COMMENT:
1435 case MULTI_LINE_COMMENT:
1436 case STRING_LITERAL:
1437 case IF_DIRECTIVE:
1438 case STOP_DIRECTIVE:
1439 case INTEGER_LITERAL:
1440 case FLOATING_POINT_LITERAL:
1441 case WORD:
1442 case BRACKETED_WORD:
1443 case IDENTIFIER:
1444 case DOT:
1445 case LCURLY:
1446 case RCURLY:
1447 ;
1448 break;
1449 default:
1450 jj_la1[35] = jj_gen;
1451 break label_10;
1452 }
1453 Statement();
1454 }
1455 } catch (Throwable jjte001) {
1456 if (jjtc001) {
1457 jjtree.clearNodeScope(jjtn001);
1458 jjtc001 = false;
1459 } else {
1460 jjtree.popNode();
1461 }
1462 if (jjte001 instanceof RuntimeException) {
1463 {if (true) throw (RuntimeException)jjte001;}
1464 }
1465 if (jjte001 instanceof ParseException) {
1466 {if (true) throw (ParseException)jjte001;}
1467 }
1468 {if (true) throw (Error)jjte001;}
1469 } finally {
1470 if (jjtc001) {
1471 jjtree.closeNodeScope(jjtn001, true);
1472 }
1473 }
1474 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1475 case ELSEIF_DIRECTIVE:
1476 label_11:
1477 while (true) {
1478 ElseIfStatement();
1479 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1480 case ELSEIF_DIRECTIVE:
1481 ;
1482 break;
1483 default:
1484 jj_la1[36] = jj_gen;
1485 break label_11;
1486 }
1487 }
1488 break;
1489 default:
1490 jj_la1[37] = jj_gen;
1491 ;
1492 }
1493 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1494 case ELSE_DIRECTIVE:
1495 ElseStatement();
1496 break;
1497 default:
1498 jj_la1[38] = jj_gen;
1499 ;
1500 }
1501 jj_consume_token(END);
1502 } catch (Throwable jjte000) {
1503 if (jjtc000) {
1504 jjtree.clearNodeScope(jjtn000);
1505 jjtc000 = false;
1506 } else {
1507 jjtree.popNode();
1508 }
1509 if (jjte000 instanceof RuntimeException) {
1510 {if (true) throw (RuntimeException)jjte000;}
1511 }
1512 if (jjte000 instanceof ParseException) {
1513 {if (true) throw (ParseException)jjte000;}
1514 }
1515 {if (true) throw (Error)jjte000;}
1516 } finally {
1517 if (jjtc000) {
1518 jjtree.closeNodeScope(jjtn000, true);
1519 }
1520 }
1521 }
1522
1523 final public void ElseStatement() throws ParseException {
1524
1525 ASTElseStatement jjtn000 = new ASTElseStatement(this, JJTELSESTATEMENT);
1526 boolean jjtc000 = true;
1527 jjtree.openNodeScope(jjtn000);
1528 try {
1529 jj_consume_token(ELSE_DIRECTIVE);
1530 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
1531 boolean jjtc001 = true;
1532 jjtree.openNodeScope(jjtn001);
1533 try {
1534 label_12:
1535 while (true) {
1536 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1537 case LPAREN:
1538 case RPAREN:
1539 case ESCAPE_DIRECTIVE:
1540 case SET_DIRECTIVE:
1541 case SINGLE_LINE_COMMENT_START:
1542 case DOUBLE_ESCAPE:
1543 case ESCAPE:
1544 case TEXT:
1545 case FORMAL_COMMENT:
1546 case MULTI_LINE_COMMENT:
1547 case STRING_LITERAL:
1548 case IF_DIRECTIVE:
1549 case STOP_DIRECTIVE:
1550 case INTEGER_LITERAL:
1551 case FLOATING_POINT_LITERAL:
1552 case WORD:
1553 case BRACKETED_WORD:
1554 case IDENTIFIER:
1555 case DOT:
1556 case LCURLY:
1557 case RCURLY:
1558 ;
1559 break;
1560 default:
1561 jj_la1[39] = jj_gen;
1562 break label_12;
1563 }
1564 Statement();
1565 }
1566 } catch (Throwable jjte001) {
1567 if (jjtc001) {
1568 jjtree.clearNodeScope(jjtn001);
1569 jjtc001 = false;
1570 } else {
1571 jjtree.popNode();
1572 }
1573 if (jjte001 instanceof RuntimeException) {
1574 {if (true) throw (RuntimeException)jjte001;}
1575 }
1576 if (jjte001 instanceof ParseException) {
1577 {if (true) throw (ParseException)jjte001;}
1578 }
1579 {if (true) throw (Error)jjte001;}
1580 } finally {
1581 if (jjtc001) {
1582 jjtree.closeNodeScope(jjtn001, true);
1583 }
1584 }
1585 } catch (Throwable jjte000) {
1586 if (jjtc000) {
1587 jjtree.clearNodeScope(jjtn000);
1588 jjtc000 = false;
1589 } else {
1590 jjtree.popNode();
1591 }
1592 if (jjte000 instanceof RuntimeException) {
1593 {if (true) throw (RuntimeException)jjte000;}
1594 }
1595 if (jjte000 instanceof ParseException) {
1596 {if (true) throw (ParseException)jjte000;}
1597 }
1598 {if (true) throw (Error)jjte000;}
1599 } finally {
1600 if (jjtc000) {
1601 jjtree.closeNodeScope(jjtn000, true);
1602 }
1603 }
1604 }
1605
1606 final public void ElseIfStatement() throws ParseException {
1607
1608 ASTElseIfStatement jjtn000 = new ASTElseIfStatement(this, JJTELSEIFSTATEMENT);
1609 boolean jjtc000 = true;
1610 jjtree.openNodeScope(jjtn000);
1611 try {
1612 jj_consume_token(ELSEIF_DIRECTIVE);
1613 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1614 case WHITESPACE:
1615 jj_consume_token(WHITESPACE);
1616 break;
1617 default:
1618 jj_la1[40] = jj_gen;
1619 ;
1620 }
1621 jj_consume_token(LPAREN);
1622 Expression();
1623 jj_consume_token(RPAREN);
1624 ASTBlock jjtn001 = new ASTBlock(this, JJTBLOCK);
1625 boolean jjtc001 = true;
1626 jjtree.openNodeScope(jjtn001);
1627 try {
1628 label_13:
1629 while (true) {
1630 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1631 case LPAREN:
1632 case RPAREN:
1633 case ESCAPE_DIRECTIVE:
1634 case SET_DIRECTIVE:
1635 case SINGLE_LINE_COMMENT_START:
1636 case DOUBLE_ESCAPE:
1637 case ESCAPE:
1638 case TEXT:
1639 case FORMAL_COMMENT:
1640 case MULTI_LINE_COMMENT:
1641 case STRING_LITERAL:
1642 case IF_DIRECTIVE:
1643 case STOP_DIRECTIVE:
1644 case INTEGER_LITERAL:
1645 case FLOATING_POINT_LITERAL:
1646 case WORD:
1647 case BRACKETED_WORD:
1648 case IDENTIFIER:
1649 case DOT:
1650 case LCURLY:
1651 case RCURLY:
1652 ;
1653 break;
1654 default:
1655 jj_la1[41] = jj_gen;
1656 break label_13;
1657 }
1658 Statement();
1659 }
1660 } catch (Throwable jjte001) {
1661 if (jjtc001) {
1662 jjtree.clearNodeScope(jjtn001);
1663 jjtc001 = false;
1664 } else {
1665 jjtree.popNode();
1666 }
1667 if (jjte001 instanceof RuntimeException) {
1668 {if (true) throw (RuntimeException)jjte001;}
1669 }
1670 if (jjte001 instanceof ParseException) {
1671 {if (true) throw (ParseException)jjte001;}
1672 }
1673 {if (true) throw (Error)jjte001;}
1674 } finally {
1675 if (jjtc001) {
1676 jjtree.closeNodeScope(jjtn001, true);
1677 }
1678 }
1679 } catch (Throwable jjte000) {
1680 if (jjtc000) {
1681 jjtree.clearNodeScope(jjtn000);
1682 jjtc000 = false;
1683 } else {
1684 jjtree.popNode();
1685 }
1686 if (jjte000 instanceof RuntimeException) {
1687 {if (true) throw (RuntimeException)jjte000;}
1688 }
1689 if (jjte000 instanceof ParseException) {
1690 {if (true) throw (ParseException)jjte000;}
1691 }
1692 {if (true) throw (Error)jjte000;}
1693 } finally {
1694 if (jjtc000) {
1695 jjtree.closeNodeScope(jjtn000, true);
1696 }
1697 }
1698 }
1699
1700
1701
1702
1703
1704
1705 final public void SetDirective() throws ParseException {
1706
1707 ASTSetDirective jjtn000 = new ASTSetDirective(this, JJTSETDIRECTIVE);
1708 boolean jjtc000 = true;
1709 jjtree.openNodeScope(jjtn000);
1710 try {
1711 jj_consume_token(SET_DIRECTIVE);
1712 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1713 case WHITESPACE:
1714 jj_consume_token(WHITESPACE);
1715 break;
1716 default:
1717 jj_la1[42] = jj_gen;
1718 ;
1719 }
1720 Reference();
1721 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1722 case WHITESPACE:
1723 jj_consume_token(WHITESPACE);
1724 break;
1725 default:
1726 jj_la1[43] = jj_gen;
1727 ;
1728 }
1729 jj_consume_token(EQUALS);
1730 Expression();
1731 jj_consume_token(RPAREN);
1732
1733
1734
1735
1736 token_source.inSet = false;
1737 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1738 case NEWLINE:
1739 jj_consume_token(NEWLINE);
1740 break;
1741 default:
1742 jj_la1[44] = jj_gen;
1743 ;
1744 }
1745 } catch (Throwable jjte000) {
1746 if (jjtc000) {
1747 jjtree.clearNodeScope(jjtn000);
1748 jjtc000 = false;
1749 } else {
1750 jjtree.popNode();
1751 }
1752 if (jjte000 instanceof RuntimeException) {
1753 {if (true) throw (RuntimeException)jjte000;}
1754 }
1755 if (jjte000 instanceof ParseException) {
1756 {if (true) throw (ParseException)jjte000;}
1757 }
1758 {if (true) throw (Error)jjte000;}
1759 } finally {
1760 if (jjtc000) {
1761 jjtree.closeNodeScope(jjtn000, true);
1762 }
1763 }
1764 }
1765
1766
1767
1768
1769
1770
1771
1772
1773 final public void StopStatement() throws ParseException {
1774
1775 ASTStop jjtn000 = new ASTStop(this, JJTSTOP);
1776 boolean jjtc000 = true;
1777 jjtree.openNodeScope(jjtn000);
1778 try {
1779 jj_consume_token(STOP_DIRECTIVE);
1780 } finally {
1781 if (jjtc000) {
1782 jjtree.closeNodeScope(jjtn000, 0);
1783 }
1784 }
1785 }
1786
1787
1788
1789
1790
1791
1792 final public void Expression() throws ParseException {
1793
1794 ASTExpression jjtn000 = new ASTExpression(this, JJTEXPRESSION);
1795 boolean jjtc000 = true;
1796 jjtree.openNodeScope(jjtn000);
1797 try {
1798 ConditionalOrExpression();
1799 } catch (Throwable jjte000) {
1800 if (jjtc000) {
1801 jjtree.clearNodeScope(jjtn000);
1802 jjtc000 = false;
1803 } else {
1804 jjtree.popNode();
1805 }
1806 if (jjte000 instanceof RuntimeException) {
1807 {if (true) throw (RuntimeException)jjte000;}
1808 }
1809 if (jjte000 instanceof ParseException) {
1810 {if (true) throw (ParseException)jjte000;}
1811 }
1812 {if (true) throw (Error)jjte000;}
1813 } finally {
1814 if (jjtc000) {
1815 jjtree.closeNodeScope(jjtn000, true);
1816 }
1817 }
1818 }
1819
1820 final public void Assignment() throws ParseException {
1821
1822 ASTAssignment jjtn000 = new ASTAssignment(this, JJTASSIGNMENT);
1823 boolean jjtc000 = true;
1824 jjtree.openNodeScope(jjtn000);
1825 try {
1826 PrimaryExpression();
1827 jj_consume_token(EQUALS);
1828 Expression();
1829 } catch (Throwable jjte000) {
1830 if (jjtc000) {
1831 jjtree.clearNodeScope(jjtn000);
1832 jjtc000 = false;
1833 } else {
1834 jjtree.popNode();
1835 }
1836 if (jjte000 instanceof RuntimeException) {
1837 {if (true) throw (RuntimeException)jjte000;}
1838 }
1839 if (jjte000 instanceof ParseException) {
1840 {if (true) throw (ParseException)jjte000;}
1841 }
1842 {if (true) throw (Error)jjte000;}
1843 } finally {
1844 if (jjtc000) {
1845 jjtree.closeNodeScope(jjtn000, 2);
1846 }
1847 }
1848 }
1849
1850 final public void ConditionalOrExpression() throws ParseException {
1851 ConditionalAndExpression();
1852 label_14:
1853 while (true) {
1854 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1855 case LOGICAL_OR:
1856 ;
1857 break;
1858 default:
1859 jj_la1[45] = jj_gen;
1860 break label_14;
1861 }
1862 jj_consume_token(LOGICAL_OR);
1863 ASTOrNode jjtn001 = new ASTOrNode(this, JJTORNODE);
1864 boolean jjtc001 = true;
1865 jjtree.openNodeScope(jjtn001);
1866 try {
1867 ConditionalAndExpression();
1868 } catch (Throwable jjte001) {
1869 if (jjtc001) {
1870 jjtree.clearNodeScope(jjtn001);
1871 jjtc001 = false;
1872 } else {
1873 jjtree.popNode();
1874 }
1875 if (jjte001 instanceof RuntimeException) {
1876 {if (true) throw (RuntimeException)jjte001;}
1877 }
1878 if (jjte001 instanceof ParseException) {
1879 {if (true) throw (ParseException)jjte001;}
1880 }
1881 {if (true) throw (Error)jjte001;}
1882 } finally {
1883 if (jjtc001) {
1884 jjtree.closeNodeScope(jjtn001, 2);
1885 }
1886 }
1887 }
1888 }
1889
1890 final public void ConditionalAndExpression() throws ParseException {
1891 EqualityExpression();
1892 label_15:
1893 while (true) {
1894 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1895 case LOGICAL_AND:
1896 ;
1897 break;
1898 default:
1899 jj_la1[46] = jj_gen;
1900 break label_15;
1901 }
1902 jj_consume_token(LOGICAL_AND);
1903 ASTAndNode jjtn001 = new ASTAndNode(this, JJTANDNODE);
1904 boolean jjtc001 = true;
1905 jjtree.openNodeScope(jjtn001);
1906 try {
1907 EqualityExpression();
1908 } catch (Throwable jjte001) {
1909 if (jjtc001) {
1910 jjtree.clearNodeScope(jjtn001);
1911 jjtc001 = false;
1912 } else {
1913 jjtree.popNode();
1914 }
1915 if (jjte001 instanceof RuntimeException) {
1916 {if (true) throw (RuntimeException)jjte001;}
1917 }
1918 if (jjte001 instanceof ParseException) {
1919 {if (true) throw (ParseException)jjte001;}
1920 }
1921 {if (true) throw (Error)jjte001;}
1922 } finally {
1923 if (jjtc001) {
1924 jjtree.closeNodeScope(jjtn001, 2);
1925 }
1926 }
1927 }
1928 }
1929
1930 final public void EqualityExpression() throws ParseException {
1931 RelationalExpression();
1932 label_16:
1933 while (true) {
1934 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1935 case LOGICAL_EQUALS:
1936 case LOGICAL_NOT_EQUALS:
1937 ;
1938 break;
1939 default:
1940 jj_la1[47] = jj_gen;
1941 break label_16;
1942 }
1943 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1944 case LOGICAL_EQUALS:
1945 jj_consume_token(LOGICAL_EQUALS);
1946 ASTEQNode jjtn001 = new ASTEQNode(this, JJTEQNODE);
1947 boolean jjtc001 = true;
1948 jjtree.openNodeScope(jjtn001);
1949 try {
1950 RelationalExpression();
1951 } catch (Throwable jjte001) {
1952 if (jjtc001) {
1953 jjtree.clearNodeScope(jjtn001);
1954 jjtc001 = false;
1955 } else {
1956 jjtree.popNode();
1957 }
1958 if (jjte001 instanceof RuntimeException) {
1959 {if (true) throw (RuntimeException)jjte001;}
1960 }
1961 if (jjte001 instanceof ParseException) {
1962 {if (true) throw (ParseException)jjte001;}
1963 }
1964 {if (true) throw (Error)jjte001;}
1965 } finally {
1966 if (jjtc001) {
1967 jjtree.closeNodeScope(jjtn001, 2);
1968 }
1969 }
1970 break;
1971 case LOGICAL_NOT_EQUALS:
1972 jj_consume_token(LOGICAL_NOT_EQUALS);
1973 ASTNENode jjtn002 = new ASTNENode(this, JJTNENODE);
1974 boolean jjtc002 = true;
1975 jjtree.openNodeScope(jjtn002);
1976 try {
1977 RelationalExpression();
1978 } catch (Throwable jjte002) {
1979 if (jjtc002) {
1980 jjtree.clearNodeScope(jjtn002);
1981 jjtc002 = false;
1982 } else {
1983 jjtree.popNode();
1984 }
1985 if (jjte002 instanceof RuntimeException) {
1986 {if (true) throw (RuntimeException)jjte002;}
1987 }
1988 if (jjte002 instanceof ParseException) {
1989 {if (true) throw (ParseException)jjte002;}
1990 }
1991 {if (true) throw (Error)jjte002;}
1992 } finally {
1993 if (jjtc002) {
1994 jjtree.closeNodeScope(jjtn002, 2);
1995 }
1996 }
1997 break;
1998 default:
1999 jj_la1[48] = jj_gen;
2000 jj_consume_token(-1);
2001 throw new ParseException();
2002 }
2003 }
2004 }
2005
2006 final public void RelationalExpression() throws ParseException {
2007 AdditiveExpression();
2008 label_17:
2009 while (true) {
2010 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2011 case LOGICAL_LT:
2012 case LOGICAL_LE:
2013 case LOGICAL_GT:
2014 case LOGICAL_GE:
2015 ;
2016 break;
2017 default:
2018 jj_la1[49] = jj_gen;
2019 break label_17;
2020 }
2021 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2022 case LOGICAL_LT:
2023 jj_consume_token(LOGICAL_LT);
2024 ASTLTNode jjtn001 = new ASTLTNode(this, JJTLTNODE);
2025 boolean jjtc001 = true;
2026 jjtree.openNodeScope(jjtn001);
2027 try {
2028 AdditiveExpression();
2029 } catch (Throwable jjte001) {
2030 if (jjtc001) {
2031 jjtree.clearNodeScope(jjtn001);
2032 jjtc001 = false;
2033 } else {
2034 jjtree.popNode();
2035 }
2036 if (jjte001 instanceof RuntimeException) {
2037 {if (true) throw (RuntimeException)jjte001;}
2038 }
2039 if (jjte001 instanceof ParseException) {
2040 {if (true) throw (ParseException)jjte001;}
2041 }
2042 {if (true) throw (Error)jjte001;}
2043 } finally {
2044 if (jjtc001) {
2045 jjtree.closeNodeScope(jjtn001, 2);
2046 }
2047 }
2048 break;
2049 case LOGICAL_GT:
2050 jj_consume_token(LOGICAL_GT);
2051 ASTGTNode jjtn002 = new ASTGTNode(this, JJTGTNODE);
2052 boolean jjtc002 = true;
2053 jjtree.openNodeScope(jjtn002);
2054 try {
2055 AdditiveExpression();
2056 } catch (Throwable jjte002) {
2057 if (jjtc002) {
2058 jjtree.clearNodeScope(jjtn002);
2059 jjtc002 = false;
2060 } else {
2061 jjtree.popNode();
2062 }
2063 if (jjte002 instanceof RuntimeException) {
2064 {if (true) throw (RuntimeException)jjte002;}
2065 }
2066 if (jjte002 instanceof ParseException) {
2067 {if (true) throw (ParseException)jjte002;}
2068 }
2069 {if (true) throw (Error)jjte002;}
2070 } finally {
2071 if (jjtc002) {
2072 jjtree.closeNodeScope(jjtn002, 2);
2073 }
2074 }
2075 break;
2076 case LOGICAL_LE:
2077 jj_consume_token(LOGICAL_LE);
2078 ASTLENode jjtn003 = new ASTLENode(this, JJTLENODE);
2079 boolean jjtc003 = true;
2080 jjtree.openNodeScope(jjtn003);
2081 try {
2082 AdditiveExpression();
2083 } catch (Throwable jjte003) {
2084 if (jjtc003) {
2085 jjtree.clearNodeScope(jjtn003);
2086 jjtc003 = false;
2087 } else {
2088 jjtree.popNode();
2089 }
2090 if (jjte003 instanceof RuntimeException) {
2091 {if (true) throw (RuntimeException)jjte003;}
2092 }
2093 if (jjte003 instanceof ParseException) {
2094 {if (true) throw (ParseException)jjte003;}
2095 }
2096 {if (true) throw (Error)jjte003;}
2097 } finally {
2098 if (jjtc003) {
2099 jjtree.closeNodeScope(jjtn003, 2);
2100 }
2101 }
2102 break;
2103 case LOGICAL_GE:
2104 jj_consume_token(LOGICAL_GE);
2105 ASTGENode jjtn004 = new ASTGENode(this, JJTGENODE);
2106 boolean jjtc004 = true;
2107 jjtree.openNodeScope(jjtn004);
2108 try {
2109 AdditiveExpression();
2110 } catch (Throwable jjte004) {
2111 if (jjtc004) {
2112 jjtree.clearNodeScope(jjtn004);
2113 jjtc004 = false;
2114 } else {
2115 jjtree.popNode();
2116 }
2117 if (jjte004 instanceof RuntimeException) {
2118 {if (true) throw (RuntimeException)jjte004;}
2119 }
2120 if (jjte004 instanceof ParseException) {
2121 {if (true) throw (ParseException)jjte004;}
2122 }
2123 {if (true) throw (Error)jjte004;}
2124 } finally {
2125 if (jjtc004) {
2126 jjtree.closeNodeScope(jjtn004, 2);
2127 }
2128 }
2129 break;
2130 default:
2131 jj_la1[50] = jj_gen;
2132 jj_consume_token(-1);
2133 throw new ParseException();
2134 }
2135 }
2136 }
2137
2138 final public void AdditiveExpression() throws ParseException {
2139 MultiplicativeExpression();
2140 label_18:
2141 while (true) {
2142 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2143 case MINUS:
2144 case PLUS:
2145 ;
2146 break;
2147 default:
2148 jj_la1[51] = jj_gen;
2149 break label_18;
2150 }
2151 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2152 case PLUS:
2153 jj_consume_token(PLUS);
2154 ASTAddNode jjtn001 = new ASTAddNode(this, JJTADDNODE);
2155 boolean jjtc001 = true;
2156 jjtree.openNodeScope(jjtn001);
2157 try {
2158 MultiplicativeExpression();
2159 } catch (Throwable jjte001) {
2160 if (jjtc001) {
2161 jjtree.clearNodeScope(jjtn001);
2162 jjtc001 = false;
2163 } else {
2164 jjtree.popNode();
2165 }
2166 if (jjte001 instanceof RuntimeException) {
2167 {if (true) throw (RuntimeException)jjte001;}
2168 }
2169 if (jjte001 instanceof ParseException) {
2170 {if (true) throw (ParseException)jjte001;}
2171 }
2172 {if (true) throw (Error)jjte001;}
2173 } finally {
2174 if (jjtc001) {
2175 jjtree.closeNodeScope(jjtn001, 2);
2176 }
2177 }
2178 break;
2179 case MINUS:
2180 jj_consume_token(MINUS);
2181 ASTSubtractNode jjtn002 = new ASTSubtractNode(this, JJTSUBTRACTNODE);
2182 boolean jjtc002 = true;
2183 jjtree.openNodeScope(jjtn002);
2184 try {
2185 MultiplicativeExpression();
2186 } catch (Throwable jjte002) {
2187 if (jjtc002) {
2188 jjtree.clearNodeScope(jjtn002);
2189 jjtc002 = false;
2190 } else {
2191 jjtree.popNode();
2192 }
2193 if (jjte002 instanceof RuntimeException) {
2194 {if (true) throw (RuntimeException)jjte002;}
2195 }
2196 if (jjte002 instanceof ParseException) {
2197 {if (true) throw (ParseException)jjte002;}
2198 }
2199 {if (true) throw (Error)jjte002;}
2200 } finally {
2201 if (jjtc002) {
2202 jjtree.closeNodeScope(jjtn002, 2);
2203 }
2204 }
2205 break;
2206 default:
2207 jj_la1[52] = jj_gen;
2208 jj_consume_token(-1);
2209 throw new ParseException();
2210 }
2211 }
2212 }
2213
2214 final public void MultiplicativeExpression() throws ParseException {
2215 UnaryExpression();
2216 label_19:
2217 while (true) {
2218 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2219 case MULTIPLY:
2220 case DIVIDE:
2221 case MODULUS:
2222 ;
2223 break;
2224 default:
2225 jj_la1[53] = jj_gen;
2226 break label_19;
2227 }
2228 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2229 case MULTIPLY:
2230 jj_consume_token(MULTIPLY);
2231 ASTMulNode jjtn001 = new ASTMulNode(this, JJTMULNODE);
2232 boolean jjtc001 = true;
2233 jjtree.openNodeScope(jjtn001);
2234 try {
2235 UnaryExpression();
2236 } catch (Throwable jjte001) {
2237 if (jjtc001) {
2238 jjtree.clearNodeScope(jjtn001);
2239 jjtc001 = false;
2240 } else {
2241 jjtree.popNode();
2242 }
2243 if (jjte001 instanceof RuntimeException) {
2244 {if (true) throw (RuntimeException)jjte001;}
2245 }
2246 if (jjte001 instanceof ParseException) {
2247 {if (true) throw (ParseException)jjte001;}
2248 }
2249 {if (true) throw (Error)jjte001;}
2250 } finally {
2251 if (jjtc001) {
2252 jjtree.closeNodeScope(jjtn001, 2);
2253 }
2254 }
2255 break;
2256 case DIVIDE:
2257 jj_consume_token(DIVIDE);
2258 ASTDivNode jjtn002 = new ASTDivNode(this, JJTDIVNODE);
2259 boolean jjtc002 = true;
2260 jjtree.openNodeScope(jjtn002);
2261 try {
2262 UnaryExpression();
2263 } catch (Throwable jjte002) {
2264 if (jjtc002) {
2265 jjtree.clearNodeScope(jjtn002);
2266 jjtc002 = false;
2267 } else {
2268 jjtree.popNode();
2269 }
2270 if (jjte002 instanceof RuntimeException) {
2271 {if (true) throw (RuntimeException)jjte002;}
2272 }
2273 if (jjte002 instanceof ParseException) {
2274 {if (true) throw (ParseException)jjte002;}
2275 }
2276 {if (true) throw (Error)jjte002;}
2277 } finally {
2278 if (jjtc002) {
2279 jjtree.closeNodeScope(jjtn002, 2);
2280 }
2281 }
2282 break;
2283 case MODULUS:
2284 jj_consume_token(MODULUS);
2285 ASTModNode jjtn003 = new ASTModNode(this, JJTMODNODE);
2286 boolean jjtc003 = true;
2287 jjtree.openNodeScope(jjtn003);
2288 try {
2289 UnaryExpression();
2290 } catch (Throwable jjte003) {
2291 if (jjtc003) {
2292 jjtree.clearNodeScope(jjtn003);
2293 jjtc003 = false;
2294 } else {
2295 jjtree.popNode();
2296 }
2297 if (jjte003 instanceof RuntimeException) {
2298 {if (true) throw (RuntimeException)jjte003;}
2299 }
2300 if (jjte003 instanceof ParseException) {
2301 {if (true) throw (ParseException)jjte003;}
2302 }
2303 {if (true) throw (Error)jjte003;}
2304 } finally {
2305 if (jjtc003) {
2306 jjtree.closeNodeScope(jjtn003, 2);
2307 }
2308 }
2309 break;
2310 default:
2311 jj_la1[54] = jj_gen;
2312 jj_consume_token(-1);
2313 throw new ParseException();
2314 }
2315 }
2316 }
2317
2318 final public void UnaryExpression() throws ParseException {
2319 if (jj_2_11(2)) {
2320 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2321 case WHITESPACE:
2322 jj_consume_token(WHITESPACE);
2323 break;
2324 default:
2325 jj_la1[55] = jj_gen;
2326 ;
2327 }
2328 jj_consume_token(LOGICAL_NOT);
2329 ASTNotNode jjtn001 = new ASTNotNode(this, JJTNOTNODE);
2330 boolean jjtc001 = true;
2331 jjtree.openNodeScope(jjtn001);
2332 try {
2333 UnaryExpression();
2334 } catch (Throwable jjte001) {
2335 if (jjtc001) {
2336 jjtree.clearNodeScope(jjtn001);
2337 jjtc001 = false;
2338 } else {
2339 jjtree.popNode();
2340 }
2341 if (jjte001 instanceof RuntimeException) {
2342 {if (true) throw (RuntimeException)jjte001;}
2343 }
2344 if (jjte001 instanceof ParseException) {
2345 {if (true) throw (ParseException)jjte001;}
2346 }
2347 {if (true) throw (Error)jjte001;}
2348 } finally {
2349 if (jjtc001) {
2350 jjtree.closeNodeScope(jjtn001, 1);
2351 }
2352 }
2353 } else {
2354 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2355 case LBRACKET:
2356 case LEFT_CURLEY:
2357 case LPAREN:
2358 case WHITESPACE:
2359 case STRING_LITERAL:
2360 case TRUE:
2361 case FALSE:
2362 case INTEGER_LITERAL:
2363 case FLOATING_POINT_LITERAL:
2364 case IDENTIFIER:
2365 case LCURLY:
2366 PrimaryExpression();
2367 break;
2368 default:
2369 jj_la1[56] = jj_gen;
2370 jj_consume_token(-1);
2371 throw new ParseException();
2372 }
2373 }
2374 }
2375
2376 final public void PrimaryExpression() throws ParseException {
2377 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2378 case WHITESPACE:
2379 jj_consume_token(WHITESPACE);
2380 break;
2381 default:
2382 jj_la1[57] = jj_gen;
2383 ;
2384 }
2385 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2386 case STRING_LITERAL:
2387 StringLiteral();
2388 break;
2389 case IDENTIFIER:
2390 case LCURLY:
2391 Reference();
2392 break;
2393 case INTEGER_LITERAL:
2394 IntegerLiteral();
2395 break;
2396 default:
2397 jj_la1[58] = jj_gen;
2398 if (jj_2_12(2147483647)) {
2399 IntegerRange();
2400 } else {
2401 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2402 case FLOATING_POINT_LITERAL:
2403 FloatingPointLiteral();
2404 break;
2405 case LEFT_CURLEY:
2406 Map();
2407 break;
2408 case LBRACKET:
2409 ObjectArray();
2410 break;
2411 case TRUE:
2412 True();
2413 break;
2414 case FALSE:
2415 False();
2416 break;
2417 case LPAREN:
2418 jj_consume_token(LPAREN);
2419 Expression();
2420 jj_consume_token(RPAREN);
2421 break;
2422 default:
2423 jj_la1[59] = jj_gen;
2424 jj_consume_token(-1);
2425 throw new ParseException();
2426 }
2427 }
2428 }
2429 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2430 case WHITESPACE:
2431 jj_consume_token(WHITESPACE);
2432 break;
2433 default:
2434 jj_la1[60] = jj_gen;
2435 ;
2436 }
2437 }
2438
2439 final private boolean jj_2_1(int xla) {
2440 jj_la = xla; jj_lastpos = jj_scanpos = token;
2441 try { return !jj_3_1(); }
2442 catch(LookaheadSuccess ls) { return true; }
2443 finally { jj_save(0, xla); }
2444 }
2445
2446 final private boolean jj_2_2(int xla) {
2447 jj_la = xla; jj_lastpos = jj_scanpos = token;
2448 try { return !jj_3_2(); }
2449 catch(LookaheadSuccess ls) { return true; }
2450 finally { jj_save(1, xla); }
2451 }
2452
2453 final private boolean jj_2_3(int xla) {
2454 jj_la = xla; jj_lastpos = jj_scanpos = token;
2455 try { return !jj_3_3(); }
2456 catch(LookaheadSuccess ls) { return true; }
2457 finally { jj_save(2, xla); }
2458 }
2459
2460 final private boolean jj_2_4(int xla) {
2461 jj_la = xla; jj_lastpos = jj_scanpos = token;
2462 try { return !jj_3_4(); }
2463 catch(LookaheadSuccess ls) { return true; }
2464 finally { jj_save(3, xla); }
2465 }
2466
2467 final private boolean jj_2_5(int xla) {
2468 jj_la = xla; jj_lastpos = jj_scanpos = token;
2469 try { return !jj_3_5(); }
2470 catch(LookaheadSuccess ls) { return true; }
2471 finally { jj_save(4, xla); }
2472 }
2473
2474 final private boolean jj_2_6(int xla) {
2475 jj_la = xla; jj_lastpos = jj_scanpos = token;
2476 try { return !jj_3_6(); }
2477 catch(LookaheadSuccess ls) { return true; }
2478 finally { jj_save(5, xla); }
2479 }
2480
2481 final private boolean jj_2_7(int xla) {
2482 jj_la = xla; jj_lastpos = jj_scanpos = token;
2483 try { return !jj_3_7(); }
2484 catch(LookaheadSuccess ls) { return true; }
2485 finally { jj_save(6, xla); }
2486 }
2487
2488 final private boolean jj_2_8(int xla) {
2489 jj_la = xla; jj_lastpos = jj_scanpos = token;
2490 try { return !jj_3_8(); }
2491 catch(LookaheadSuccess ls) { return true; }
2492 finally { jj_save(7, xla); }
2493 }
2494
2495 final private boolean jj_2_9(int xla) {
2496 jj_la = xla; jj_lastpos = jj_scanpos = token;
2497 try { return !jj_3_9(); }
2498 catch(LookaheadSuccess ls) { return true; }
2499 finally { jj_save(8, xla); }
2500 }
2501
2502 final private boolean jj_2_10(int xla) {
2503 jj_la = xla; jj_lastpos = jj_scanpos = token;
2504 try { return !jj_3_10(); }
2505 catch(LookaheadSuccess ls) { return true; }
2506 finally { jj_save(9, xla); }
2507 }
2508
2509 final private boolean jj_2_11(int xla) {
2510 jj_la = xla; jj_lastpos = jj_scanpos = token;
2511 try { return !jj_3_11(); }
2512 catch(LookaheadSuccess ls) { return true; }
2513 finally { jj_save(10, xla); }
2514 }
2515
2516 final private boolean jj_2_12(int xla) {
2517 jj_la = xla; jj_lastpos = jj_scanpos = token;
2518 try { return !jj_3_12(); }
2519 catch(LookaheadSuccess ls) { return true; }
2520 finally { jj_save(11, xla); }
2521 }
2522
2523 final private boolean jj_3R_82() {
2524 if (jj_scan_token(COMMA)) return true;
2525 if (jj_3R_25()) return true;
2526 return false;
2527 }
2528
2529 final private boolean jj_3_8() {
2530 if (jj_3R_29()) return true;
2531 return false;
2532 }
2533
2534 final private boolean jj_3R_26() {
2535 if (jj_3R_20()) return true;
2536 return false;
2537 }
2538
2539 final private boolean jj_3R_66() {
2540 if (jj_scan_token(FALSE)) return true;
2541 return false;
2542 }
2543
2544 final private boolean jj_3R_65() {
2545 if (jj_scan_token(TRUE)) return true;
2546 return false;
2547 }
2548
2549 final private boolean jj_3_9() {
2550 if (jj_scan_token(DOT)) return true;
2551 Token xsp;
2552 xsp = jj_scanpos;
2553 if (jj_3_10()) {
2554 jj_scanpos = xsp;
2555 if (jj_3R_30()) return true;
2556 }
2557 return false;
2558 }
2559
2560 final private boolean jj_3R_57() {
2561 if (jj_3R_25()) return true;
2562 Token xsp;
2563 while (true) {
2564 xsp = jj_scanpos;
2565 if (jj_3R_82()) { jj_scanpos = xsp; break; }
2566 }
2567 return false;
2568 }
2569
2570 final private boolean jj_3_7() {
2571 if (jj_scan_token(DOT)) return true;
2572 Token xsp;
2573 xsp = jj_scanpos;
2574 if (jj_3_8()) {
2575 jj_scanpos = xsp;
2576 if (jj_3R_28()) return true;
2577 }
2578 return false;
2579 }
2580
2581 final private boolean jj_3_2() {
2582 if (jj_scan_token(DOUBLE_ESCAPE)) return true;
2583 return false;
2584 }
2585
2586 final private boolean jj_3R_35() {
2587 if (jj_scan_token(LCURLY)) return true;
2588 if (jj_scan_token(IDENTIFIER)) return true;
2589 Token xsp;
2590 while (true) {
2591 xsp = jj_scanpos;
2592 if (jj_3_9()) { jj_scanpos = xsp; break; }
2593 }
2594 if (jj_scan_token(RCURLY)) return true;
2595 return false;
2596 }
2597
2598 final private boolean jj_3_12() {
2599 if (jj_scan_token(LBRACKET)) return true;
2600 Token xsp;
2601 xsp = jj_scanpos;
2602 if (jj_scan_token(26)) jj_scanpos = xsp;
2603 xsp = jj_scanpos;
2604 if (jj_3R_32()) {
2605 jj_scanpos = xsp;
2606 if (jj_3R_33()) return true;
2607 }
2608 xsp = jj_scanpos;
2609 if (jj_scan_token(26)) jj_scanpos = xsp;
2610 if (jj_scan_token(DOUBLEDOT)) return true;
2611 return false;
2612 }
2613
2614 final private boolean jj_3R_34() {
2615 if (jj_scan_token(IDENTIFIER)) return true;
2616 Token xsp;
2617 while (true) {
2618 xsp = jj_scanpos;
2619 if (jj_3_7()) { jj_scanpos = xsp; break; }
2620 }
2621 return false;
2622 }
2623
2624 final private boolean jj_3R_81() {
2625 if (jj_scan_token(LPAREN)) return true;
2626 return false;
2627 }
2628
2629 final private boolean jj_3R_80() {
2630 if (jj_3R_66()) return true;
2631 return false;
2632 }
2633
2634 final private boolean jj_3R_79() {
2635 if (jj_3R_65()) return true;
2636 return false;
2637 }
2638
2639 final private boolean jj_3R_20() {
2640 Token xsp;
2641 xsp = jj_scanpos;
2642 if (jj_3R_34()) {
2643 jj_scanpos = xsp;
2644 if (jj_3R_35()) return true;
2645 }
2646 return false;
2647 }
2648
2649 final private boolean jj_3R_78() {
2650 if (jj_3R_64()) return true;
2651 return false;
2652 }
2653
2654 final private boolean jj_3R_77() {
2655 if (jj_3R_63()) return true;
2656 return false;
2657 }
2658
2659 final private boolean jj_3R_76() {
2660 if (jj_3R_62()) return true;
2661 return false;
2662 }
2663
2664 final private boolean jj_3R_75() {
2665 if (jj_3R_61()) return true;
2666 return false;
2667 }
2668
2669 final private boolean jj_3R_74() {
2670 if (jj_3R_36()) return true;
2671 return false;
2672 }
2673
2674 final private boolean jj_3R_73() {
2675 if (jj_3R_20()) return true;
2676 return false;
2677 }
2678
2679 final private boolean jj_3_6() {
2680 if (jj_scan_token(LBRACKET)) return true;
2681 Token xsp;
2682 xsp = jj_scanpos;
2683 if (jj_scan_token(26)) jj_scanpos = xsp;
2684 xsp = jj_scanpos;
2685 if (jj_3R_26()) {
2686 jj_scanpos = xsp;
2687 if (jj_3R_27()) return true;
2688 }
2689 xsp = jj_scanpos;
2690 if (jj_scan_token(26)) jj_scanpos = xsp;
2691 if (jj_scan_token(DOUBLEDOT)) return true;
2692 return false;
2693 }
2694
2695 final private boolean jj_3R_29() {
2696 if (jj_3R_56()) return true;
2697 if (jj_scan_token(LPAREN)) return true;
2698 Token xsp;
2699 xsp = jj_scanpos;
2700 if (jj_3R_57()) jj_scanpos = xsp;
2701 if (jj_scan_token(REFMOD2_RPAREN)) return true;
2702 return false;
2703 }
2704
2705 final private boolean jj_3R_72() {
2706 if (jj_3R_60()) return true;
2707 return false;
2708 }
2709
2710 final private boolean jj_3R_67() {
2711 Token xsp;
2712 xsp = jj_scanpos;
2713 if (jj_scan_token(26)) jj_scanpos = xsp;
2714 xsp = jj_scanpos;
2715 if (jj_3R_72()) {
2716 jj_scanpos = xsp;
2717 if (jj_3R_73()) {
2718 jj_scanpos = xsp;
2719 if (jj_3R_74()) {
2720 jj_scanpos = xsp;
2721 if (jj_3R_75()) {
2722 jj_scanpos = xsp;
2723 if (jj_3R_76()) {
2724 jj_scanpos = xsp;
2725 if (jj_3R_77()) {
2726 jj_scanpos = xsp;
2727 if (jj_3R_78()) {
2728 jj_scanpos = xsp;
2729 if (jj_3R_79()) {
2730 jj_scanpos = xsp;
2731 if (jj_3R_80()) {
2732 jj_scanpos = xsp;
2733 if (jj_3R_81()) return true;
2734 }
2735 }
2736 }
2737 }
2738 }
2739 }
2740 }
2741 }
2742 }
2743 return false;
2744 }
2745
2746 final private boolean jj_3R_55() {
2747 if (jj_3R_62()) return true;
2748 return false;
2749 }
2750
2751 final private boolean jj_3R_54() {
2752 if (jj_3R_20()) return true;
2753 return false;
2754 }
2755
2756 final private boolean jj_3R_53() {
2757 if (jj_3R_66()) return true;
2758 return false;
2759 }
2760
2761 final private boolean jj_3R_85() {
2762 if (jj_scan_token(COMMA)) return true;
2763 if (jj_3R_25()) return true;
2764 if (jj_scan_token(COLON)) return true;
2765 if (jj_3R_25()) return true;
2766 return false;
2767 }
2768
2769 final private boolean jj_3R_52() {
2770 if (jj_3R_65()) return true;
2771 return false;
2772 }
2773
2774 final private boolean jj_3R_31() {
2775 Token xsp;
2776 xsp = jj_scanpos;
2777 if (jj_3_11()) {
2778 jj_scanpos = xsp;
2779 if (jj_3R_58()) return true;
2780 }
2781 return false;
2782 }
2783
2784 final private boolean jj_3_11() {
2785 Token xsp;
2786 xsp = jj_scanpos;
2787 if (jj_scan_token(26)) jj_scanpos = xsp;
2788 if (jj_scan_token(LOGICAL_NOT)) return true;
2789 if (jj_3R_31()) return true;
2790 return false;
2791 }
2792
2793 final private boolean jj_3R_58() {
2794 if (jj_3R_67()) return true;
2795 return false;
2796 }
2797
2798 final private boolean jj_3R_51() {
2799 if (jj_3R_64()) return true;
2800 return false;
2801 }
2802
2803 final private boolean jj_3R_50() {
2804 if (jj_3R_63()) return true;
2805 return false;
2806 }
2807
2808 final private boolean jj_3R_49() {
2809 if (jj_3R_61()) return true;
2810 return false;
2811 }
2812
2813 final private boolean jj_3R_48() {
2814 if (jj_3R_36()) return true;
2815 return false;
2816 }
2817
2818 final private boolean jj_3R_47() {
2819 if (jj_3R_60()) return true;
2820 return false;
2821 }
2822
2823 final private boolean jj_3R_22() {
2824 if (jj_3R_36()) return true;
2825 return false;
2826 }
2827
2828 final private boolean jj_3R_84() {
2829 if (jj_3R_36()) return true;
2830 return false;
2831 }
2832
2833 final private boolean jj_3R_69() {
2834 if (jj_3R_36()) return true;
2835 return false;
2836 }
2837
2838 final private boolean jj_3R_86() {
2839 if (jj_scan_token(COMMA)) return true;
2840 if (jj_3R_25()) return true;
2841 return false;
2842 }
2843
2844 final private boolean jj_3R_25() {
2845 Token xsp;
2846 xsp = jj_scanpos;
2847 if (jj_scan_token(26)) jj_scanpos = xsp;
2848 xsp = jj_scanpos;
2849 if (jj_3R_47()) {
2850 jj_scanpos = xsp;
2851 if (jj_3R_48()) {
2852 jj_scanpos = xsp;
2853 if (jj_3R_49()) {
2854 jj_scanpos = xsp;
2855 if (jj_3R_50()) {
2856 jj_scanpos = xsp;
2857 if (jj_3R_51()) {
2858 jj_scanpos = xsp;
2859 if (jj_3R_52()) {
2860 jj_scanpos = xsp;
2861 if (jj_3R_53()) {
2862 jj_scanpos = xsp;
2863 if (jj_3R_54()) {
2864 jj_scanpos = xsp;
2865 if (jj_3R_55()) return true;
2866 }
2867 }
2868 }
2869 }
2870 }
2871 }
2872 }
2873 }
2874 xsp = jj_scanpos;
2875 if (jj_scan_token(26)) jj_scanpos = xsp;
2876 return false;
2877 }
2878
2879 final private boolean jj_3_1() {
2880 if (jj_3R_20()) return true;
2881 return false;
2882 }
2883
2884 final private boolean jj_3R_21() {
2885 if (jj_3R_20()) return true;
2886 return false;
2887 }
2888
2889 final private boolean jj_3R_83() {
2890 if (jj_3R_20()) return true;
2891 return false;
2892 }
2893
2894 final private boolean jj_3R_68() {
2895 if (jj_3R_20()) return true;
2896 return false;
2897 }
2898
2899 final private boolean jj_3R_71() {
2900 if (jj_3R_25()) return true;
2901 Token xsp;
2902 while (true) {
2903 xsp = jj_scanpos;
2904 if (jj_3R_86()) { jj_scanpos = xsp; break; }
2905 }
2906 return false;
2907 }
2908
2909 final private boolean jj_3R_61() {
2910 if (jj_scan_token(LBRACKET)) return true;
2911 Token xsp;
2912 xsp = jj_scanpos;
2913 if (jj_scan_token(26)) jj_scanpos = xsp;
2914 xsp = jj_scanpos;
2915 if (jj_3R_68()) {
2916 jj_scanpos = xsp;
2917 if (jj_3R_69()) return true;
2918 }
2919 xsp = jj_scanpos;
2920 if (jj_scan_token(26)) jj_scanpos = xsp;
2921 if (jj_scan_token(DOUBLEDOT)) return true;
2922 xsp = jj_scanpos;
2923 if (jj_scan_token(26)) jj_scanpos = xsp;
2924 xsp = jj_scanpos;
2925 if (jj_3R_83()) {
2926 jj_scanpos = xsp;
2927 if (jj_3R_84()) return true;
2928 }
2929 xsp = jj_scanpos;
2930 if (jj_scan_token(26)) jj_scanpos = xsp;
2931 if (jj_scan_token(RBRACKET)) return true;
2932 return false;
2933 }
2934
2935 final private boolean jj_3R_64() {
2936 if (jj_scan_token(LBRACKET)) return true;
2937 Token xsp;
2938 xsp = jj_scanpos;
2939 if (jj_3R_71()) jj_scanpos = xsp;
2940 if (jj_scan_token(RBRACKET)) return true;
2941 return false;
2942 }
2943
2944 final private boolean jj_3R_46() {
2945 if (jj_3R_66()) return true;
2946 return false;
2947 }
2948
2949 final private boolean jj_3R_70() {
2950 Token xsp;
2951 xsp = jj_scanpos;
2952 if (jj_scan_token(26)) jj_scanpos = xsp;
2953 return false;
2954 }
2955
2956 final private boolean jj_3_5() {
2957 if (jj_3R_25()) return true;
2958 if (jj_scan_token(COLON)) return true;
2959 if (jj_3R_25()) return true;
2960 Token xsp;
2961 while (true) {
2962 xsp = jj_scanpos;
2963 if (jj_3R_85()) { jj_scanpos = xsp; break; }
2964 }
2965 return false;
2966 }
2967
2968 final private boolean jj_3R_45() {
2969 if (jj_3R_65()) return true;
2970 return false;
2971 }
2972
2973 final private boolean jj_3R_63() {
2974 if (jj_scan_token(LEFT_CURLEY)) return true;
2975 Token xsp;
2976 xsp = jj_scanpos;
2977 if (jj_3_5()) {
2978 jj_scanpos = xsp;
2979 if (jj_3R_70()) return true;
2980 }
2981 if (jj_scan_token(RIGHT_CURLEY)) return true;
2982 return false;
2983 }
2984
2985 final private boolean jj_3_3() {
2986 if (jj_scan_token(LBRACKET)) return true;
2987 Token xsp;
2988 xsp = jj_scanpos;
2989 if (jj_scan_token(26)) jj_scanpos = xsp;
2990 xsp = jj_scanpos;
2991 if (jj_3R_21()) {
2992 jj_scanpos = xsp;
2993 if (jj_3R_22()) return true;
2994 }
2995 xsp = jj_scanpos;
2996 if (jj_scan_token(26)) jj_scanpos = xsp;
2997 if (jj_scan_token(DOUBLEDOT)) return true;
2998 return false;
2999 }
3000
3001 final private boolean jj_3R_44() {
3002 if (jj_3R_64()) return true;
3003 return false;
3004 }
3005
3006 final private boolean jj_3R_43() {
3007 if (jj_3R_63()) return true;
3008 return false;
3009 }
3010
3011 final private boolean jj_3R_42() {
3012 if (jj_3R_62()) return true;
3013 return false;
3014 }
3015
3016 final private boolean jj_3R_41() {
3017 if (jj_3R_61()) return true;
3018 return false;
3019 }
3020
3021 final private boolean jj_3R_40() {
3022 if (jj_3R_36()) return true;
3023 return false;
3024 }
3025
3026 final private boolean jj_3R_39() {
3027 if (jj_3R_60()) return true;
3028 return false;
3029 }
3030
3031 final private boolean jj_3R_23() {
3032 if (jj_scan_token(COMMA)) return true;
3033 Token xsp;
3034 xsp = jj_scanpos;
3035 if (jj_scan_token(26)) jj_scanpos = xsp;
3036 return false;
3037 }
3038
3039 final private boolean jj_3R_38() {
3040 if (jj_3R_59()) return true;
3041 return false;
3042 }
3043
3044 final private boolean jj_3R_37() {
3045 if (jj_3R_20()) return true;
3046 return false;
3047 }
3048
3049 final private boolean jj_3R_24() {
3050 Token xsp;
3051 xsp = jj_scanpos;
3052 if (jj_3R_37()) {
3053 jj_scanpos = xsp;
3054 if (jj_3R_38()) {
3055 jj_scanpos = xsp;
3056 if (jj_3R_39()) {
3057 jj_scanpos = xsp;
3058 if (jj_3R_40()) {
3059 jj_scanpos = xsp;
3060 if (jj_3R_41()) {
3061 jj_scanpos = xsp;
3062 if (jj_3R_42()) {
3063 jj_scanpos = xsp;
3064 if (jj_3R_43()) {
3065 jj_scanpos = xsp;
3066 if (jj_3R_44()) {
3067 jj_scanpos = xsp;
3068 if (jj_3R_45()) {
3069 jj_scanpos = xsp;
3070 if (jj_3R_46()) return true;
3071 }
3072 }
3073 }
3074 }
3075 }
3076 }
3077 }
3078 }
3079 }
3080 return false;
3081 }
3082
3083 final private boolean jj_3R_59() {
3084 if (jj_scan_token(WORD)) return true;
3085 return false;
3086 }
3087
3088 final private boolean jj_3R_56() {
3089 if (jj_scan_token(IDENTIFIER)) return true;
3090 return false;
3091 }
3092
3093 final private boolean jj_3_4() {
3094 Token xsp;
3095 xsp = jj_scanpos;
3096 if (jj_scan_token(26)) jj_scanpos = xsp;
3097 xsp = jj_scanpos;
3098 if (jj_3R_23()) jj_scanpos = xsp;
3099 if (jj_3R_24()) return true;
3100 return false;
3101 }
3102
3103 final private boolean jj_3R_60() {
3104 if (jj_scan_token(STRING_LITERAL)) return true;
3105 return false;
3106 }
3107
3108 final private boolean jj_3R_30() {
3109 if (jj_3R_56()) return true;
3110 return false;
3111 }
3112
3113 final private boolean jj_3R_36() {
3114 if (jj_scan_token(INTEGER_LITERAL)) return true;
3115 return false;
3116 }
3117
3118 final private boolean jj_3R_28() {
3119 if (jj_3R_56()) return true;
3120 return false;
3121 }
3122
3123 final private boolean jj_3R_62() {
3124 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
3125 return false;
3126 }
3127
3128 final private boolean jj_3R_33() {
3129 if (jj_3R_36()) return true;
3130 return false;
3131 }
3132
3133 final private boolean jj_3R_32() {
3134 if (jj_3R_20()) return true;
3135 return false;
3136 }
3137
3138 final private boolean jj_3R_27() {
3139 if (jj_3R_36()) return true;
3140 return false;
3141 }
3142
3143 final private boolean jj_3_10() {
3144 if (jj_3R_29()) return true;
3145 return false;
3146 }
3147
3148 public ParserTokenManager token_source;
3149 public Token token, jj_nt;
3150 private int jj_ntk;
3151 private Token jj_scanpos, jj_lastpos;
3152 private int jj_la;
3153 public boolean lookingAhead = false;
3154 private boolean jj_semLA;
3155 private int jj_gen;
3156 final private int[] jj_la1 = new int[61];
3157 static private int[] jj_la1_0;
3158 static private int[] jj_la1_1;
3159 static private int[] jj_la1_2;
3160 static {
3161 jj_la1_0();
3162 jj_la1_1();
3163 jj_la1_2();
3164 }
3165 private static void jj_la1_0() {
3166 jj_la1_0 = new int[] {0x9bc1b00,0x0,0x9bc1b00,0x400000,0x1840000,0x8000000,0x30000042,0x0,0x4000000,0x4000000,0x4000000,0x8,0x4000000,0x9bc1b00,0x8,0x4000000,0x8,0x3c000042,0x4000000,0x0,0x4000000,0x4000000,0x0,0x4000000,0x4000000,0x8000000,0x30000042,0x4000000,0x8,0x3c000042,0x0,0x0,0x0,0x8300300,0x4000000,0x9bc1b00,0x0,0x0,0x0,0x9bc1b00,0x4000000,0x9bc1b00,0x4000000,0x4000000,0x40000000,0x0,0x0,0x0,0x0,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x4000000,0x3c000142,0x4000000,0x8000000,0x30000142,0x4000000,};
3167 }
3168 private static void jj_la1_1() {
3169 jj_la1_1 = new int[] {0xc6348000,0x48000,0x86300000,0x0,0x0,0x42100000,0x200000,0x6000000,0x0,0x0,0x0,0x0,0x0,0xc6348000,0x0,0x0,0x0,0x40300000,0x0,0x40100000,0x0,0x0,0x40100000,0x0,0x0,0x100000,0x40200000,0x0,0x0,0x40300000,0x40000000,0x40000000,0x40000000,0x80300000,0x0,0xc6348000,0x10000,0x10000,0x20000,0xc6348000,0x0,0xc6348000,0x0,0x0,0x0,0x20,0x10,0xc00,0xc00,0x3c0,0x3c0,0x1,0x1,0xe,0xe,0x0,0x40300000,0x0,0x40100000,0x200000,0x0,};
3170 }
3171 private static void jj_la1_2() {
3172 jj_la1_2 = new int[] {0x3,0x0,0x3,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x1,0x0,0x0,0x1,0x3,0x0,0x3,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,};
3173 }
3174 final private JJCalls[] jj_2_rtns = new JJCalls[12];
3175 private boolean jj_rescan = false;
3176 private int jj_gc = 0;
3177
3178 public Parser(CharStream stream) {
3179 token_source = new ParserTokenManager(stream);
3180 token = new Token();
3181 jj_ntk = -1;
3182 jj_gen = 0;
3183 for (int i = 0; i < 61; i++) jj_la1[i] = -1;
3184 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3185 }
3186
3187 public void ReInit(CharStream stream) {
3188 token_source.ReInit(stream);
3189 token = new Token();
3190 jj_ntk = -1;
3191 jjtree.reset();
3192 jj_gen = 0;
3193 for (int i = 0; i < 61; i++) jj_la1[i] = -1;
3194 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3195 }
3196
3197 public Parser(ParserTokenManager tm) {
3198 token_source = tm;
3199 token = new Token();
3200 jj_ntk = -1;
3201 jj_gen = 0;
3202 for (int i = 0; i < 61; i++) jj_la1[i] = -1;
3203 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3204 }
3205
3206 public void ReInit(ParserTokenManager tm) {
3207 token_source = tm;
3208 token = new Token();
3209 jj_ntk = -1;
3210 jjtree.reset();
3211 jj_gen = 0;
3212 for (int i = 0; i < 61; i++) jj_la1[i] = -1;
3213 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3214 }
3215
3216 final private Token jj_consume_token(int kind) throws ParseException {
3217 Token oldToken;
3218 if ((oldToken = token).next != null) token = token.next;
3219 else token = token.next = token_source.getNextToken();
3220 jj_ntk = -1;
3221 if (token.kind == kind) {
3222 jj_gen++;
3223 if (++jj_gc > 100) {
3224 jj_gc = 0;
3225 for (int i = 0; i < jj_2_rtns.length; i++) {
3226 JJCalls c = jj_2_rtns[i];
3227 while (c != null) {
3228 if (c.gen < jj_gen) c.first = null;
3229 c = c.next;
3230 }
3231 }
3232 }
3233 return token;
3234 }
3235 token = oldToken;
3236 jj_kind = kind;
3237 throw generateParseException();
3238 }
3239
3240 static private final class LookaheadSuccess extends java.lang.Error { }
3241 final private LookaheadSuccess jj_ls = new LookaheadSuccess();
3242 final private boolean jj_scan_token(int kind) {
3243 if (jj_scanpos == jj_lastpos) {
3244 jj_la--;
3245 if (jj_scanpos.next == null) {
3246 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3247 } else {
3248 jj_lastpos = jj_scanpos = jj_scanpos.next;
3249 }
3250 } else {
3251 jj_scanpos = jj_scanpos.next;
3252 }
3253 if (jj_rescan) {
3254 int i = 0; Token tok = token;
3255 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3256 if (tok != null) jj_add_error_token(kind, i);
3257 }
3258 if (jj_scanpos.kind != kind) return true;
3259 if (jj_la == 0 && jj_scanpos == jj_lastpos) throw jj_ls;
3260 return false;
3261 }
3262
3263 final public Token getNextToken() {
3264 if (token.next != null) token = token.next;
3265 else token = token.next = token_source.getNextToken();
3266 jj_ntk = -1;
3267 jj_gen++;
3268 return token;
3269 }
3270
3271 final public Token getToken(int index) {
3272 Token t = lookingAhead ? jj_scanpos : token;
3273 for (int i = 0; i < index; i++) {
3274 if (t.next != null) t = t.next;
3275 else t = t.next = token_source.getNextToken();
3276 }
3277 return t;
3278 }
3279
3280 final private int jj_ntk() {
3281 if ((jj_nt=token.next) == null)
3282 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3283 else
3284 return (jj_ntk = jj_nt.kind);
3285 }
3286
3287 private java.util.Vector jj_expentries = new java.util.Vector();
3288 private int[] jj_expentry;
3289 private int jj_kind = -1;
3290 private int[] jj_lasttokens = new int[100];
3291 private int jj_endpos;
3292
3293 private void jj_add_error_token(int kind, int pos) {
3294 if (pos >= 100) return;
3295 if (pos == jj_endpos + 1) {
3296 jj_lasttokens[jj_endpos++] = kind;
3297 } else if (jj_endpos != 0) {
3298 jj_expentry = new int[jj_endpos];
3299 for (int i = 0; i < jj_endpos; i++) {
3300 jj_expentry[i] = jj_lasttokens[i];
3301 }
3302 boolean exists = false;
3303 for (java.util.Enumeration e = jj_expentries.elements(); e.hasMoreElements();) {
3304 int[] oldentry = (int[])(e.nextElement());
3305 if (oldentry.length == jj_expentry.length) {
3306 exists = true;
3307 for (int i = 0; i < jj_expentry.length; i++) {
3308 if (oldentry[i] != jj_expentry[i]) {
3309 exists = false;
3310 break;
3311 }
3312 }
3313 if (exists) break;
3314 }
3315 }
3316 if (!exists) jj_expentries.addElement(jj_expentry);
3317 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
3318 }
3319 }
3320
3321 public ParseException generateParseException() {
3322 jj_expentries.removeAllElements();
3323 boolean[] la1tokens = new boolean[68];
3324 for (int i = 0; i < 68; i++) {
3325 la1tokens[i] = false;
3326 }
3327 if (jj_kind >= 0) {
3328 la1tokens[jj_kind] = true;
3329 jj_kind = -1;
3330 }
3331 for (int i = 0; i < 61; i++) {
3332 if (jj_la1[i] == jj_gen) {
3333 for (int j = 0; j < 32; j++) {
3334 if ((jj_la1_0[i] & (1<<j)) != 0) {
3335 la1tokens[j] = true;
3336 }
3337 if ((jj_la1_1[i] & (1<<j)) != 0) {
3338 la1tokens[32+j] = true;
3339 }
3340 if ((jj_la1_2[i] & (1<<j)) != 0) {
3341 la1tokens[64+j] = true;
3342 }
3343 }
3344 }
3345 }
3346 for (int i = 0; i < 68; i++) {
3347 if (la1tokens[i]) {
3348 jj_expentry = new int[1];
3349 jj_expentry[0] = i;
3350 jj_expentries.addElement(jj_expentry);
3351 }
3352 }
3353 jj_endpos = 0;
3354 jj_rescan_token();
3355 jj_add_error_token(0, 0);
3356 int[][] exptokseq = new int[jj_expentries.size()][];
3357 for (int i = 0; i < jj_expentries.size(); i++) {
3358 exptokseq[i] = (int[])jj_expentries.elementAt(i);
3359 }
3360 return new ParseException(token, exptokseq, tokenImage);
3361 }
3362
3363 final public void enable_tracing() {
3364 }
3365
3366 final public void disable_tracing() {
3367 }
3368
3369 final private void jj_rescan_token() {
3370 jj_rescan = true;
3371 for (int i = 0; i < 12; i++) {
3372 try {
3373 JJCalls p = jj_2_rtns[i];
3374 do {
3375 if (p.gen > jj_gen) {
3376 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
3377 switch (i) {
3378 case 0: jj_3_1(); break;
3379 case 1: jj_3_2(); break;
3380 case 2: jj_3_3(); break;
3381 case 3: jj_3_4(); break;
3382 case 4: jj_3_5(); break;
3383 case 5: jj_3_6(); break;
3384 case 6: jj_3_7(); break;
3385 case 7: jj_3_8(); break;
3386 case 8: jj_3_9(); break;
3387 case 9: jj_3_10(); break;
3388 case 10: jj_3_11(); break;
3389 case 11: jj_3_12(); break;
3390 }
3391 }
3392 p = p.next;
3393 } while (p != null);
3394 } catch(LookaheadSuccess ls) { }
3395 }
3396 jj_rescan = false;
3397 }
3398
3399 final private void jj_save(int index, int xla) {
3400 JJCalls p = jj_2_rtns[index];
3401 while (p.gen > jj_gen) {
3402 if (p.next == null) { p = p.next = new JJCalls(); break; }
3403 p = p.next;
3404 }
3405 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
3406 }
3407
3408 static final class JJCalls {
3409 int gen;
3410 Token first;
3411 int arg;
3412 JJCalls next;
3413 }
3414
3415 }