improved PHP Scanner
[phpeclipse.git] / net.sourceforge.phpeclipse / src / test / PHPParser.java
1 /* Generated By:JavaCC: Do not edit this line. PHPParser.java */
2 package test;
3
4 import org.eclipse.core.resources.IFile;
5 import org.eclipse.core.resources.IMarker;
6 import org.eclipse.core.runtime.CoreException;
7 import org.eclipse.ui.texteditor.MarkerUtilities;
8 import org.eclipse.jface.preference.IPreferenceStore;
9
10 import java.util.Hashtable;
11 import java.io.StringReader;
12 import java.text.MessageFormat;
13
14 import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
15 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
16 import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
17 import net.sourceforge.phpdt.internal.compiler.parser.PHPSegmentWithChildren;
18 import net.sourceforge.phpdt.internal.compiler.parser.PHPFunctionDeclaration;
19 import net.sourceforge.phpdt.internal.compiler.parser.PHPClassDeclaration;
20
21 /**
22  * A new php parser.
23  * This php parser is inspired by the Java 1.2 grammar example 
24  * given with JavaCC. You can get JavaCC at http://www.webgain.com
25  * You can test the parser with the PHPParserTestCase2.java
26  * @author Matthieu Casanova
27  */
28 public class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
29
30   private static IFile fileToParse;
31
32   /** The current segment */
33   private static PHPSegmentWithChildren currentSegment;
34
35   private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
36   private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
37   public static final int ERROR = 2;
38   public static final int WARNING = 1;
39   public static final int INFO = 0;
40   PHPOutlineInfo outlineInfo;
41   private static int errorLevel = ERROR;
42   private static String errorMessage;
43
44   public PHPParser() {
45   }
46
47   public void setFileToParse(IFile fileToParse) {
48     this.fileToParse = fileToParse;
49   }
50
51   public PHPParser(IFile fileToParse) {
52     this(new StringReader(""));
53     this.fileToParse = fileToParse;
54   }
55
56   public void phpParserTester(String strEval) throws CoreException, ParseException {
57     PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING);
58     StringReader stream = new StringReader(strEval);
59     if (jj_input_stream == null) {
60       jj_input_stream = new SimpleCharStream(stream, 1, 1);
61     }
62     ReInit(new StringReader(strEval));
63     phpTest();
64   }
65
66   public void htmlParserTester(String strEval) throws CoreException, ParseException {
67     StringReader stream = new StringReader(strEval);
68     if (jj_input_stream == null) {
69       jj_input_stream = new SimpleCharStream(stream, 1, 1);
70     }
71     ReInit(stream);
72     phpFile();
73   }
74
75   public PHPOutlineInfo parseInfo(Object parent, String s) {
76     outlineInfo = new PHPOutlineInfo(parent);
77     currentSegment = outlineInfo.getDeclarations();
78     StringReader stream = new StringReader(s);
79     if (jj_input_stream == null) {
80       jj_input_stream = new SimpleCharStream(stream, 1, 1);
81     }
82     ReInit(stream);
83     try {
84       parse();
85     } catch (ParseException e) {
86       if (errorMessage == null) {
87         PHPeclipsePlugin.log(e);
88       } else {
89         setMarker(errorMessage, e.currentToken.beginLine, errorLevel);
90         errorMessage = null;
91       }
92     }
93     return outlineInfo;
94   }
95
96
97   /**
98    * Create marker for the parse error
99    */
100   private static void setMarker(String message, int lineNumber, int errorLevel) {
101     try {
102       setMarker(fileToParse, message, lineNumber, errorLevel);
103     } catch (CoreException e) {
104       PHPeclipsePlugin.log(e);
105     }
106   }
107
108   public static void setMarker(IFile file, String message, int lineNumber, int errorLevel) throws CoreException {
109     if (file != null) {
110       Hashtable attributes = new Hashtable();
111       MarkerUtilities.setMessage(attributes, message);
112       switch (errorLevel) {
113         case ERROR :
114           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
115           break;
116         case WARNING :
117           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
118           break;
119         case INFO :
120           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
121           break;
122       }
123       MarkerUtilities.setLineNumber(attributes, lineNumber);
124       MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
125     }
126   }
127
128   /**
129    * Create markers according to the external parser output
130    */
131   private static void createMarkers(String output, IFile file) throws CoreException {
132     // delete all markers
133     file.deleteMarkers(IMarker.PROBLEM, false, 0);
134
135     int indx = 0;
136     int brIndx = 0;
137     boolean flag = true;
138     while ((brIndx = output.indexOf("<br />", indx)) != -1) {
139       // newer php error output (tested with 4.2.3)
140       scanLine(output, file, indx, brIndx);
141       indx = brIndx + 6;
142       flag = false;
143     }
144     if (flag) {
145       while ((brIndx = output.indexOf("<br>", indx)) != -1) {
146         // older php error output (tested with 4.2.3)
147         scanLine(output, file, indx, brIndx);
148         indx = brIndx + 4;
149       }
150     }
151   }
152
153   private static void scanLine(String output, IFile file, int indx, int brIndx) throws CoreException {
154     String current;
155     StringBuffer lineNumberBuffer = new StringBuffer(10);
156     char ch;
157     current = output.substring(indx, brIndx);
158
159     if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
160       int onLine = current.indexOf("on line <b>");
161       if (onLine != -1) {
162         lineNumberBuffer.delete(0, lineNumberBuffer.length());
163         for (int i = onLine; i < current.length(); i++) {
164           ch = current.charAt(i);
165           if ('0' <= ch && '9' >= ch) {
166             lineNumberBuffer.append(ch);
167           }
168         }
169
170         int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
171
172         Hashtable attributes = new Hashtable();
173
174         current = current.replaceAll("\n", "");
175         current = current.replaceAll("<b>", "");
176         current = current.replaceAll("</b>", "");
177         MarkerUtilities.setMessage(attributes, current);
178
179         if (current.indexOf(PARSE_ERROR_STRING) != -1)
180           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
181         else if (current.indexOf(PARSE_WARNING_STRING) != -1)
182           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
183         else
184           attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
185         MarkerUtilities.setLineNumber(attributes, lineNumber);
186         MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
187       }
188     }
189   }
190
191   public void parse(String s) throws CoreException {
192     ReInit(new StringReader(s));
193     try {
194       parse();
195     } catch (ParseException e) {
196       if (errorMessage == null) {
197         PHPeclipsePlugin.log(e);
198       } else {
199         setMarker(errorMessage, e.currentToken.beginLine, errorLevel);
200         errorMessage = null;
201       }
202     }
203   }
204
205   /**
206    * Call the php parse command ( php -l -f &lt;filename&gt; )
207    * and create markers according to the external parser output
208    */
209   public static void phpExternalParse(IFile file) {
210     IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
211     String filename = file.getLocation().toString();
212
213     String[] arguments = { filename };
214     MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
215     String command = form.format(arguments);
216
217     String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
218
219     try {
220       // parse the buffer to find the errors and warnings
221       createMarkers(parserResult, file);
222     } catch (CoreException e) {
223       PHPeclipsePlugin.log(e);
224     }
225   }
226
227   public void parse() throws ParseException {
228           phpFile();
229   }
230
231 /*****************************************
232  * THE JAVA LANGUAGE GRAMMAR STARTS HERE *
233  *****************************************/
234
235 /*
236  * Program structuring syntax follows.
237  */
238   static final public void phpTest() throws ParseException {
239     Php();
240     jj_consume_token(0);
241   }
242
243   static final public void phpFile() throws ParseException {
244     label_1:
245     while (true) {
246       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
247       case PHPSTART:
248         ;
249         break;
250       default:
251         jj_la1[0] = jj_gen;
252         break label_1;
253       }
254       jj_consume_token(PHPSTART);
255       Php();
256       jj_consume_token(PHPEND);
257     }
258     jj_consume_token(0);
259   }
260
261   static final public void Php() throws ParseException {
262     label_2:
263     while (true) {
264       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
265       case CLASS:
266       case FUNCTION:
267       case IF:
268       case ARRAY:
269       case PRINT:
270       case ECHO:
271       case INCLUDE:
272       case REQUIRE:
273       case INCLUDE_ONCE:
274       case REQUIRE_ONCE:
275       case GLOBAL:
276       case STATIC:
277       case BREAK:
278       case CONTINUE:
279       case DO:
280       case FALSE:
281       case FOR:
282       case NEW:
283       case NULL:
284       case RETURN:
285       case SWITCH:
286       case TRUE:
287       case WHILE:
288       case INTEGER_LITERAL:
289       case FLOATING_POINT_LITERAL:
290       case STRING_LITERAL:
291       case IDENTIFIER:
292       case LPAREN:
293       case LBRACE:
294       case SEMICOLON:
295       case AT:
296       case DOLLAR:
297       case BANG:
298       case INCR:
299       case DECR:
300       case PLUS:
301       case MINUS:
302       case DOLLAR_ID:
303         ;
304         break;
305       default:
306         jj_la1[1] = jj_gen;
307         break label_2;
308       }
309       BlockStatement();
310     }
311   }
312
313   static final public void ClassDeclaration() throws ParseException {
314   PHPClassDeclaration classDeclaration;
315   Token className;
316   int pos = jj_input_stream.bufpos;
317     jj_consume_token(CLASS);
318     className = jj_consume_token(IDENTIFIER);
319     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
320     case EXTENDS:
321       jj_consume_token(EXTENDS);
322       jj_consume_token(IDENTIFIER);
323       break;
324     default:
325       jj_la1[2] = jj_gen;
326       ;
327     }
328     classDeclaration = new PHPClassDeclaration(currentSegment,className.image,pos);
329     currentSegment.add(classDeclaration);
330     currentSegment = classDeclaration;
331     ClassBody();
332     currentSegment = (PHPSegmentWithChildren) currentSegment.getParent();
333   }
334
335   static final public void ClassBody() throws ParseException {
336     jj_consume_token(LBRACE);
337     label_3:
338     while (true) {
339       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
340       case FUNCTION:
341       case VAR:
342         ;
343         break;
344       default:
345         jj_la1[3] = jj_gen;
346         break label_3;
347       }
348       ClassBodyDeclaration();
349     }
350     jj_consume_token(RBRACE);
351   }
352
353   static final public void ClassBodyDeclaration() throws ParseException {
354     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
355     case FUNCTION:
356       MethodDeclaration();
357       break;
358     case VAR:
359       FieldDeclaration();
360       break;
361     default:
362       jj_la1[4] = jj_gen;
363       jj_consume_token(-1);
364       throw new ParseException();
365     }
366   }
367
368   static final public void FieldDeclaration() throws ParseException {
369     jj_consume_token(VAR);
370     VariableDeclarator();
371     label_4:
372     while (true) {
373       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
374       case COMMA:
375         ;
376         break;
377       default:
378         jj_la1[5] = jj_gen;
379         break label_4;
380       }
381       jj_consume_token(COMMA);
382       VariableDeclarator();
383     }
384     jj_consume_token(SEMICOLON);
385   }
386
387   static final public void VariableDeclarator() throws ParseException {
388     VariableDeclaratorId();
389     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
390     case ASSIGN:
391       jj_consume_token(ASSIGN);
392       VariableInitializer();
393       break;
394     default:
395       jj_la1[6] = jj_gen;
396       ;
397     }
398   }
399
400   static final public void VariableDeclaratorId() throws ParseException {
401     Variable();
402     label_5:
403     while (true) {
404       if (jj_2_1(2)) {
405         ;
406       } else {
407         break label_5;
408       }
409       VariableSuffix();
410     }
411   }
412
413   static final public void Variable() throws ParseException {
414     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
415     case DOLLAR_ID:
416       jj_consume_token(DOLLAR_ID);
417       label_6:
418       while (true) {
419         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
420         case LBRACE:
421           ;
422           break;
423         default:
424           jj_la1[7] = jj_gen;
425           break label_6;
426         }
427         jj_consume_token(LBRACE);
428         Expression();
429         jj_consume_token(RBRACE);
430       }
431       break;
432     case DOLLAR:
433       jj_consume_token(DOLLAR);
434       VariableName();
435       break;
436     default:
437       jj_la1[8] = jj_gen;
438       jj_consume_token(-1);
439       throw new ParseException();
440     }
441   }
442
443   static final public void VariableName() throws ParseException {
444     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
445     case LBRACE:
446       jj_consume_token(LBRACE);
447       Expression();
448       jj_consume_token(RBRACE);
449       break;
450     case IDENTIFIER:
451       jj_consume_token(IDENTIFIER);
452       label_7:
453       while (true) {
454         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
455         case LBRACE:
456           ;
457           break;
458         default:
459           jj_la1[9] = jj_gen;
460           break label_7;
461         }
462         jj_consume_token(LBRACE);
463         Expression();
464         jj_consume_token(RBRACE);
465       }
466       break;
467     case DOLLAR:
468       jj_consume_token(DOLLAR);
469       VariableName();
470       break;
471     default:
472       jj_la1[10] = jj_gen;
473       jj_consume_token(-1);
474       throw new ParseException();
475     }
476   }
477
478   static final public void VariableInitializer() throws ParseException {
479     Expression();
480   }
481
482   static final public void ArrayVariable() throws ParseException {
483     Expression();
484     label_8:
485     while (true) {
486       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
487       case ARRAYASSIGN:
488         ;
489         break;
490       default:
491         jj_la1[11] = jj_gen;
492         break label_8;
493       }
494       jj_consume_token(ARRAYASSIGN);
495       Expression();
496     }
497   }
498
499   static final public void ArrayInitializer() throws ParseException {
500     jj_consume_token(LPAREN);
501     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
502     case ARRAY:
503     case PRINT:
504     case FALSE:
505     case NEW:
506     case NULL:
507     case TRUE:
508     case INTEGER_LITERAL:
509     case FLOATING_POINT_LITERAL:
510     case STRING_LITERAL:
511     case IDENTIFIER:
512     case LPAREN:
513     case AT:
514     case DOLLAR:
515     case BANG:
516     case INCR:
517     case DECR:
518     case PLUS:
519     case MINUS:
520     case DOLLAR_ID:
521       ArrayVariable();
522       label_9:
523       while (true) {
524         if (jj_2_2(2)) {
525           ;
526         } else {
527           break label_9;
528         }
529         jj_consume_token(COMMA);
530         ArrayVariable();
531       }
532       break;
533     default:
534       jj_la1[12] = jj_gen;
535       ;
536     }
537     jj_consume_token(RPAREN);
538   }
539
540   static final public void MethodDeclaration() throws ParseException {
541   PHPFunctionDeclaration functionDeclaration;
542     jj_consume_token(FUNCTION);
543     functionDeclaration = MethodDeclarator();
544     currentSegment.add(functionDeclaration);
545     currentSegment = functionDeclaration;
546     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
547     case LBRACE:
548       Block();
549       break;
550     case SEMICOLON:
551       jj_consume_token(SEMICOLON);
552       break;
553     default:
554       jj_la1[13] = jj_gen;
555       jj_consume_token(-1);
556       throw new ParseException();
557     }
558     currentSegment = (PHPSegmentWithChildren) currentSegment.getParent();
559   }
560
561   static final public PHPFunctionDeclaration MethodDeclarator() throws ParseException {
562   Token bit_and = null;
563   Token identifier;
564   StringBuffer methodDeclaration = new StringBuffer();
565   String formalParameters;
566   int pos = jj_input_stream.bufpos;
567     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
568     case BIT_AND:
569       bit_and = jj_consume_token(BIT_AND);
570       break;
571     default:
572       jj_la1[14] = jj_gen;
573       ;
574     }
575     identifier = jj_consume_token(IDENTIFIER);
576     FormalParameters();
577     if (bit_and != null) {
578       methodDeclaration.append("&");
579     }
580     methodDeclaration.append(identifier);
581     {if (true) return new PHPFunctionDeclaration(currentSegment,methodDeclaration.toString(),pos);}
582     throw new Error("Missing return statement in function");
583   }
584
585   static final public void FormalParameters() throws ParseException {
586     jj_consume_token(LPAREN);
587     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
588     case DOLLAR:
589     case BIT_AND:
590     case DOLLAR_ID:
591       FormalParameter();
592       label_10:
593       while (true) {
594         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
595         case COMMA:
596           ;
597           break;
598         default:
599           jj_la1[15] = jj_gen;
600           break label_10;
601         }
602         jj_consume_token(COMMA);
603         FormalParameter();
604       }
605       break;
606     default:
607       jj_la1[16] = jj_gen;
608       ;
609     }
610     jj_consume_token(RPAREN);
611   }
612
613   static final public void FormalParameter() throws ParseException {
614     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
615     case BIT_AND:
616       jj_consume_token(BIT_AND);
617       break;
618     default:
619       jj_la1[17] = jj_gen;
620       ;
621     }
622     VariableDeclarator();
623   }
624
625   static final public void Type() throws ParseException {
626     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
627     case STRING:
628       jj_consume_token(STRING);
629       break;
630     case BOOL:
631       jj_consume_token(BOOL);
632       break;
633     case BOOLEAN:
634       jj_consume_token(BOOLEAN);
635       break;
636     case REAL:
637       jj_consume_token(REAL);
638       break;
639     case DOUBLE:
640       jj_consume_token(DOUBLE);
641       break;
642     case FLOAT:
643       jj_consume_token(FLOAT);
644       break;
645     case INT:
646       jj_consume_token(INT);
647       break;
648     case INTEGER:
649       jj_consume_token(INTEGER);
650       break;
651     default:
652       jj_la1[18] = jj_gen;
653       jj_consume_token(-1);
654       throw new ParseException();
655     }
656   }
657
658 /*
659  * Expression syntax follows.
660  */
661   static final public void Expression() throws ParseException {
662     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
663     case PRINT:
664       PrintExpression();
665       break;
666     case ARRAY:
667     case FALSE:
668     case NEW:
669     case NULL:
670     case TRUE:
671     case INTEGER_LITERAL:
672     case FLOATING_POINT_LITERAL:
673     case STRING_LITERAL:
674     case IDENTIFIER:
675     case LPAREN:
676     case AT:
677     case DOLLAR:
678     case BANG:
679     case INCR:
680     case DECR:
681     case PLUS:
682     case MINUS:
683     case DOLLAR_ID:
684       ConditionalExpression();
685       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
686       case ASSIGN:
687       case PLUSASSIGN:
688       case MINUSASSIGN:
689       case STARASSIGN:
690       case SLASHASSIGN:
691       case ANDASSIGN:
692       case ORASSIGN:
693       case XORASSIGN:
694       case DOTASSIGN:
695       case REMASSIGN:
696       case LSHIFTASSIGN:
697       case RSIGNEDSHIFTASSIGN:
698       case RUNSIGNEDSHIFTASSIGN:
699         AssignmentOperator();
700         Expression();
701         break;
702       default:
703         jj_la1[19] = jj_gen;
704         ;
705       }
706       break;
707     default:
708       jj_la1[20] = jj_gen;
709       jj_consume_token(-1);
710       throw new ParseException();
711     }
712   }
713
714   static final public void AssignmentOperator() throws ParseException {
715     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
716     case ASSIGN:
717       jj_consume_token(ASSIGN);
718       break;
719     case STARASSIGN:
720       jj_consume_token(STARASSIGN);
721       break;
722     case SLASHASSIGN:
723       jj_consume_token(SLASHASSIGN);
724       break;
725     case REMASSIGN:
726       jj_consume_token(REMASSIGN);
727       break;
728     case PLUSASSIGN:
729       jj_consume_token(PLUSASSIGN);
730       break;
731     case MINUSASSIGN:
732       jj_consume_token(MINUSASSIGN);
733       break;
734     case LSHIFTASSIGN:
735       jj_consume_token(LSHIFTASSIGN);
736       break;
737     case RSIGNEDSHIFTASSIGN:
738       jj_consume_token(RSIGNEDSHIFTASSIGN);
739       break;
740     case RUNSIGNEDSHIFTASSIGN:
741       jj_consume_token(RUNSIGNEDSHIFTASSIGN);
742       break;
743     case ANDASSIGN:
744       jj_consume_token(ANDASSIGN);
745       break;
746     case XORASSIGN:
747       jj_consume_token(XORASSIGN);
748       break;
749     case ORASSIGN:
750       jj_consume_token(ORASSIGN);
751       break;
752     case DOTASSIGN:
753       jj_consume_token(DOTASSIGN);
754       break;
755     default:
756       jj_la1[21] = jj_gen;
757       jj_consume_token(-1);
758       throw new ParseException();
759     }
760   }
761
762   static final public void ConditionalExpression() throws ParseException {
763     ConditionalOrExpression();
764     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
765     case HOOK:
766       jj_consume_token(HOOK);
767       Expression();
768       jj_consume_token(COLON);
769       ConditionalExpression();
770       break;
771     default:
772       jj_la1[22] = jj_gen;
773       ;
774     }
775   }
776
777   static final public void ConditionalOrExpression() throws ParseException {
778     ConditionalAndExpression();
779     label_11:
780     while (true) {
781       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
782       case _ORL:
783       case SC_OR:
784         ;
785         break;
786       default:
787         jj_la1[23] = jj_gen;
788         break label_11;
789       }
790       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
791       case SC_OR:
792         jj_consume_token(SC_OR);
793         break;
794       case _ORL:
795         jj_consume_token(_ORL);
796         break;
797       default:
798         jj_la1[24] = jj_gen;
799         jj_consume_token(-1);
800         throw new ParseException();
801       }
802       ConditionalAndExpression();
803     }
804   }
805
806   static final public void ConditionalAndExpression() throws ParseException {
807     ConcatExpression();
808     label_12:
809     while (true) {
810       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
811       case _ANDL:
812       case SC_AND:
813         ;
814         break;
815       default:
816         jj_la1[25] = jj_gen;
817         break label_12;
818       }
819       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
820       case SC_AND:
821         jj_consume_token(SC_AND);
822         break;
823       case _ANDL:
824         jj_consume_token(_ANDL);
825         break;
826       default:
827         jj_la1[26] = jj_gen;
828         jj_consume_token(-1);
829         throw new ParseException();
830       }
831       ConcatExpression();
832     }
833   }
834
835   static final public void ConcatExpression() throws ParseException {
836     InclusiveOrExpression();
837     label_13:
838     while (true) {
839       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
840       case DOT:
841         ;
842         break;
843       default:
844         jj_la1[27] = jj_gen;
845         break label_13;
846       }
847       jj_consume_token(DOT);
848       InclusiveOrExpression();
849     }
850   }
851
852   static final public void InclusiveOrExpression() throws ParseException {
853     ExclusiveOrExpression();
854     label_14:
855     while (true) {
856       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
857       case BIT_OR:
858         ;
859         break;
860       default:
861         jj_la1[28] = jj_gen;
862         break label_14;
863       }
864       jj_consume_token(BIT_OR);
865       ExclusiveOrExpression();
866     }
867   }
868
869   static final public void ExclusiveOrExpression() throws ParseException {
870     AndExpression();
871     label_15:
872     while (true) {
873       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
874       case XOR:
875         ;
876         break;
877       default:
878         jj_la1[29] = jj_gen;
879         break label_15;
880       }
881       jj_consume_token(XOR);
882       AndExpression();
883     }
884   }
885
886   static final public void AndExpression() throws ParseException {
887     EqualityExpression();
888     label_16:
889     while (true) {
890       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
891       case BIT_AND:
892         ;
893         break;
894       default:
895         jj_la1[30] = jj_gen;
896         break label_16;
897       }
898       jj_consume_token(BIT_AND);
899       EqualityExpression();
900     }
901   }
902
903   static final public void EqualityExpression() throws ParseException {
904     RelationalExpression();
905     label_17:
906     while (true) {
907       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
908       case EQ:
909       case NE:
910         ;
911         break;
912       default:
913         jj_la1[31] = jj_gen;
914         break label_17;
915       }
916       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
917       case EQ:
918         jj_consume_token(EQ);
919         break;
920       case NE:
921         jj_consume_token(NE);
922         break;
923       default:
924         jj_la1[32] = jj_gen;
925         jj_consume_token(-1);
926         throw new ParseException();
927       }
928       RelationalExpression();
929     }
930   }
931
932   static final public void RelationalExpression() throws ParseException {
933     ShiftExpression();
934     label_18:
935     while (true) {
936       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
937       case GT:
938       case LT:
939       case LE:
940       case GE:
941         ;
942         break;
943       default:
944         jj_la1[33] = jj_gen;
945         break label_18;
946       }
947       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
948       case LT:
949         jj_consume_token(LT);
950         break;
951       case GT:
952         jj_consume_token(GT);
953         break;
954       case LE:
955         jj_consume_token(LE);
956         break;
957       case GE:
958         jj_consume_token(GE);
959         break;
960       default:
961         jj_la1[34] = jj_gen;
962         jj_consume_token(-1);
963         throw new ParseException();
964       }
965       ShiftExpression();
966     }
967   }
968
969   static final public void ShiftExpression() throws ParseException {
970     AdditiveExpression();
971     label_19:
972     while (true) {
973       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
974       case LSHIFT:
975       case RSIGNEDSHIFT:
976       case RUNSIGNEDSHIFT:
977         ;
978         break;
979       default:
980         jj_la1[35] = jj_gen;
981         break label_19;
982       }
983       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
984       case LSHIFT:
985         jj_consume_token(LSHIFT);
986         break;
987       case RSIGNEDSHIFT:
988         jj_consume_token(RSIGNEDSHIFT);
989         break;
990       case RUNSIGNEDSHIFT:
991         jj_consume_token(RUNSIGNEDSHIFT);
992         break;
993       default:
994         jj_la1[36] = jj_gen;
995         jj_consume_token(-1);
996         throw new ParseException();
997       }
998       AdditiveExpression();
999     }
1000   }
1001
1002   static final public void AdditiveExpression() throws ParseException {
1003     MultiplicativeExpression();
1004     label_20:
1005     while (true) {
1006       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1007       case PLUS:
1008       case MINUS:
1009         ;
1010         break;
1011       default:
1012         jj_la1[37] = jj_gen;
1013         break label_20;
1014       }
1015       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1016       case PLUS:
1017         jj_consume_token(PLUS);
1018         break;
1019       case MINUS:
1020         jj_consume_token(MINUS);
1021         break;
1022       default:
1023         jj_la1[38] = jj_gen;
1024         jj_consume_token(-1);
1025         throw new ParseException();
1026       }
1027       MultiplicativeExpression();
1028     }
1029   }
1030
1031   static final public void MultiplicativeExpression() throws ParseException {
1032     UnaryExpression();
1033     label_21:
1034     while (true) {
1035       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1036       case STAR:
1037       case SLASH:
1038       case REM:
1039         ;
1040         break;
1041       default:
1042         jj_la1[39] = jj_gen;
1043         break label_21;
1044       }
1045       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1046       case STAR:
1047         jj_consume_token(STAR);
1048         break;
1049       case SLASH:
1050         jj_consume_token(SLASH);
1051         break;
1052       case REM:
1053         jj_consume_token(REM);
1054         break;
1055       default:
1056         jj_la1[40] = jj_gen;
1057         jj_consume_token(-1);
1058         throw new ParseException();
1059       }
1060       UnaryExpression();
1061     }
1062   }
1063
1064   static final public void UnaryExpression() throws ParseException {
1065     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1066     case AT:
1067       jj_consume_token(AT);
1068       UnaryExpression();
1069       break;
1070     case PLUS:
1071     case MINUS:
1072       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1073       case PLUS:
1074         jj_consume_token(PLUS);
1075         break;
1076       case MINUS:
1077         jj_consume_token(MINUS);
1078         break;
1079       default:
1080         jj_la1[41] = jj_gen;
1081         jj_consume_token(-1);
1082         throw new ParseException();
1083       }
1084       UnaryExpression();
1085       break;
1086     case INCR:
1087       PreIncrementExpression();
1088       break;
1089     case DECR:
1090       PreDecrementExpression();
1091       break;
1092     case ARRAY:
1093     case FALSE:
1094     case NEW:
1095     case NULL:
1096     case TRUE:
1097     case INTEGER_LITERAL:
1098     case FLOATING_POINT_LITERAL:
1099     case STRING_LITERAL:
1100     case IDENTIFIER:
1101     case LPAREN:
1102     case DOLLAR:
1103     case BANG:
1104     case DOLLAR_ID:
1105       UnaryExpressionNotPlusMinus();
1106       break;
1107     default:
1108       jj_la1[42] = jj_gen;
1109       jj_consume_token(-1);
1110       throw new ParseException();
1111     }
1112   }
1113
1114   static final public void PreIncrementExpression() throws ParseException {
1115     jj_consume_token(INCR);
1116     PrimaryExpression();
1117   }
1118
1119   static final public void PreDecrementExpression() throws ParseException {
1120     jj_consume_token(DECR);
1121     PrimaryExpression();
1122   }
1123
1124   static final public void UnaryExpressionNotPlusMinus() throws ParseException {
1125     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1126     case BANG:
1127       jj_consume_token(BANG);
1128       UnaryExpression();
1129       break;
1130     default:
1131       jj_la1[43] = jj_gen;
1132       if (jj_2_3(2147483647)) {
1133         CastExpression();
1134       } else {
1135         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1136         case ARRAY:
1137         case NEW:
1138         case IDENTIFIER:
1139         case DOLLAR:
1140         case DOLLAR_ID:
1141           PostfixExpression();
1142           break;
1143         case FALSE:
1144         case NULL:
1145         case TRUE:
1146         case INTEGER_LITERAL:
1147         case FLOATING_POINT_LITERAL:
1148         case STRING_LITERAL:
1149           Literal();
1150           break;
1151         case LPAREN:
1152           jj_consume_token(LPAREN);
1153           Expression();
1154           jj_consume_token(RPAREN);
1155           break;
1156         default:
1157           jj_la1[44] = jj_gen;
1158           jj_consume_token(-1);
1159           throw new ParseException();
1160         }
1161       }
1162     }
1163   }
1164
1165   static final public void CastExpression() throws ParseException {
1166     jj_consume_token(LPAREN);
1167     Type();
1168     jj_consume_token(RPAREN);
1169     UnaryExpression();
1170   }
1171
1172   static final public void PostfixExpression() throws ParseException {
1173     PrimaryExpression();
1174     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1175     case INCR:
1176     case DECR:
1177       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1178       case INCR:
1179         jj_consume_token(INCR);
1180         break;
1181       case DECR:
1182         jj_consume_token(DECR);
1183         break;
1184       default:
1185         jj_la1[45] = jj_gen;
1186         jj_consume_token(-1);
1187         throw new ParseException();
1188       }
1189       break;
1190     default:
1191       jj_la1[46] = jj_gen;
1192       ;
1193     }
1194   }
1195
1196   static final public void PrimaryExpression() throws ParseException {
1197     if (jj_2_4(2)) {
1198       jj_consume_token(IDENTIFIER);
1199       jj_consume_token(STATICCLASSACCESS);
1200       ClassIdentifier();
1201       label_22:
1202       while (true) {
1203         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1204         case CLASSACCESS:
1205         case LPAREN:
1206         case LBRACKET:
1207           ;
1208           break;
1209         default:
1210           jj_la1[47] = jj_gen;
1211           break label_22;
1212         }
1213         PrimarySuffix();
1214       }
1215     } else {
1216       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1217       case NEW:
1218       case IDENTIFIER:
1219       case DOLLAR:
1220       case DOLLAR_ID:
1221         PrimaryPrefix();
1222         label_23:
1223         while (true) {
1224           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1225           case CLASSACCESS:
1226           case LPAREN:
1227           case LBRACKET:
1228             ;
1229             break;
1230           default:
1231             jj_la1[48] = jj_gen;
1232             break label_23;
1233           }
1234           PrimarySuffix();
1235         }
1236         break;
1237       case ARRAY:
1238         jj_consume_token(ARRAY);
1239         ArrayInitializer();
1240         break;
1241       default:
1242         jj_la1[49] = jj_gen;
1243         jj_consume_token(-1);
1244         throw new ParseException();
1245       }
1246     }
1247   }
1248
1249   static final public void PrimaryPrefix() throws ParseException {
1250     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1251     case IDENTIFIER:
1252       jj_consume_token(IDENTIFIER);
1253       break;
1254     case NEW:
1255       jj_consume_token(NEW);
1256       ClassIdentifier();
1257       break;
1258     case DOLLAR:
1259     case DOLLAR_ID:
1260       VariableDeclaratorId();
1261       break;
1262     default:
1263       jj_la1[50] = jj_gen;
1264       jj_consume_token(-1);
1265       throw new ParseException();
1266     }
1267   }
1268
1269   static final public void ClassIdentifier() throws ParseException {
1270     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1271     case IDENTIFIER:
1272       jj_consume_token(IDENTIFIER);
1273       break;
1274     case DOLLAR:
1275     case DOLLAR_ID:
1276       VariableDeclaratorId();
1277       break;
1278     default:
1279       jj_la1[51] = jj_gen;
1280       jj_consume_token(-1);
1281       throw new ParseException();
1282     }
1283   }
1284
1285   static final public void PrimarySuffix() throws ParseException {
1286     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1287     case LPAREN:
1288       Arguments();
1289       break;
1290     case CLASSACCESS:
1291     case LBRACKET:
1292       VariableSuffix();
1293       break;
1294     default:
1295       jj_la1[52] = jj_gen;
1296       jj_consume_token(-1);
1297       throw new ParseException();
1298     }
1299   }
1300
1301   static final public void VariableSuffix() throws ParseException {
1302     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1303     case CLASSACCESS:
1304       jj_consume_token(CLASSACCESS);
1305       VariableName();
1306       break;
1307     case LBRACKET:
1308       jj_consume_token(LBRACKET);
1309       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1310       case ARRAY:
1311       case PRINT:
1312       case FALSE:
1313       case NEW:
1314       case NULL:
1315       case TRUE:
1316       case INTEGER_LITERAL:
1317       case FLOATING_POINT_LITERAL:
1318       case STRING_LITERAL:
1319       case IDENTIFIER:
1320       case LPAREN:
1321       case AT:
1322       case DOLLAR:
1323       case BANG:
1324       case INCR:
1325       case DECR:
1326       case PLUS:
1327       case MINUS:
1328       case DOLLAR_ID:
1329         Expression();
1330         break;
1331       default:
1332         jj_la1[53] = jj_gen;
1333         ;
1334       }
1335       jj_consume_token(RBRACKET);
1336       break;
1337     default:
1338       jj_la1[54] = jj_gen;
1339       jj_consume_token(-1);
1340       throw new ParseException();
1341     }
1342   }
1343
1344   static final public void Literal() throws ParseException {
1345     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1346     case INTEGER_LITERAL:
1347       jj_consume_token(INTEGER_LITERAL);
1348       break;
1349     case FLOATING_POINT_LITERAL:
1350       jj_consume_token(FLOATING_POINT_LITERAL);
1351       break;
1352     case STRING_LITERAL:
1353       jj_consume_token(STRING_LITERAL);
1354       break;
1355     case FALSE:
1356     case TRUE:
1357       BooleanLiteral();
1358       break;
1359     case NULL:
1360       NullLiteral();
1361       break;
1362     default:
1363       jj_la1[55] = jj_gen;
1364       jj_consume_token(-1);
1365       throw new ParseException();
1366     }
1367   }
1368
1369   static final public void BooleanLiteral() throws ParseException {
1370     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1371     case TRUE:
1372       jj_consume_token(TRUE);
1373       break;
1374     case FALSE:
1375       jj_consume_token(FALSE);
1376       break;
1377     default:
1378       jj_la1[56] = jj_gen;
1379       jj_consume_token(-1);
1380       throw new ParseException();
1381     }
1382   }
1383
1384   static final public void NullLiteral() throws ParseException {
1385     jj_consume_token(NULL);
1386   }
1387
1388   static final public void Arguments() throws ParseException {
1389     jj_consume_token(LPAREN);
1390     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1391     case ARRAY:
1392     case PRINT:
1393     case FALSE:
1394     case NEW:
1395     case NULL:
1396     case TRUE:
1397     case INTEGER_LITERAL:
1398     case FLOATING_POINT_LITERAL:
1399     case STRING_LITERAL:
1400     case IDENTIFIER:
1401     case LPAREN:
1402     case AT:
1403     case DOLLAR:
1404     case BANG:
1405     case INCR:
1406     case DECR:
1407     case PLUS:
1408     case MINUS:
1409     case DOLLAR_ID:
1410       ArgumentList();
1411       break;
1412     default:
1413       jj_la1[57] = jj_gen;
1414       ;
1415     }
1416     try {
1417       jj_consume_token(RPAREN);
1418     } catch (ParseException e) {
1419     errorMessage = "')' expected to close the argument list";
1420     errorLevel   = ERROR;
1421     {if (true) throw e;}
1422     }
1423   }
1424
1425   static final public void ArgumentList() throws ParseException {
1426     Expression();
1427     label_24:
1428     while (true) {
1429       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1430       case COMMA:
1431         ;
1432         break;
1433       default:
1434         jj_la1[58] = jj_gen;
1435         break label_24;
1436       }
1437       jj_consume_token(COMMA);
1438       try {
1439         Expression();
1440       } catch (ParseException e) {
1441         errorMessage = "expression expected after a comma in argument list";
1442         errorLevel   = ERROR;
1443         {if (true) throw e;}
1444       }
1445     }
1446   }
1447
1448 /*
1449  * Statement syntax follows.
1450  */
1451   static final public void Statement() throws ParseException {
1452     if (jj_2_5(2)) {
1453       Expression();
1454       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1455       case SEMICOLON:
1456         jj_consume_token(SEMICOLON);
1457         break;
1458       case 127:
1459         jj_consume_token(127);
1460         break;
1461       default:
1462         jj_la1[59] = jj_gen;
1463         jj_consume_token(-1);
1464         throw new ParseException();
1465       }
1466     } else if (jj_2_6(2)) {
1467       LabeledStatement();
1468     } else {
1469       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1470       case LBRACE:
1471         Block();
1472         break;
1473       case SEMICOLON:
1474         EmptyStatement();
1475         break;
1476       case ARRAY:
1477       case NEW:
1478       case IDENTIFIER:
1479       case DOLLAR:
1480       case INCR:
1481       case DECR:
1482       case DOLLAR_ID:
1483         StatementExpression();
1484         try {
1485           jj_consume_token(SEMICOLON);
1486         } catch (ParseException e) {
1487     errorMessage = "';' expected after expression";
1488     errorLevel   = ERROR;
1489     {if (true) throw e;}
1490         }
1491         break;
1492       case SWITCH:
1493         SwitchStatement();
1494         break;
1495       case IF:
1496         IfStatement();
1497         break;
1498       case WHILE:
1499         WhileStatement();
1500         break;
1501       case DO:
1502         DoStatement();
1503         break;
1504       case FOR:
1505         ForStatement();
1506         break;
1507       case BREAK:
1508         BreakStatement();
1509         break;
1510       case CONTINUE:
1511         ContinueStatement();
1512         break;
1513       case RETURN:
1514         ReturnStatement();
1515         break;
1516       case ECHO:
1517         EchoStatement();
1518         break;
1519       case INCLUDE:
1520       case REQUIRE:
1521       case INCLUDE_ONCE:
1522       case REQUIRE_ONCE:
1523         IncludeStatement();
1524         break;
1525       case STATIC:
1526         StaticStatement();
1527         break;
1528       case GLOBAL:
1529         GlobalStatement();
1530         break;
1531       default:
1532         jj_la1[60] = jj_gen;
1533         jj_consume_token(-1);
1534         throw new ParseException();
1535       }
1536     }
1537   }
1538
1539   static final public void IncludeStatement() throws ParseException {
1540     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1541     case REQUIRE:
1542       jj_consume_token(REQUIRE);
1543       Expression();
1544       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1545       case SEMICOLON:
1546         jj_consume_token(SEMICOLON);
1547         break;
1548       case 127:
1549         jj_consume_token(127);
1550         break;
1551       default:
1552         jj_la1[61] = jj_gen;
1553         jj_consume_token(-1);
1554         throw new ParseException();
1555       }
1556       break;
1557     case REQUIRE_ONCE:
1558       jj_consume_token(REQUIRE_ONCE);
1559       Expression();
1560       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1561       case SEMICOLON:
1562         jj_consume_token(SEMICOLON);
1563         break;
1564       case 127:
1565         jj_consume_token(127);
1566         break;
1567       default:
1568         jj_la1[62] = jj_gen;
1569         jj_consume_token(-1);
1570         throw new ParseException();
1571       }
1572       break;
1573     case INCLUDE:
1574       jj_consume_token(INCLUDE);
1575       Expression();
1576       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1577       case SEMICOLON:
1578         jj_consume_token(SEMICOLON);
1579         break;
1580       case 127:
1581         jj_consume_token(127);
1582         break;
1583       default:
1584         jj_la1[63] = jj_gen;
1585         jj_consume_token(-1);
1586         throw new ParseException();
1587       }
1588       break;
1589     case INCLUDE_ONCE:
1590       jj_consume_token(INCLUDE_ONCE);
1591       Expression();
1592       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1593       case SEMICOLON:
1594         jj_consume_token(SEMICOLON);
1595         break;
1596       case 127:
1597         jj_consume_token(127);
1598         break;
1599       default:
1600         jj_la1[64] = jj_gen;
1601         jj_consume_token(-1);
1602         throw new ParseException();
1603       }
1604       break;
1605     default:
1606       jj_la1[65] = jj_gen;
1607       jj_consume_token(-1);
1608       throw new ParseException();
1609     }
1610   }
1611
1612   static final public void PrintExpression() throws ParseException {
1613     jj_consume_token(PRINT);
1614     Expression();
1615   }
1616
1617   static final public void EchoStatement() throws ParseException {
1618     jj_consume_token(ECHO);
1619     Expression();
1620     label_25:
1621     while (true) {
1622       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1623       case COMMA:
1624         ;
1625         break;
1626       default:
1627         jj_la1[66] = jj_gen;
1628         break label_25;
1629       }
1630       jj_consume_token(COMMA);
1631       Expression();
1632     }
1633     try {
1634       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1635       case SEMICOLON:
1636         jj_consume_token(SEMICOLON);
1637         break;
1638       case 127:
1639         jj_consume_token(127);
1640         break;
1641       default:
1642         jj_la1[67] = jj_gen;
1643         jj_consume_token(-1);
1644         throw new ParseException();
1645       }
1646     } catch (ParseException e) {
1647     errorMessage = "';' expected after 'echo' statement";
1648     errorLevel   = ERROR;
1649     {if (true) throw e;}
1650     }
1651   }
1652
1653   static final public void GlobalStatement() throws ParseException {
1654     jj_consume_token(GLOBAL);
1655     VariableDeclaratorId();
1656     label_26:
1657     while (true) {
1658       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1659       case COMMA:
1660         ;
1661         break;
1662       default:
1663         jj_la1[68] = jj_gen;
1664         break label_26;
1665       }
1666       jj_consume_token(COMMA);
1667       VariableDeclaratorId();
1668     }
1669     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1670     case SEMICOLON:
1671       jj_consume_token(SEMICOLON);
1672       break;
1673     case 127:
1674       jj_consume_token(127);
1675       break;
1676     default:
1677       jj_la1[69] = jj_gen;
1678       jj_consume_token(-1);
1679       throw new ParseException();
1680     }
1681   }
1682
1683   static final public void StaticStatement() throws ParseException {
1684     jj_consume_token(STATIC);
1685     VariableDeclarator();
1686     label_27:
1687     while (true) {
1688       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1689       case COMMA:
1690         ;
1691         break;
1692       default:
1693         jj_la1[70] = jj_gen;
1694         break label_27;
1695       }
1696       jj_consume_token(COMMA);
1697       VariableDeclarator();
1698     }
1699     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1700     case SEMICOLON:
1701       jj_consume_token(SEMICOLON);
1702       break;
1703     case 127:
1704       jj_consume_token(127);
1705       break;
1706     default:
1707       jj_la1[71] = jj_gen;
1708       jj_consume_token(-1);
1709       throw new ParseException();
1710     }
1711   }
1712
1713   static final public void LabeledStatement() throws ParseException {
1714     jj_consume_token(IDENTIFIER);
1715     jj_consume_token(COLON);
1716     Statement();
1717   }
1718
1719   static final public void Block() throws ParseException {
1720     jj_consume_token(LBRACE);
1721     label_28:
1722     while (true) {
1723       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1724       case CLASS:
1725       case FUNCTION:
1726       case IF:
1727       case ARRAY:
1728       case PRINT:
1729       case ECHO:
1730       case INCLUDE:
1731       case REQUIRE:
1732       case INCLUDE_ONCE:
1733       case REQUIRE_ONCE:
1734       case GLOBAL:
1735       case STATIC:
1736       case BREAK:
1737       case CONTINUE:
1738       case DO:
1739       case FALSE:
1740       case FOR:
1741       case NEW:
1742       case NULL:
1743       case RETURN:
1744       case SWITCH:
1745       case TRUE:
1746       case WHILE:
1747       case INTEGER_LITERAL:
1748       case FLOATING_POINT_LITERAL:
1749       case STRING_LITERAL:
1750       case IDENTIFIER:
1751       case LPAREN:
1752       case LBRACE:
1753       case SEMICOLON:
1754       case AT:
1755       case DOLLAR:
1756       case BANG:
1757       case INCR:
1758       case DECR:
1759       case PLUS:
1760       case MINUS:
1761       case DOLLAR_ID:
1762         ;
1763         break;
1764       default:
1765         jj_la1[72] = jj_gen;
1766         break label_28;
1767       }
1768       BlockStatement();
1769     }
1770     jj_consume_token(RBRACE);
1771   }
1772
1773   static final public void BlockStatement() throws ParseException {
1774     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1775     case IF:
1776     case ARRAY:
1777     case PRINT:
1778     case ECHO:
1779     case INCLUDE:
1780     case REQUIRE:
1781     case INCLUDE_ONCE:
1782     case REQUIRE_ONCE:
1783     case GLOBAL:
1784     case STATIC:
1785     case BREAK:
1786     case CONTINUE:
1787     case DO:
1788     case FALSE:
1789     case FOR:
1790     case NEW:
1791     case NULL:
1792     case RETURN:
1793     case SWITCH:
1794     case TRUE:
1795     case WHILE:
1796     case INTEGER_LITERAL:
1797     case FLOATING_POINT_LITERAL:
1798     case STRING_LITERAL:
1799     case IDENTIFIER:
1800     case LPAREN:
1801     case LBRACE:
1802     case SEMICOLON:
1803     case AT:
1804     case DOLLAR:
1805     case BANG:
1806     case INCR:
1807     case DECR:
1808     case PLUS:
1809     case MINUS:
1810     case DOLLAR_ID:
1811       Statement();
1812       break;
1813     case CLASS:
1814       ClassDeclaration();
1815       break;
1816     case FUNCTION:
1817       MethodDeclaration();
1818       break;
1819     default:
1820       jj_la1[73] = jj_gen;
1821       jj_consume_token(-1);
1822       throw new ParseException();
1823     }
1824   }
1825
1826   static final public void LocalVariableDeclaration() throws ParseException {
1827     VariableDeclarator();
1828     label_29:
1829     while (true) {
1830       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1831       case COMMA:
1832         ;
1833         break;
1834       default:
1835         jj_la1[74] = jj_gen;
1836         break label_29;
1837       }
1838       jj_consume_token(COMMA);
1839       VariableDeclarator();
1840     }
1841   }
1842
1843   static final public void EmptyStatement() throws ParseException {
1844     jj_consume_token(SEMICOLON);
1845   }
1846
1847   static final public void StatementExpression() throws ParseException {
1848     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1849     case INCR:
1850       PreIncrementExpression();
1851       break;
1852     case DECR:
1853       PreDecrementExpression();
1854       break;
1855     case ARRAY:
1856     case NEW:
1857     case IDENTIFIER:
1858     case DOLLAR:
1859     case DOLLAR_ID:
1860       PrimaryExpression();
1861       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1862       case ASSIGN:
1863       case INCR:
1864       case DECR:
1865       case PLUSASSIGN:
1866       case MINUSASSIGN:
1867       case STARASSIGN:
1868       case SLASHASSIGN:
1869       case ANDASSIGN:
1870       case ORASSIGN:
1871       case XORASSIGN:
1872       case DOTASSIGN:
1873       case REMASSIGN:
1874       case LSHIFTASSIGN:
1875       case RSIGNEDSHIFTASSIGN:
1876       case RUNSIGNEDSHIFTASSIGN:
1877         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1878         case INCR:
1879           jj_consume_token(INCR);
1880           break;
1881         case DECR:
1882           jj_consume_token(DECR);
1883           break;
1884         case ASSIGN:
1885         case PLUSASSIGN:
1886         case MINUSASSIGN:
1887         case STARASSIGN:
1888         case SLASHASSIGN:
1889         case ANDASSIGN:
1890         case ORASSIGN:
1891         case XORASSIGN:
1892         case DOTASSIGN:
1893         case REMASSIGN:
1894         case LSHIFTASSIGN:
1895         case RSIGNEDSHIFTASSIGN:
1896         case RUNSIGNEDSHIFTASSIGN:
1897           AssignmentOperator();
1898           Expression();
1899           break;
1900         default:
1901           jj_la1[75] = jj_gen;
1902           jj_consume_token(-1);
1903           throw new ParseException();
1904         }
1905         break;
1906       default:
1907         jj_la1[76] = jj_gen;
1908         ;
1909       }
1910       break;
1911     default:
1912       jj_la1[77] = jj_gen;
1913       jj_consume_token(-1);
1914       throw new ParseException();
1915     }
1916   }
1917
1918   static final public void SwitchStatement() throws ParseException {
1919     jj_consume_token(SWITCH);
1920     jj_consume_token(LPAREN);
1921     Expression();
1922     jj_consume_token(RPAREN);
1923     jj_consume_token(LBRACE);
1924     label_30:
1925     while (true) {
1926       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1927       case CASE:
1928       case _DEFAULT:
1929         ;
1930         break;
1931       default:
1932         jj_la1[78] = jj_gen;
1933         break label_30;
1934       }
1935       SwitchLabel();
1936       label_31:
1937       while (true) {
1938         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1939         case CLASS:
1940         case FUNCTION:
1941         case IF:
1942         case ARRAY:
1943         case PRINT:
1944         case ECHO:
1945         case INCLUDE:
1946         case REQUIRE:
1947         case INCLUDE_ONCE:
1948         case REQUIRE_ONCE:
1949         case GLOBAL:
1950         case STATIC:
1951         case BREAK:
1952         case CONTINUE:
1953         case DO:
1954         case FALSE:
1955         case FOR:
1956         case NEW:
1957         case NULL:
1958         case RETURN:
1959         case SWITCH:
1960         case TRUE:
1961         case WHILE:
1962         case INTEGER_LITERAL:
1963         case FLOATING_POINT_LITERAL:
1964         case STRING_LITERAL:
1965         case IDENTIFIER:
1966         case LPAREN:
1967         case LBRACE:
1968         case SEMICOLON:
1969         case AT:
1970         case DOLLAR:
1971         case BANG:
1972         case INCR:
1973         case DECR:
1974         case PLUS:
1975         case MINUS:
1976         case DOLLAR_ID:
1977           ;
1978           break;
1979         default:
1980           jj_la1[79] = jj_gen;
1981           break label_31;
1982         }
1983         BlockStatement();
1984       }
1985     }
1986     jj_consume_token(RBRACE);
1987   }
1988
1989   static final public void SwitchLabel() throws ParseException {
1990     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1991     case CASE:
1992       jj_consume_token(CASE);
1993       Expression();
1994       jj_consume_token(COLON);
1995       break;
1996     case _DEFAULT:
1997       jj_consume_token(_DEFAULT);
1998       jj_consume_token(COLON);
1999       break;
2000     default:
2001       jj_la1[80] = jj_gen;
2002       jj_consume_token(-1);
2003       throw new ParseException();
2004     }
2005   }
2006
2007   static final public void IfStatement() throws ParseException {
2008     jj_consume_token(IF);
2009     Condition("if");
2010     Statement();
2011     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2012     case ELSEIF:
2013       ElseIfStatement();
2014       break;
2015     default:
2016       jj_la1[81] = jj_gen;
2017       ;
2018     }
2019     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2020     case ELSE:
2021       jj_consume_token(ELSE);
2022       Statement();
2023       break;
2024     default:
2025       jj_la1[82] = jj_gen;
2026       ;
2027     }
2028   }
2029
2030   static final public void Condition(String keyword) throws ParseException {
2031     try {
2032       jj_consume_token(LPAREN);
2033     } catch (ParseException e) {
2034     errorMessage = "'(' expected after " + keyword + " keyword";
2035     errorLevel   = ERROR;
2036     {if (true) throw e;}
2037     }
2038     Expression();
2039     try {
2040       jj_consume_token(RPAREN);
2041     } catch (ParseException e) {
2042     errorMessage = "')' expected after " + keyword + " keyword";
2043     errorLevel   = ERROR;
2044     {if (true) throw e;}
2045     }
2046   }
2047
2048   static final public void ElseIfStatement() throws ParseException {
2049     jj_consume_token(ELSEIF);
2050     Condition("elseif");
2051     Statement();
2052   }
2053
2054   static final public void WhileStatement() throws ParseException {
2055     jj_consume_token(WHILE);
2056     Condition("while");
2057     WhileStatement0();
2058   }
2059
2060   static final public void WhileStatement0() throws ParseException {
2061     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2062     case COLON:
2063       jj_consume_token(COLON);
2064       label_32:
2065       while (true) {
2066         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2067         case IF:
2068         case ARRAY:
2069         case PRINT:
2070         case ECHO:
2071         case INCLUDE:
2072         case REQUIRE:
2073         case INCLUDE_ONCE:
2074         case REQUIRE_ONCE:
2075         case GLOBAL:
2076         case STATIC:
2077         case BREAK:
2078         case CONTINUE:
2079         case DO:
2080         case FALSE:
2081         case FOR:
2082         case NEW:
2083         case NULL:
2084         case RETURN:
2085         case SWITCH:
2086         case TRUE:
2087         case WHILE:
2088         case INTEGER_LITERAL:
2089         case FLOATING_POINT_LITERAL:
2090         case STRING_LITERAL:
2091         case IDENTIFIER:
2092         case LPAREN:
2093         case LBRACE:
2094         case SEMICOLON:
2095         case AT:
2096         case DOLLAR:
2097         case BANG:
2098         case INCR:
2099         case DECR:
2100         case PLUS:
2101         case MINUS:
2102         case DOLLAR_ID:
2103           ;
2104           break;
2105         default:
2106           jj_la1[83] = jj_gen;
2107           break label_32;
2108         }
2109         Statement();
2110       }
2111       jj_consume_token(ENDWHILE);
2112       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2113       case SEMICOLON:
2114         jj_consume_token(SEMICOLON);
2115         break;
2116       case 127:
2117         jj_consume_token(127);
2118         break;
2119       default:
2120         jj_la1[84] = jj_gen;
2121         jj_consume_token(-1);
2122         throw new ParseException();
2123       }
2124       break;
2125     case IF:
2126     case ARRAY:
2127     case PRINT:
2128     case ECHO:
2129     case INCLUDE:
2130     case REQUIRE:
2131     case INCLUDE_ONCE:
2132     case REQUIRE_ONCE:
2133     case GLOBAL:
2134     case STATIC:
2135     case BREAK:
2136     case CONTINUE:
2137     case DO:
2138     case FALSE:
2139     case FOR:
2140     case NEW:
2141     case NULL:
2142     case RETURN:
2143     case SWITCH:
2144     case TRUE:
2145     case WHILE:
2146     case INTEGER_LITERAL:
2147     case FLOATING_POINT_LITERAL:
2148     case STRING_LITERAL:
2149     case IDENTIFIER:
2150     case LPAREN:
2151     case LBRACE:
2152     case SEMICOLON:
2153     case AT:
2154     case DOLLAR:
2155     case BANG:
2156     case INCR:
2157     case DECR:
2158     case PLUS:
2159     case MINUS:
2160     case DOLLAR_ID:
2161       Statement();
2162       break;
2163     default:
2164       jj_la1[85] = jj_gen;
2165       jj_consume_token(-1);
2166       throw new ParseException();
2167     }
2168   }
2169
2170   static final public void DoStatement() throws ParseException {
2171     jj_consume_token(DO);
2172     Statement();
2173     jj_consume_token(WHILE);
2174     Condition("while");
2175     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2176     case SEMICOLON:
2177       jj_consume_token(SEMICOLON);
2178       break;
2179     case 127:
2180       jj_consume_token(127);
2181       break;
2182     default:
2183       jj_la1[86] = jj_gen;
2184       jj_consume_token(-1);
2185       throw new ParseException();
2186     }
2187   }
2188
2189   static final public void ForStatement() throws ParseException {
2190     jj_consume_token(FOR);
2191     jj_consume_token(LPAREN);
2192     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2193     case ARRAY:
2194     case NEW:
2195     case IDENTIFIER:
2196     case DOLLAR:
2197     case INCR:
2198     case DECR:
2199     case DOLLAR_ID:
2200       ForInit();
2201       break;
2202     default:
2203       jj_la1[87] = jj_gen;
2204       ;
2205     }
2206     jj_consume_token(SEMICOLON);
2207     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2208     case ARRAY:
2209     case PRINT:
2210     case FALSE:
2211     case NEW:
2212     case NULL:
2213     case TRUE:
2214     case INTEGER_LITERAL:
2215     case FLOATING_POINT_LITERAL:
2216     case STRING_LITERAL:
2217     case IDENTIFIER:
2218     case LPAREN:
2219     case AT:
2220     case DOLLAR:
2221     case BANG:
2222     case INCR:
2223     case DECR:
2224     case PLUS:
2225     case MINUS:
2226     case DOLLAR_ID:
2227       Expression();
2228       break;
2229     default:
2230       jj_la1[88] = jj_gen;
2231       ;
2232     }
2233     jj_consume_token(SEMICOLON);
2234     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2235     case ARRAY:
2236     case NEW:
2237     case IDENTIFIER:
2238     case DOLLAR:
2239     case INCR:
2240     case DECR:
2241     case DOLLAR_ID:
2242       ForUpdate();
2243       break;
2244     default:
2245       jj_la1[89] = jj_gen;
2246       ;
2247     }
2248     jj_consume_token(RPAREN);
2249     Statement();
2250   }
2251
2252   static final public void ForInit() throws ParseException {
2253     if (jj_2_7(2147483647)) {
2254       LocalVariableDeclaration();
2255     } else {
2256       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2257       case ARRAY:
2258       case NEW:
2259       case IDENTIFIER:
2260       case DOLLAR:
2261       case INCR:
2262       case DECR:
2263       case DOLLAR_ID:
2264         StatementExpressionList();
2265         break;
2266       default:
2267         jj_la1[90] = jj_gen;
2268         jj_consume_token(-1);
2269         throw new ParseException();
2270       }
2271     }
2272   }
2273
2274   static final public void StatementExpressionList() throws ParseException {
2275     StatementExpression();
2276     label_33:
2277     while (true) {
2278       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2279       case COMMA:
2280         ;
2281         break;
2282       default:
2283         jj_la1[91] = jj_gen;
2284         break label_33;
2285       }
2286       jj_consume_token(COMMA);
2287       StatementExpression();
2288     }
2289   }
2290
2291   static final public void ForUpdate() throws ParseException {
2292     StatementExpressionList();
2293   }
2294
2295   static final public void BreakStatement() throws ParseException {
2296     jj_consume_token(BREAK);
2297     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2298     case IDENTIFIER:
2299       jj_consume_token(IDENTIFIER);
2300       break;
2301     default:
2302       jj_la1[92] = jj_gen;
2303       ;
2304     }
2305     jj_consume_token(SEMICOLON);
2306   }
2307
2308   static final public void ContinueStatement() throws ParseException {
2309     jj_consume_token(CONTINUE);
2310     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2311     case IDENTIFIER:
2312       jj_consume_token(IDENTIFIER);
2313       break;
2314     default:
2315       jj_la1[93] = jj_gen;
2316       ;
2317     }
2318     jj_consume_token(SEMICOLON);
2319   }
2320
2321   static final public void ReturnStatement() throws ParseException {
2322     jj_consume_token(RETURN);
2323     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2324     case ARRAY:
2325     case PRINT:
2326     case FALSE:
2327     case NEW:
2328     case NULL:
2329     case TRUE:
2330     case INTEGER_LITERAL:
2331     case FLOATING_POINT_LITERAL:
2332     case STRING_LITERAL:
2333     case IDENTIFIER:
2334     case LPAREN:
2335     case AT:
2336     case DOLLAR:
2337     case BANG:
2338     case INCR:
2339     case DECR:
2340     case PLUS:
2341     case MINUS:
2342     case DOLLAR_ID:
2343       Expression();
2344       break;
2345     default:
2346       jj_la1[94] = jj_gen;
2347       ;
2348     }
2349     jj_consume_token(SEMICOLON);
2350   }
2351
2352   static final private boolean jj_2_1(int xla) {
2353     jj_la = xla; jj_lastpos = jj_scanpos = token;
2354     boolean retval = !jj_3_1();
2355     jj_save(0, xla);
2356     return retval;
2357   }
2358
2359   static final private boolean jj_2_2(int xla) {
2360     jj_la = xla; jj_lastpos = jj_scanpos = token;
2361     boolean retval = !jj_3_2();
2362     jj_save(1, xla);
2363     return retval;
2364   }
2365
2366   static final private boolean jj_2_3(int xla) {
2367     jj_la = xla; jj_lastpos = jj_scanpos = token;
2368     boolean retval = !jj_3_3();
2369     jj_save(2, xla);
2370     return retval;
2371   }
2372
2373   static final private boolean jj_2_4(int xla) {
2374     jj_la = xla; jj_lastpos = jj_scanpos = token;
2375     boolean retval = !jj_3_4();
2376     jj_save(3, xla);
2377     return retval;
2378   }
2379
2380   static final private boolean jj_2_5(int xla) {
2381     jj_la = xla; jj_lastpos = jj_scanpos = token;
2382     boolean retval = !jj_3_5();
2383     jj_save(4, xla);
2384     return retval;
2385   }
2386
2387   static final private boolean jj_2_6(int xla) {
2388     jj_la = xla; jj_lastpos = jj_scanpos = token;
2389     boolean retval = !jj_3_6();
2390     jj_save(5, xla);
2391     return retval;
2392   }
2393
2394   static final private boolean jj_2_7(int xla) {
2395     jj_la = xla; jj_lastpos = jj_scanpos = token;
2396     boolean retval = !jj_3_7();
2397     jj_save(6, xla);
2398     return retval;
2399   }
2400
2401   static final private boolean jj_3R_93() {
2402     if (jj_3R_97()) return true;
2403     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2404     Token xsp;
2405     while (true) {
2406       xsp = jj_scanpos;
2407       if (jj_3R_98()) { jj_scanpos = xsp; break; }
2408       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2409     }
2410     return false;
2411   }
2412
2413   static final private boolean jj_3R_75() {
2414     if (jj_scan_token(SLASHASSIGN)) return true;
2415     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2416     return false;
2417   }
2418
2419   static final private boolean jj_3R_88() {
2420     if (jj_3R_93()) return true;
2421     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2422     Token xsp;
2423     while (true) {
2424       xsp = jj_scanpos;
2425       if (jj_3R_94()) { jj_scanpos = xsp; break; }
2426       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2427     }
2428     return false;
2429   }
2430
2431   static final private boolean jj_3R_71() {
2432     if (jj_3R_88()) return true;
2433     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2434     Token xsp;
2435     while (true) {
2436       xsp = jj_scanpos;
2437       if (jj_3R_89()) { jj_scanpos = xsp; break; }
2438       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2439     }
2440     return false;
2441   }
2442
2443   static final private boolean jj_3R_66() {
2444     if (jj_3R_71()) return true;
2445     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2446     Token xsp;
2447     while (true) {
2448       xsp = jj_scanpos;
2449       if (jj_3R_72()) { jj_scanpos = xsp; break; }
2450       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2451     }
2452     return false;
2453   }
2454
2455   static final private boolean jj_3R_74() {
2456     if (jj_scan_token(STARASSIGN)) return true;
2457     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2458     return false;
2459   }
2460
2461   static final private boolean jj_3R_59() {
2462     if (jj_3R_66()) return true;
2463     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2464     Token xsp;
2465     xsp = jj_scanpos;
2466     if (jj_3R_67()) jj_scanpos = xsp;
2467     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2468     return false;
2469   }
2470
2471   static final private boolean jj_3R_73() {
2472     if (jj_scan_token(ASSIGN)) return true;
2473     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2474     return false;
2475   }
2476
2477   static final private boolean jj_3R_68() {
2478     Token xsp;
2479     xsp = jj_scanpos;
2480     if (jj_3R_73()) {
2481     jj_scanpos = xsp;
2482     if (jj_3R_74()) {
2483     jj_scanpos = xsp;
2484     if (jj_3R_75()) {
2485     jj_scanpos = xsp;
2486     if (jj_3R_76()) {
2487     jj_scanpos = xsp;
2488     if (jj_3R_77()) {
2489     jj_scanpos = xsp;
2490     if (jj_3R_78()) {
2491     jj_scanpos = xsp;
2492     if (jj_3R_79()) {
2493     jj_scanpos = xsp;
2494     if (jj_3R_80()) {
2495     jj_scanpos = xsp;
2496     if (jj_3R_81()) {
2497     jj_scanpos = xsp;
2498     if (jj_3R_82()) {
2499     jj_scanpos = xsp;
2500     if (jj_3R_83()) {
2501     jj_scanpos = xsp;
2502     if (jj_3R_84()) {
2503     jj_scanpos = xsp;
2504     if (jj_3R_85()) return true;
2505     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2506     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2507     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2508     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2509     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2510     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2511     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2512     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2513     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2514     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2515     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2516     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2517     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2518     return false;
2519   }
2520
2521   static final private boolean jj_3R_60() {
2522     if (jj_3R_68()) return true;
2523     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2524     if (jj_3R_37()) return true;
2525     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2526     return false;
2527   }
2528
2529   static final private boolean jj_3R_53() {
2530     if (jj_3R_59()) return true;
2531     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2532     Token xsp;
2533     xsp = jj_scanpos;
2534     if (jj_3R_60()) jj_scanpos = xsp;
2535     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2536     return false;
2537   }
2538
2539   static final private boolean jj_3R_37() {
2540     Token xsp;
2541     xsp = jj_scanpos;
2542     if (jj_3R_52()) {
2543     jj_scanpos = xsp;
2544     if (jj_3R_53()) return true;
2545     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2546     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2547     return false;
2548   }
2549
2550   static final private boolean jj_3R_52() {
2551     if (jj_3R_58()) return true;
2552     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2553     return false;
2554   }
2555
2556   static final private boolean jj_3R_55() {
2557     if (jj_scan_token(COMMA)) return true;
2558     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2559     if (jj_3R_54()) return true;
2560     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2561     return false;
2562   }
2563
2564   static final private boolean jj_3R_51() {
2565     if (jj_scan_token(INTEGER)) return true;
2566     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2567     return false;
2568   }
2569
2570   static final private boolean jj_3R_50() {
2571     if (jj_scan_token(INT)) return true;
2572     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2573     return false;
2574   }
2575
2576   static final private boolean jj_3R_49() {
2577     if (jj_scan_token(FLOAT)) return true;
2578     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2579     return false;
2580   }
2581
2582   static final private boolean jj_3R_41() {
2583     if (jj_3R_54()) return true;
2584     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2585     Token xsp;
2586     while (true) {
2587       xsp = jj_scanpos;
2588       if (jj_3R_55()) { jj_scanpos = xsp; break; }
2589       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2590     }
2591     return false;
2592   }
2593
2594   static final private boolean jj_3R_48() {
2595     if (jj_scan_token(DOUBLE)) return true;
2596     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2597     return false;
2598   }
2599
2600   static final private boolean jj_3R_47() {
2601     if (jj_scan_token(REAL)) return true;
2602     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2603     return false;
2604   }
2605
2606   static final private boolean jj_3R_46() {
2607     if (jj_scan_token(BOOLEAN)) return true;
2608     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2609     return false;
2610   }
2611
2612   static final private boolean jj_3R_45() {
2613     if (jj_scan_token(BOOL)) return true;
2614     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2615     return false;
2616   }
2617
2618   static final private boolean jj_3R_36() {
2619     Token xsp;
2620     xsp = jj_scanpos;
2621     if (jj_3R_44()) {
2622     jj_scanpos = xsp;
2623     if (jj_3R_45()) {
2624     jj_scanpos = xsp;
2625     if (jj_3R_46()) {
2626     jj_scanpos = xsp;
2627     if (jj_3R_47()) {
2628     jj_scanpos = xsp;
2629     if (jj_3R_48()) {
2630     jj_scanpos = xsp;
2631     if (jj_3R_49()) {
2632     jj_scanpos = xsp;
2633     if (jj_3R_50()) {
2634     jj_scanpos = xsp;
2635     if (jj_3R_51()) return true;
2636     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2637     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2638     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2639     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2640     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2641     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2642     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2643     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2644     return false;
2645   }
2646
2647   static final private boolean jj_3R_44() {
2648     if (jj_scan_token(STRING)) return true;
2649     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2650     return false;
2651   }
2652
2653   static final private boolean jj_3R_40() {
2654     if (jj_scan_token(IDENTIFIER)) return true;
2655     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2656     if (jj_scan_token(COLON)) return true;
2657     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2658     return false;
2659   }
2660
2661   static final private boolean jj_3_2() {
2662     if (jj_scan_token(COMMA)) return true;
2663     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2664     if (jj_3R_35()) return true;
2665     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2666     return false;
2667   }
2668
2669   static final private boolean jj_3R_175() {
2670     if (jj_3R_35()) return true;
2671     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2672     Token xsp;
2673     while (true) {
2674       xsp = jj_scanpos;
2675       if (jj_3_2()) { jj_scanpos = xsp; break; }
2676       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2677     }
2678     return false;
2679   }
2680
2681   static final private boolean jj_3R_58() {
2682     if (jj_scan_token(PRINT)) return true;
2683     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2684     if (jj_3R_37()) return true;
2685     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2686     return false;
2687   }
2688
2689   static final private boolean jj_3R_176() {
2690     if (jj_scan_token(ARRAYASSIGN)) return true;
2691     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2692     if (jj_3R_37()) return true;
2693     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2694     return false;
2695   }
2696
2697   static final private boolean jj_3R_164() {
2698     if (jj_scan_token(LPAREN)) return true;
2699     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2700     Token xsp;
2701     xsp = jj_scanpos;
2702     if (jj_3R_175()) jj_scanpos = xsp;
2703     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2704     if (jj_scan_token(RPAREN)) return true;
2705     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2706     return false;
2707   }
2708
2709   static final private boolean jj_3R_35() {
2710     if (jj_3R_37()) return true;
2711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2712     Token xsp;
2713     while (true) {
2714       xsp = jj_scanpos;
2715       if (jj_3R_176()) { jj_scanpos = xsp; break; }
2716       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2717     }
2718     return false;
2719   }
2720
2721   static final private boolean jj_3R_99() {
2722     if (jj_scan_token(LBRACE)) return true;
2723     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2724     if (jj_3R_37()) return true;
2725     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2726     if (jj_scan_token(RBRACE)) return true;
2727     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2728     return false;
2729   }
2730
2731   static final private boolean jj_3R_70() {
2732     if (jj_3R_37()) return true;
2733     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2734     return false;
2735   }
2736
2737   static final private boolean jj_3R_92() {
2738     if (jj_scan_token(LBRACE)) return true;
2739     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2740     if (jj_3R_37()) return true;
2741     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2742     if (jj_scan_token(RBRACE)) return true;
2743     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2744     return false;
2745   }
2746
2747   static final private boolean jj_3R_62() {
2748     if (jj_scan_token(ASSIGN)) return true;
2749     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2750     if (jj_3R_70()) return true;
2751     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2752     return false;
2753   }
2754
2755   static final private boolean jj_3R_65() {
2756     if (jj_scan_token(DOLLAR)) return true;
2757     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2758     if (jj_3R_56()) return true;
2759     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2760     return false;
2761   }
2762
2763   static final private boolean jj_3R_39() {
2764     if (jj_scan_token(127)) return true;
2765     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2766     return false;
2767   }
2768
2769   static final private boolean jj_3R_64() {
2770     if (jj_scan_token(IDENTIFIER)) return true;
2771     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2772     Token xsp;
2773     while (true) {
2774       xsp = jj_scanpos;
2775       if (jj_3R_99()) { jj_scanpos = xsp; break; }
2776       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2777     }
2778     return false;
2779   }
2780
2781   static final private boolean jj_3R_63() {
2782     if (jj_scan_token(LBRACE)) return true;
2783     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2784     if (jj_3R_37()) return true;
2785     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2786     if (jj_scan_token(RBRACE)) return true;
2787     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2788     return false;
2789   }
2790
2791   static final private boolean jj_3R_56() {
2792     Token xsp;
2793     xsp = jj_scanpos;
2794     if (jj_3R_63()) {
2795     jj_scanpos = xsp;
2796     if (jj_3R_64()) {
2797     jj_scanpos = xsp;
2798     if (jj_3R_65()) return true;
2799     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2800     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2801     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2802     return false;
2803   }
2804
2805   static final private boolean jj_3_1() {
2806     if (jj_3R_34()) return true;
2807     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2808     return false;
2809   }
2810
2811   static final private boolean jj_3R_87() {
2812     if (jj_scan_token(DOLLAR)) return true;
2813     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2814     if (jj_3R_56()) return true;
2815     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2816     return false;
2817   }
2818
2819   static final private boolean jj_3R_86() {
2820     if (jj_scan_token(DOLLAR_ID)) return true;
2821     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2822     Token xsp;
2823     while (true) {
2824       xsp = jj_scanpos;
2825       if (jj_3R_92()) { jj_scanpos = xsp; break; }
2826       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2827     }
2828     return false;
2829   }
2830
2831   static final private boolean jj_3R_69() {
2832     Token xsp;
2833     xsp = jj_scanpos;
2834     if (jj_3R_86()) {
2835     jj_scanpos = xsp;
2836     if (jj_3R_87()) return true;
2837     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2838     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2839     return false;
2840   }
2841
2842   static final private boolean jj_3R_38() {
2843     if (jj_scan_token(SEMICOLON)) return true;
2844     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2845     return false;
2846   }
2847
2848   static final private boolean jj_3R_61() {
2849     if (jj_3R_69()) return true;
2850     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2851     Token xsp;
2852     while (true) {
2853       xsp = jj_scanpos;
2854       if (jj_3_1()) { jj_scanpos = xsp; break; }
2855       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2856     }
2857     return false;
2858   }
2859
2860   static final private boolean jj_3R_54() {
2861     if (jj_3R_61()) return true;
2862     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2863     Token xsp;
2864     xsp = jj_scanpos;
2865     if (jj_3R_62()) jj_scanpos = xsp;
2866     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2867     return false;
2868   }
2869
2870   static final private boolean jj_3_6() {
2871     if (jj_3R_40()) return true;
2872     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2873     return false;
2874   }
2875
2876   static final private boolean jj_3_5() {
2877     if (jj_3R_37()) return true;
2878     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2879     Token xsp;
2880     xsp = jj_scanpos;
2881     if (jj_3R_38()) {
2882     jj_scanpos = xsp;
2883     if (jj_3R_39()) return true;
2884     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2885     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2886     return false;
2887   }
2888
2889   static final private boolean jj_3R_179() {
2890     if (jj_scan_token(COMMA)) return true;
2891     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2892     if (jj_3R_37()) return true;
2893     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2894     return false;
2895   }
2896
2897   static final private boolean jj_3R_178() {
2898     if (jj_3R_37()) return true;
2899     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2900     Token xsp;
2901     while (true) {
2902       xsp = jj_scanpos;
2903       if (jj_3R_179()) { jj_scanpos = xsp; break; }
2904       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2905     }
2906     return false;
2907   }
2908
2909   static final private boolean jj_3R_177() {
2910     if (jj_3R_178()) return true;
2911     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2912     return false;
2913   }
2914
2915   static final private boolean jj_3R_174() {
2916     if (jj_scan_token(LPAREN)) return true;
2917     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2918     Token xsp;
2919     xsp = jj_scanpos;
2920     if (jj_3R_177()) jj_scanpos = xsp;
2921     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2922     if (jj_scan_token(RPAREN)) return true;
2923     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2924     return false;
2925   }
2926
2927   static final private boolean jj_3R_162() {
2928     if (jj_scan_token(NULL)) return true;
2929     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2930     return false;
2931   }
2932
2933   static final private boolean jj_3R_85() {
2934     if (jj_scan_token(DOTASSIGN)) return true;
2935     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2936     return false;
2937   }
2938
2939   static final private boolean jj_3R_166() {
2940     if (jj_scan_token(FALSE)) return true;
2941     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2942     return false;
2943   }
2944
2945   static final private boolean jj_3R_161() {
2946     Token xsp;
2947     xsp = jj_scanpos;
2948     if (jj_3R_165()) {
2949     jj_scanpos = xsp;
2950     if (jj_3R_166()) return true;
2951     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2952     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2953     return false;
2954   }
2955
2956   static final private boolean jj_3R_165() {
2957     if (jj_scan_token(TRUE)) return true;
2958     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2959     return false;
2960   }
2961
2962   static final private boolean jj_3R_171() {
2963     if (jj_3R_167()) return true;
2964     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2965     return false;
2966   }
2967
2968   static final private boolean jj_3R_155() {
2969     if (jj_3R_162()) return true;
2970     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2971     return false;
2972   }
2973
2974   static final private boolean jj_3R_57() {
2975     if (jj_3R_37()) return true;
2976     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2977     return false;
2978   }
2979
2980   static final private boolean jj_3R_154() {
2981     if (jj_3R_161()) return true;
2982     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2983     return false;
2984   }
2985
2986   static final private boolean jj_3R_84() {
2987     if (jj_scan_token(ORASSIGN)) return true;
2988     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2989     return false;
2990   }
2991
2992   static final private boolean jj_3R_153() {
2993     if (jj_scan_token(STRING_LITERAL)) return true;
2994     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2995     return false;
2996   }
2997
2998   static final private boolean jj_3R_152() {
2999     if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
3000     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3001     return false;
3002   }
3003
3004   static final private boolean jj_3R_148() {
3005     Token xsp;
3006     xsp = jj_scanpos;
3007     if (jj_3R_151()) {
3008     jj_scanpos = xsp;
3009     if (jj_3R_152()) {
3010     jj_scanpos = xsp;
3011     if (jj_3R_153()) {
3012     jj_scanpos = xsp;
3013     if (jj_3R_154()) {
3014     jj_scanpos = xsp;
3015     if (jj_3R_155()) return true;
3016     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3017     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3018     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3019     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3020     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3021     return false;
3022   }
3023
3024   static final private boolean jj_3R_151() {
3025     if (jj_scan_token(INTEGER_LITERAL)) return true;
3026     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3027     return false;
3028   }
3029
3030   static final private boolean jj_3R_43() {
3031     if (jj_scan_token(LBRACKET)) return true;
3032     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3033     Token xsp;
3034     xsp = jj_scanpos;
3035     if (jj_3R_57()) jj_scanpos = xsp;
3036     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3037     if (jj_scan_token(RBRACKET)) return true;
3038     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3039     return false;
3040   }
3041
3042   static final private boolean jj_3R_42() {
3043     if (jj_scan_token(CLASSACCESS)) return true;
3044     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3045     if (jj_3R_56()) return true;
3046     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3047     return false;
3048   }
3049
3050   static final private boolean jj_3R_34() {
3051     Token xsp;
3052     xsp = jj_scanpos;
3053     if (jj_3R_42()) {
3054     jj_scanpos = xsp;
3055     if (jj_3R_43()) return true;
3056     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3057     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3058     return false;
3059   }
3060
3061   static final private boolean jj_3R_83() {
3062     if (jj_scan_token(XORASSIGN)) return true;
3063     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3064     return false;
3065   }
3066
3067   static final private boolean jj_3R_170() {
3068     if (jj_3R_34()) return true;
3069     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3070     return false;
3071   }
3072
3073   static final private boolean jj_3R_167() {
3074     Token xsp;
3075     xsp = jj_scanpos;
3076     if (jj_3R_169()) {
3077     jj_scanpos = xsp;
3078     if (jj_3R_170()) return true;
3079     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3080     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3081     return false;
3082   }
3083
3084   static final private boolean jj_3R_169() {
3085     if (jj_3R_174()) return true;
3086     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3087     return false;
3088   }
3089
3090   static final private boolean jj_3R_160() {
3091     if (jj_scan_token(DECR)) return true;
3092     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3093     return false;
3094   }
3095
3096   static final private boolean jj_3R_173() {
3097     if (jj_3R_61()) return true;
3098     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3099     return false;
3100   }
3101
3102   static final private boolean jj_3R_172() {
3103     if (jj_scan_token(IDENTIFIER)) return true;
3104     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3105     return false;
3106   }
3107
3108   static final private boolean jj_3R_82() {
3109     if (jj_scan_token(ANDASSIGN)) return true;
3110     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3111     return false;
3112   }
3113
3114   static final private boolean jj_3R_163() {
3115     if (jj_3R_167()) return true;
3116     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3117     return false;
3118   }
3119
3120   static final private boolean jj_3R_168() {
3121     Token xsp;
3122     xsp = jj_scanpos;
3123     if (jj_3R_172()) {
3124     jj_scanpos = xsp;
3125     if (jj_3R_173()) return true;
3126     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3127     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3128     return false;
3129   }
3130
3131   static final private boolean jj_3R_150() {
3132     Token xsp;
3133     xsp = jj_scanpos;
3134     if (jj_3R_159()) {
3135     jj_scanpos = xsp;
3136     if (jj_3R_160()) return true;
3137     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3138     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3139     return false;
3140   }
3141
3142   static final private boolean jj_3R_159() {
3143     if (jj_scan_token(INCR)) return true;
3144     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3145     return false;
3146   }
3147
3148   static final private boolean jj_3R_158() {
3149     if (jj_3R_61()) return true;
3150     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3151     return false;
3152   }
3153
3154   static final private boolean jj_3R_157() {
3155     if (jj_scan_token(NEW)) return true;
3156     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3157     if (jj_3R_168()) return true;
3158     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3159     return false;
3160   }
3161
3162   static final private boolean jj_3R_149() {
3163     Token xsp;
3164     xsp = jj_scanpos;
3165     if (jj_3R_156()) {
3166     jj_scanpos = xsp;
3167     if (jj_3R_157()) {
3168     jj_scanpos = xsp;
3169     if (jj_3R_158()) return true;
3170     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3171     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3172     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3173     return false;
3174   }
3175
3176   static final private boolean jj_3R_156() {
3177     if (jj_scan_token(IDENTIFIER)) return true;
3178     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3179     return false;
3180   }
3181
3182   static final private boolean jj_3R_145() {
3183     if (jj_scan_token(ARRAY)) return true;
3184     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3185     if (jj_3R_164()) return true;
3186     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3187     return false;
3188   }
3189
3190   static final private boolean jj_3R_144() {
3191     if (jj_3R_149()) return true;
3192     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3193     Token xsp;
3194     while (true) {
3195       xsp = jj_scanpos;
3196       if (jj_3R_163()) { jj_scanpos = xsp; break; }
3197       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3198     }
3199     return false;
3200   }
3201
3202   static final private boolean jj_3_4() {
3203     if (jj_scan_token(IDENTIFIER)) return true;
3204     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3205     if (jj_scan_token(STATICCLASSACCESS)) return true;
3206     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3207     if (jj_3R_168()) return true;
3208     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3209     Token xsp;
3210     while (true) {
3211       xsp = jj_scanpos;
3212       if (jj_3R_171()) { jj_scanpos = xsp; break; }
3213       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3214     }
3215     return false;
3216   }
3217
3218   static final private boolean jj_3R_138() {
3219     Token xsp;
3220     xsp = jj_scanpos;
3221     if (jj_3_4()) {
3222     jj_scanpos = xsp;
3223     if (jj_3R_144()) {
3224     jj_scanpos = xsp;
3225     if (jj_3R_145()) return true;
3226     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3227     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3228     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3229     return false;
3230   }
3231
3232   static final private boolean jj_3R_81() {
3233     if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) return true;
3234     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3235     return false;
3236   }
3237
3238   static final private boolean jj_3R_147() {
3239     if (jj_3R_138()) return true;
3240     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3241     Token xsp;
3242     xsp = jj_scanpos;
3243     if (jj_3R_150()) jj_scanpos = xsp;
3244     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3245     return false;
3246   }
3247
3248   static final private boolean jj_3R_146() {
3249     if (jj_scan_token(LPAREN)) return true;
3250     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3251     if (jj_3R_36()) return true;
3252     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3253     if (jj_scan_token(RPAREN)) return true;
3254     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3255     if (jj_3R_121()) return true;
3256     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3257     return false;
3258   }
3259
3260   static final private boolean jj_3_3() {
3261     if (jj_scan_token(LPAREN)) return true;
3262     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3263     if (jj_3R_36()) return true;
3264     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3265     if (jj_scan_token(RPAREN)) return true;
3266     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3267     return false;
3268   }
3269
3270   static final private boolean jj_3R_120() {
3271     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
3272     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3273     return false;
3274   }
3275
3276   static final private boolean jj_3R_132() {
3277     if (jj_scan_token(REM)) return true;
3278     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3279     return false;
3280   }
3281
3282   static final private boolean jj_3R_143() {
3283     if (jj_scan_token(LPAREN)) return true;
3284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3285     if (jj_3R_37()) return true;
3286     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3287     if (jj_scan_token(RPAREN)) return true;
3288     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3289     return false;
3290   }
3291
3292   static final private boolean jj_3R_142() {
3293     if (jj_3R_148()) return true;
3294     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3295     return false;
3296   }
3297
3298   static final private boolean jj_3R_141() {
3299     if (jj_3R_147()) return true;
3300     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3301     return false;
3302   }
3303
3304   static final private boolean jj_3R_124() {
3305     if (jj_scan_token(MINUS)) return true;
3306     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3307     return false;
3308   }
3309
3310   static final private boolean jj_3R_140() {
3311     if (jj_3R_146()) return true;
3312     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3313     return false;
3314   }
3315
3316   static final private boolean jj_3R_80() {
3317     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
3318     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3319     return false;
3320   }
3321
3322   static final private boolean jj_3R_137() {
3323     Token xsp;
3324     xsp = jj_scanpos;
3325     if (jj_3R_139()) {
3326     jj_scanpos = xsp;
3327     if (jj_3R_140()) {
3328     jj_scanpos = xsp;
3329     if (jj_3R_141()) {
3330     jj_scanpos = xsp;
3331     if (jj_3R_142()) {
3332     jj_scanpos = xsp;
3333     if (jj_3R_143()) return true;
3334     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3335     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3336     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3337     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3338     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3339     return false;
3340   }
3341
3342   static final private boolean jj_3R_139() {
3343     if (jj_scan_token(BANG)) return true;
3344     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3345     if (jj_3R_121()) return true;
3346     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3347     return false;
3348   }
3349
3350   static final private boolean jj_3R_131() {
3351     if (jj_scan_token(SLASH)) return true;
3352     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3353     return false;
3354   }
3355
3356   static final private boolean jj_3R_136() {
3357     if (jj_scan_token(DECR)) return true;
3358     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3359     if (jj_3R_138()) return true;
3360     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3361     return false;
3362   }
3363
3364   static final private boolean jj_3R_115() {
3365     if (jj_scan_token(GE)) return true;
3366     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3367     return false;
3368   }
3369
3370   static final private boolean jj_3R_123() {
3371     if (jj_scan_token(PLUS)) return true;
3372     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3373     return false;
3374   }
3375
3376   static final private boolean jj_3R_119() {
3377     if (jj_scan_token(RSIGNEDSHIFT)) return true;
3378     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3379     return false;
3380   }
3381
3382   static final private boolean jj_3R_117() {
3383     Token xsp;
3384     xsp = jj_scanpos;
3385     if (jj_3R_123()) {
3386     jj_scanpos = xsp;
3387     if (jj_3R_124()) return true;
3388     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3389     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3390     if (jj_3R_116()) return true;
3391     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3392     return false;
3393   }
3394
3395   static final private boolean jj_3R_130() {
3396     if (jj_scan_token(STAR)) return true;
3397     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3398     return false;
3399   }
3400
3401   static final private boolean jj_3R_122() {
3402     Token xsp;
3403     xsp = jj_scanpos;
3404     if (jj_3R_130()) {
3405     jj_scanpos = xsp;
3406     if (jj_3R_131()) {
3407     jj_scanpos = xsp;
3408     if (jj_3R_132()) return true;
3409     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3410     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3411     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3412     if (jj_3R_121()) return true;
3413     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3414     return false;
3415   }
3416
3417   static final private boolean jj_3R_135() {
3418     if (jj_scan_token(INCR)) return true;
3419     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3420     if (jj_3R_138()) return true;
3421     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3422     return false;
3423   }
3424
3425   static final private boolean jj_3R_134() {
3426     if (jj_scan_token(MINUS)) return true;
3427     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3428     return false;
3429   }
3430
3431   static final private boolean jj_3R_114() {
3432     if (jj_scan_token(LE)) return true;
3433     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3434     return false;
3435   }
3436
3437   static final private boolean jj_3_7() {
3438     if (jj_3R_41()) return true;
3439     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3440     return false;
3441   }
3442
3443   static final private boolean jj_3R_79() {
3444     if (jj_scan_token(LSHIFTASSIGN)) return true;
3445     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3446     return false;
3447   }
3448
3449   static final private boolean jj_3R_129() {
3450     if (jj_3R_137()) return true;
3451     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3452     return false;
3453   }
3454
3455   static final private boolean jj_3R_118() {
3456     if (jj_scan_token(LSHIFT)) return true;
3457     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3458     return false;
3459   }
3460
3461   static final private boolean jj_3R_128() {
3462     if (jj_3R_136()) return true;
3463     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3464     return false;
3465   }
3466
3467   static final private boolean jj_3R_111() {
3468     Token xsp;
3469     xsp = jj_scanpos;
3470     if (jj_3R_118()) {
3471     jj_scanpos = xsp;
3472     if (jj_3R_119()) {
3473     jj_scanpos = xsp;
3474     if (jj_3R_120()) return true;
3475     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3476     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3477     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3478     if (jj_3R_110()) return true;
3479     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3480     return false;
3481   }
3482
3483   static final private boolean jj_3R_113() {
3484     if (jj_scan_token(GT)) return true;
3485     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3486     return false;
3487   }
3488
3489   static final private boolean jj_3R_109() {
3490     if (jj_scan_token(NE)) return true;
3491     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3492     return false;
3493   }
3494
3495   static final private boolean jj_3R_127() {
3496     if (jj_3R_135()) return true;
3497     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3498     return false;
3499   }
3500
3501   static final private boolean jj_3R_133() {
3502     if (jj_scan_token(PLUS)) return true;
3503     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3504     return false;
3505   }
3506
3507   static final private boolean jj_3R_126() {
3508     Token xsp;
3509     xsp = jj_scanpos;
3510     if (jj_3R_133()) {
3511     jj_scanpos = xsp;
3512     if (jj_3R_134()) return true;
3513     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3514     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3515     if (jj_3R_121()) return true;
3516     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3517     return false;
3518   }
3519
3520   static final private boolean jj_3R_121() {
3521     Token xsp;
3522     xsp = jj_scanpos;
3523     if (jj_3R_125()) {
3524     jj_scanpos = xsp;
3525     if (jj_3R_126()) {
3526     jj_scanpos = xsp;
3527     if (jj_3R_127()) {
3528     jj_scanpos = xsp;
3529     if (jj_3R_128()) {
3530     jj_scanpos = xsp;
3531     if (jj_3R_129()) return true;
3532     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3533     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3534     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3535     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3536     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3537     return false;
3538   }
3539
3540   static final private boolean jj_3R_125() {
3541     if (jj_scan_token(AT)) return true;
3542     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3543     if (jj_3R_121()) return true;
3544     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3545     return false;
3546   }
3547
3548   static final private boolean jj_3R_112() {
3549     if (jj_scan_token(LT)) return true;
3550     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3551     return false;
3552   }
3553
3554   static final private boolean jj_3R_108() {
3555     if (jj_scan_token(EQ)) return true;
3556     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3557     return false;
3558   }
3559
3560   static final private boolean jj_3R_107() {
3561     Token xsp;
3562     xsp = jj_scanpos;
3563     if (jj_3R_112()) {
3564     jj_scanpos = xsp;
3565     if (jj_3R_113()) {
3566     jj_scanpos = xsp;
3567     if (jj_3R_114()) {
3568     jj_scanpos = xsp;
3569     if (jj_3R_115()) return true;
3570     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3571     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3572     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3573     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3574     if (jj_3R_106()) return true;
3575     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3576     return false;
3577   }
3578
3579   static final private boolean jj_3R_105() {
3580     Token xsp;
3581     xsp = jj_scanpos;
3582     if (jj_3R_108()) {
3583     jj_scanpos = xsp;
3584     if (jj_3R_109()) return true;
3585     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3586     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3587     if (jj_3R_104()) return true;
3588     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3589     return false;
3590   }
3591
3592   static final private boolean jj_3R_116() {
3593     if (jj_3R_121()) return true;
3594     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3595     Token xsp;
3596     while (true) {
3597       xsp = jj_scanpos;
3598       if (jj_3R_122()) { jj_scanpos = xsp; break; }
3599       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3600     }
3601     return false;
3602   }
3603
3604   static final private boolean jj_3R_78() {
3605     if (jj_scan_token(MINUSASSIGN)) return true;
3606     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3607     return false;
3608   }
3609
3610   static final private boolean jj_3R_110() {
3611     if (jj_3R_116()) return true;
3612     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3613     Token xsp;
3614     while (true) {
3615       xsp = jj_scanpos;
3616       if (jj_3R_117()) { jj_scanpos = xsp; break; }
3617       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3618     }
3619     return false;
3620   }
3621
3622   static final private boolean jj_3R_103() {
3623     if (jj_scan_token(BIT_AND)) return true;
3624     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3625     if (jj_3R_102()) return true;
3626     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3627     return false;
3628   }
3629
3630   static final private boolean jj_3R_106() {
3631     if (jj_3R_110()) return true;
3632     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3633     Token xsp;
3634     while (true) {
3635       xsp = jj_scanpos;
3636       if (jj_3R_111()) { jj_scanpos = xsp; break; }
3637       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3638     }
3639     return false;
3640   }
3641
3642   static final private boolean jj_3R_77() {
3643     if (jj_scan_token(PLUSASSIGN)) return true;
3644     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3645     return false;
3646   }
3647
3648   static final private boolean jj_3R_98() {
3649     if (jj_scan_token(BIT_OR)) return true;
3650     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3651     if (jj_3R_97()) return true;
3652     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3653     return false;
3654   }
3655
3656   static final private boolean jj_3R_101() {
3657     if (jj_scan_token(XOR)) return true;
3658     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3659     if (jj_3R_100()) return true;
3660     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3661     return false;
3662   }
3663
3664   static final private boolean jj_3R_104() {
3665     if (jj_3R_106()) return true;
3666     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3667     Token xsp;
3668     while (true) {
3669       xsp = jj_scanpos;
3670       if (jj_3R_107()) { jj_scanpos = xsp; break; }
3671       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3672     }
3673     return false;
3674   }
3675
3676   static final private boolean jj_3R_91() {
3677     if (jj_scan_token(_ORL)) return true;
3678     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3679     return false;
3680   }
3681
3682   static final private boolean jj_3R_96() {
3683     if (jj_scan_token(_ANDL)) return true;
3684     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3685     return false;
3686   }
3687
3688   static final private boolean jj_3R_94() {
3689     if (jj_scan_token(DOT)) return true;
3690     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3691     if (jj_3R_93()) return true;
3692     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3693     return false;
3694   }
3695
3696   static final private boolean jj_3R_102() {
3697     if (jj_3R_104()) return true;
3698     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3699     Token xsp;
3700     while (true) {
3701       xsp = jj_scanpos;
3702       if (jj_3R_105()) { jj_scanpos = xsp; break; }
3703       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3704     }
3705     return false;
3706   }
3707
3708   static final private boolean jj_3R_90() {
3709     if (jj_scan_token(SC_OR)) return true;
3710     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3711     return false;
3712   }
3713
3714   static final private boolean jj_3R_76() {
3715     if (jj_scan_token(REMASSIGN)) return true;
3716     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3717     return false;
3718   }
3719
3720   static final private boolean jj_3R_100() {
3721     if (jj_3R_102()) return true;
3722     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3723     Token xsp;
3724     while (true) {
3725       xsp = jj_scanpos;
3726       if (jj_3R_103()) { jj_scanpos = xsp; break; }
3727       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3728     }
3729     return false;
3730   }
3731
3732   static final private boolean jj_3R_72() {
3733     Token xsp;
3734     xsp = jj_scanpos;
3735     if (jj_3R_90()) {
3736     jj_scanpos = xsp;
3737     if (jj_3R_91()) return true;
3738     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3739     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3740     if (jj_3R_71()) return true;
3741     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3742     return false;
3743   }
3744
3745   static final private boolean jj_3R_95() {
3746     if (jj_scan_token(SC_AND)) return true;
3747     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3748     return false;
3749   }
3750
3751   static final private boolean jj_3R_89() {
3752     Token xsp;
3753     xsp = jj_scanpos;
3754     if (jj_3R_95()) {
3755     jj_scanpos = xsp;
3756     if (jj_3R_96()) return true;
3757     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3758     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3759     if (jj_3R_88()) return true;
3760     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3761     return false;
3762   }
3763
3764   static final private boolean jj_3R_97() {
3765     if (jj_3R_100()) return true;
3766     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3767     Token xsp;
3768     while (true) {
3769       xsp = jj_scanpos;
3770       if (jj_3R_101()) { jj_scanpos = xsp; break; }
3771       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3772     }
3773     return false;
3774   }
3775
3776   static final private boolean jj_3R_67() {
3777     if (jj_scan_token(HOOK)) return true;
3778     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3779     if (jj_3R_37()) return true;
3780     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3781     if (jj_scan_token(COLON)) return true;
3782     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3783     if (jj_3R_59()) return true;
3784     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3785     return false;
3786   }
3787
3788   static private boolean jj_initialized_once = false;
3789   static public PHPParserTokenManager token_source;
3790   static SimpleCharStream jj_input_stream;
3791   static public Token token, jj_nt;
3792   static private int jj_ntk;
3793   static private Token jj_scanpos, jj_lastpos;
3794   static private int jj_la;
3795   static public boolean lookingAhead = false;
3796   static private boolean jj_semLA;
3797   static private int jj_gen;
3798   static final private int[] jj_la1 = new int[95];
3799   static final private int[] jj_la1_0 = {0x2,0x7fcb0000,0x0,0x60000,0x60000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x400000,0x0,0x400000,0x0,0x0,0x80000000,0x80000000,0x400000,0x0,0x0,0x80000000,0xc00000,0x80000000,0x0,0x0,0xc00000,0x0,0x0,0x7f480000,0x0,0x0,0x0,0x0,0x1e000000,0x0,0x0,0x0,0x0,0x0,0x0,0x7fcb0000,0x7fcb0000,0x0,0x0,0x0,0x400000,0x0,0x7fcb0000,0x0,0x100000,0x200000,0x7fc80000,0x0,0x7fc80000,0x0,0x400000,0xc00000,0x400000,0x400000,0x0,0x0,0x0,0xc00000,};
3800   static final private int[] jj_la1_1 = {0x0,0xd76a4,0x100,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x43200,0x0,0x0,0x0,0x0,0x0,0x3fa00000,0x0,0x43200,0x0,0x0,0x40000000,0x40000000,0x80000000,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x43200,0x0,0x43200,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x43200,0x0,0x42200,0x40200,0x43200,0x0,0x0,0x954a4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd76a4,0xd76a4,0x0,0x0,0x0,0x1000,0x48,0xd76a4,0x48,0x0,0x0,0xd76a4,0x0,0xd76a4,0x0,0x1000,0x43200,0x1000,0x1000,0x0,0x0,0x0,0x43200,};
3801   static final private int[] jj_la1_2 = {0x0,0x11914451,0x0,0x0,0x0,0x200000,0x2000000,0x10000,0x1000000,0x10000,0x1010400,0x0,0x11804451,0x110000,0x0,0x200000,0x1000000,0x0,0x0,0x2000000,0x11804451,0x2000000,0x20000000,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0x80000000,0x80000000,0xc000000,0xc000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11804451,0x10000000,0x1004451,0x0,0x0,0x44000,0x44000,0x1000400,0x1000400,0x1000400,0x44000,0x11804451,0x40000,0x51,0x0,0x11804451,0x200000,0x100000,0x1110400,0x100000,0x100000,0x100000,0x100000,0x0,0x200000,0x100000,0x200000,0x100000,0x200000,0x100000,0x11914451,0x11914451,0x200000,0x2000000,0x2000000,0x1000400,0x0,0x11914451,0x0,0x0,0x0,0x11914451,0x100000,0x51914451,0x100000,0x1000400,0x11804451,0x1000400,0x1000400,0x200000,0x400,0x400,0x11804451,};
3802   static final private int[] jj_la1_3 = {0x0,0x400001e0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x400001e0,0x0,0x800,0x0,0x40000800,0x800,0x0,0x3ffc0000,0x400001e0,0x3ffc0000,0x0,0x8,0x8,0x10,0x10,0x0,0x1000,0x2000,0x800,0x4,0x4,0x3,0x3,0x38000,0x38000,0x180,0x180,0x4600,0x4600,0x180,0x400001e0,0x0,0x40000000,0x60,0x60,0x0,0x0,0x40000000,0x40000000,0x40000000,0x0,0x400001e0,0x0,0x0,0x0,0x400001e0,0x0,0x80000000,0x40000060,0x80000000,0x80000000,0x80000000,0x80000000,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x400001e0,0x400001e0,0x0,0x3ffc0060,0x3ffc0060,0x40000060,0x0,0x400001e0,0x0,0x0,0x0,0x400001e0,0x80000000,0x400001e0,0x80000000,0x40000060,0x400001e0,0x40000060,0x40000060,0x0,0x0,0x0,0x400001e0,};
3803   static final private JJCalls[] jj_2_rtns = new JJCalls[7];
3804   static private boolean jj_rescan = false;
3805   static private int jj_gc = 0;
3806
3807   public PHPParser(java.io.InputStream stream) {
3808     if (jj_initialized_once) {
3809       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3810       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3811       System.out.println("       during parser generation.");
3812       throw new Error();
3813     }
3814     jj_initialized_once = true;
3815     jj_input_stream = new SimpleCharStream(stream, 1, 1);
3816     token_source = new PHPParserTokenManager(jj_input_stream);
3817     token = new Token();
3818     jj_ntk = -1;
3819     jj_gen = 0;
3820     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3821     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3822   }
3823
3824   static public void ReInit(java.io.InputStream stream) {
3825     jj_input_stream.ReInit(stream, 1, 1);
3826     token_source.ReInit(jj_input_stream);
3827     token = new Token();
3828     jj_ntk = -1;
3829     jj_gen = 0;
3830     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3831     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3832   }
3833
3834   public PHPParser(java.io.Reader stream) {
3835     if (jj_initialized_once) {
3836       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3837       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3838       System.out.println("       during parser generation.");
3839       throw new Error();
3840     }
3841     jj_initialized_once = true;
3842     jj_input_stream = new SimpleCharStream(stream, 1, 1);
3843     token_source = new PHPParserTokenManager(jj_input_stream);
3844     token = new Token();
3845     jj_ntk = -1;
3846     jj_gen = 0;
3847     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3848     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3849   }
3850
3851   static public void ReInit(java.io.Reader stream) {
3852     jj_input_stream.ReInit(stream, 1, 1);
3853     token_source.ReInit(jj_input_stream);
3854     token = new Token();
3855     jj_ntk = -1;
3856     jj_gen = 0;
3857     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3858     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3859   }
3860
3861   public PHPParser(PHPParserTokenManager tm) {
3862     if (jj_initialized_once) {
3863       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3864       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3865       System.out.println("       during parser generation.");
3866       throw new Error();
3867     }
3868     jj_initialized_once = true;
3869     token_source = tm;
3870     token = new Token();
3871     jj_ntk = -1;
3872     jj_gen = 0;
3873     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3874     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3875   }
3876
3877   public void ReInit(PHPParserTokenManager tm) {
3878     token_source = tm;
3879     token = new Token();
3880     jj_ntk = -1;
3881     jj_gen = 0;
3882     for (int i = 0; i < 95; i++) jj_la1[i] = -1;
3883     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3884   }
3885
3886   static final private Token jj_consume_token(int kind) throws ParseException {
3887     Token oldToken;
3888     if ((oldToken = token).next != null) token = token.next;
3889     else token = token.next = token_source.getNextToken();
3890     jj_ntk = -1;
3891     if (token.kind == kind) {
3892       jj_gen++;
3893       if (++jj_gc > 100) {
3894         jj_gc = 0;
3895         for (int i = 0; i < jj_2_rtns.length; i++) {
3896           JJCalls c = jj_2_rtns[i];
3897           while (c != null) {
3898             if (c.gen < jj_gen) c.first = null;
3899             c = c.next;
3900           }
3901         }
3902       }
3903       return token;
3904     }
3905     token = oldToken;
3906     jj_kind = kind;
3907     throw generateParseException();
3908   }
3909
3910   static final private boolean jj_scan_token(int kind) {
3911     if (jj_scanpos == jj_lastpos) {
3912       jj_la--;
3913       if (jj_scanpos.next == null) {
3914         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3915       } else {
3916         jj_lastpos = jj_scanpos = jj_scanpos.next;
3917       }
3918     } else {
3919       jj_scanpos = jj_scanpos.next;
3920     }
3921     if (jj_rescan) {
3922       int i = 0; Token tok = token;
3923       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3924       if (tok != null) jj_add_error_token(kind, i);
3925     }
3926     return (jj_scanpos.kind != kind);
3927   }
3928
3929   static final public Token getNextToken() {
3930     if (token.next != null) token = token.next;
3931     else token = token.next = token_source.getNextToken();
3932     jj_ntk = -1;
3933     jj_gen++;
3934     return token;
3935   }
3936
3937   static final public Token getToken(int index) {
3938     Token t = lookingAhead ? jj_scanpos : token;
3939     for (int i = 0; i < index; i++) {
3940       if (t.next != null) t = t.next;
3941       else t = t.next = token_source.getNextToken();
3942     }
3943     return t;
3944   }
3945
3946   static final private int jj_ntk() {
3947     if ((jj_nt=token.next) == null)
3948       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3949     else
3950       return (jj_ntk = jj_nt.kind);
3951   }
3952
3953   static private java.util.Vector jj_expentries = new java.util.Vector();
3954   static private int[] jj_expentry;
3955   static private int jj_kind = -1;
3956   static private int[] jj_lasttokens = new int[100];
3957   static private int jj_endpos;
3958
3959   static private void jj_add_error_token(int kind, int pos) {
3960     if (pos >= 100) return;
3961     if (pos == jj_endpos + 1) {
3962       jj_lasttokens[jj_endpos++] = kind;
3963     } else if (jj_endpos != 0) {
3964       jj_expentry = new int[jj_endpos];
3965       for (int i = 0; i < jj_endpos; i++) {
3966         jj_expentry[i] = jj_lasttokens[i];
3967       }
3968       boolean exists = false;
3969       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
3970         int[] oldentry = (int[])(enum.nextElement());
3971         if (oldentry.length == jj_expentry.length) {
3972           exists = true;
3973           for (int i = 0; i < jj_expentry.length; i++) {
3974             if (oldentry[i] != jj_expentry[i]) {
3975               exists = false;
3976               break;
3977             }
3978           }
3979           if (exists) break;
3980         }
3981       }
3982       if (!exists) jj_expentries.addElement(jj_expentry);
3983       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
3984     }
3985   }
3986
3987   static final public ParseException generateParseException() {
3988     jj_expentries.removeAllElements();
3989     boolean[] la1tokens = new boolean[128];
3990     for (int i = 0; i < 128; i++) {
3991       la1tokens[i] = false;
3992     }
3993     if (jj_kind >= 0) {
3994       la1tokens[jj_kind] = true;
3995       jj_kind = -1;
3996     }
3997     for (int i = 0; i < 95; i++) {
3998       if (jj_la1[i] == jj_gen) {
3999         for (int j = 0; j < 32; j++) {
4000           if ((jj_la1_0[i] & (1<<j)) != 0) {
4001             la1tokens[j] = true;
4002           }
4003           if ((jj_la1_1[i] & (1<<j)) != 0) {
4004             la1tokens[32+j] = true;
4005           }
4006           if ((jj_la1_2[i] & (1<<j)) != 0) {
4007             la1tokens[64+j] = true;
4008           }
4009           if ((jj_la1_3[i] & (1<<j)) != 0) {
4010             la1tokens[96+j] = true;
4011           }
4012         }
4013       }
4014     }
4015     for (int i = 0; i < 128; i++) {
4016       if (la1tokens[i]) {
4017         jj_expentry = new int[1];
4018         jj_expentry[0] = i;
4019         jj_expentries.addElement(jj_expentry);
4020       }
4021     }
4022     jj_endpos = 0;
4023     jj_rescan_token();
4024     jj_add_error_token(0, 0);
4025     int[][] exptokseq = new int[jj_expentries.size()][];
4026     for (int i = 0; i < jj_expentries.size(); i++) {
4027       exptokseq[i] = (int[])jj_expentries.elementAt(i);
4028     }
4029     return new ParseException(token, exptokseq, tokenImage);
4030   }
4031
4032   static final public void enable_tracing() {
4033   }
4034
4035   static final public void disable_tracing() {
4036   }
4037
4038   static final private void jj_rescan_token() {
4039     jj_rescan = true;
4040     for (int i = 0; i < 7; i++) {
4041       JJCalls p = jj_2_rtns[i];
4042       do {
4043         if (p.gen > jj_gen) {
4044           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
4045           switch (i) {
4046             case 0: jj_3_1(); break;
4047             case 1: jj_3_2(); break;
4048             case 2: jj_3_3(); break;
4049             case 3: jj_3_4(); break;
4050             case 4: jj_3_5(); break;
4051             case 5: jj_3_6(); break;
4052             case 6: jj_3_7(); break;
4053           }
4054         }
4055         p = p.next;
4056       } while (p != null);
4057     }
4058     jj_rescan = false;
4059   }
4060
4061   static final private void jj_save(int index, int xla) {
4062     JJCalls p = jj_2_rtns[index];
4063     while (p.gen > jj_gen) {
4064       if (p.next == null) { p = p.next = new JJCalls(); break; }
4065       p = p.next;
4066     }
4067     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
4068   }
4069
4070   static final class JJCalls {
4071     int gen;
4072     Token first;
4073     int arg;
4074     JJCalls next;
4075   }
4076
4077 }