*** empty log message ***
[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 BIT_AND:
303       case DOLLAR_ID:
304         ;
305         break;
306       default:
307         jj_la1[1] = jj_gen;
308         break label_2;
309       }
310       BlockStatement();
311     }
312   }
313
314   static final public void ClassDeclaration() throws ParseException {
315   PHPClassDeclaration classDeclaration;
316   Token className;
317   int pos = jj_input_stream.bufpos;
318     jj_consume_token(CLASS);
319     className = jj_consume_token(IDENTIFIER);
320     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
321     case EXTENDS:
322       jj_consume_token(EXTENDS);
323       jj_consume_token(IDENTIFIER);
324       break;
325     default:
326       jj_la1[2] = jj_gen;
327       ;
328     }
329     classDeclaration = new PHPClassDeclaration(currentSegment,className.image,pos);
330     currentSegment.add(classDeclaration);
331     currentSegment = classDeclaration;
332     ClassBody();
333     currentSegment = (PHPSegmentWithChildren) currentSegment.getParent();
334   }
335
336   static final public void ClassBody() throws ParseException {
337     jj_consume_token(LBRACE);
338     label_3:
339     while (true) {
340       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
341       case FUNCTION:
342       case VAR:
343         ;
344         break;
345       default:
346         jj_la1[3] = jj_gen;
347         break label_3;
348       }
349       ClassBodyDeclaration();
350     }
351     jj_consume_token(RBRACE);
352   }
353
354   static final public void ClassBodyDeclaration() throws ParseException {
355     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
356     case FUNCTION:
357       MethodDeclaration();
358       break;
359     case VAR:
360       FieldDeclaration();
361       break;
362     default:
363       jj_la1[4] = jj_gen;
364       jj_consume_token(-1);
365       throw new ParseException();
366     }
367   }
368
369   static final public void FieldDeclaration() throws ParseException {
370     jj_consume_token(VAR);
371     VariableDeclarator();
372     label_4:
373     while (true) {
374       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
375       case COMMA:
376         ;
377         break;
378       default:
379         jj_la1[5] = jj_gen;
380         break label_4;
381       }
382       jj_consume_token(COMMA);
383       VariableDeclarator();
384     }
385     jj_consume_token(SEMICOLON);
386   }
387
388   static final public void VariableDeclarator() throws ParseException {
389     VariableDeclaratorId();
390     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
391     case ASSIGN:
392       jj_consume_token(ASSIGN);
393       VariableInitializer();
394       break;
395     default:
396       jj_la1[6] = jj_gen;
397       ;
398     }
399   }
400
401   static final public void VariableDeclaratorId() throws ParseException {
402     Variable();
403     label_5:
404     while (true) {
405       if (jj_2_1(2)) {
406         ;
407       } else {
408         break label_5;
409       }
410       VariableSuffix();
411     }
412   }
413
414   static final public void Variable() throws ParseException {
415     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
416     case DOLLAR_ID:
417       jj_consume_token(DOLLAR_ID);
418       label_6:
419       while (true) {
420         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
421         case LBRACE:
422           ;
423           break;
424         default:
425           jj_la1[7] = jj_gen;
426           break label_6;
427         }
428         jj_consume_token(LBRACE);
429         Expression();
430         jj_consume_token(RBRACE);
431       }
432       break;
433     case DOLLAR:
434       jj_consume_token(DOLLAR);
435       VariableName();
436       break;
437     default:
438       jj_la1[8] = jj_gen;
439       jj_consume_token(-1);
440       throw new ParseException();
441     }
442   }
443
444   static final public String VariableName() throws ParseException {
445     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
446     case LBRACE:
447       jj_consume_token(LBRACE);
448       Expression();
449       jj_consume_token(RBRACE);
450       break;
451     case IDENTIFIER:
452       jj_consume_token(IDENTIFIER);
453       label_7:
454       while (true) {
455         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
456         case LBRACE:
457           ;
458           break;
459         default:
460           jj_la1[9] = jj_gen;
461           break label_7;
462         }
463         jj_consume_token(LBRACE);
464         Expression();
465         jj_consume_token(RBRACE);
466       }
467       break;
468     case DOLLAR:
469       jj_consume_token(DOLLAR);
470       VariableName();
471       break;
472     default:
473       jj_la1[10] = jj_gen;
474       jj_consume_token(-1);
475       throw new ParseException();
476     }
477   }
478
479   static final public void VariableInitializer() throws ParseException {
480     Expression();
481   }
482
483   static final public void ArrayVariable() throws ParseException {
484     Expression();
485     label_8:
486     while (true) {
487       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
488       case ARRAYASSIGN:
489         ;
490         break;
491       default:
492         jj_la1[11] = jj_gen;
493         break label_8;
494       }
495       jj_consume_token(ARRAYASSIGN);
496       Expression();
497     }
498   }
499
500   static final public void ArrayInitializer() throws ParseException {
501     jj_consume_token(LPAREN);
502     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
503     case ARRAY:
504     case PRINT:
505     case FALSE:
506     case NEW:
507     case NULL:
508     case TRUE:
509     case INTEGER_LITERAL:
510     case FLOATING_POINT_LITERAL:
511     case STRING_LITERAL:
512     case IDENTIFIER:
513     case LPAREN:
514     case AT:
515     case DOLLAR:
516     case BANG:
517     case INCR:
518     case DECR:
519     case PLUS:
520     case MINUS:
521     case BIT_AND:
522     case DOLLAR_ID:
523       ArrayVariable();
524       label_9:
525       while (true) {
526         if (jj_2_2(2)) {
527           ;
528         } else {
529           break label_9;
530         }
531         jj_consume_token(COMMA);
532         ArrayVariable();
533       }
534       break;
535     default:
536       jj_la1[12] = jj_gen;
537       ;
538     }
539     jj_consume_token(RPAREN);
540   }
541
542   static final public void MethodDeclaration() throws ParseException {
543   PHPFunctionDeclaration functionDeclaration;
544     jj_consume_token(FUNCTION);
545     functionDeclaration = MethodDeclarator();
546     currentSegment.add(functionDeclaration);
547     currentSegment = functionDeclaration;
548     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
549     case LBRACE:
550       Block();
551       break;
552     case SEMICOLON:
553       jj_consume_token(SEMICOLON);
554       break;
555     default:
556       jj_la1[13] = jj_gen;
557       jj_consume_token(-1);
558       throw new ParseException();
559     }
560     currentSegment = (PHPSegmentWithChildren) currentSegment.getParent();
561   }
562
563   static final public PHPFunctionDeclaration MethodDeclarator() throws ParseException {
564   Token bit_and = null;
565   Token identifier;
566   StringBuffer methodDeclaration = new StringBuffer();
567   String formalParameters;
568   int pos = jj_input_stream.bufpos;
569     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
570     case BIT_AND:
571       bit_and = jj_consume_token(BIT_AND);
572       break;
573     default:
574       jj_la1[14] = jj_gen;
575       ;
576     }
577     identifier = jj_consume_token(IDENTIFIER);
578     FormalParameters();
579     if (bit_and != null) {
580       methodDeclaration.append("&");
581     }
582     methodDeclaration.append(identifier);
583     {if (true) return new PHPFunctionDeclaration(currentSegment,methodDeclaration.toString(),pos);}
584     throw new Error("Missing return statement in function");
585   }
586
587   static final public void FormalParameters() throws ParseException {
588     jj_consume_token(LPAREN);
589     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
590     case DOLLAR:
591     case BIT_AND:
592     case DOLLAR_ID:
593       FormalParameter();
594       label_10:
595       while (true) {
596         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
597         case COMMA:
598           ;
599           break;
600         default:
601           jj_la1[15] = jj_gen;
602           break label_10;
603         }
604         jj_consume_token(COMMA);
605         FormalParameter();
606       }
607       break;
608     default:
609       jj_la1[16] = jj_gen;
610       ;
611     }
612     jj_consume_token(RPAREN);
613   }
614
615   static final public void FormalParameter() throws ParseException {
616     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
617     case BIT_AND:
618       jj_consume_token(BIT_AND);
619       break;
620     default:
621       jj_la1[17] = jj_gen;
622       ;
623     }
624     VariableDeclarator();
625   }
626
627   static final public void Type() throws ParseException {
628     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
629     case STRING:
630       jj_consume_token(STRING);
631       break;
632     case BOOL:
633       jj_consume_token(BOOL);
634       break;
635     case BOOLEAN:
636       jj_consume_token(BOOLEAN);
637       break;
638     case REAL:
639       jj_consume_token(REAL);
640       break;
641     case DOUBLE:
642       jj_consume_token(DOUBLE);
643       break;
644     case FLOAT:
645       jj_consume_token(FLOAT);
646       break;
647     case INT:
648       jj_consume_token(INT);
649       break;
650     case INTEGER:
651       jj_consume_token(INTEGER);
652       break;
653     default:
654       jj_la1[18] = jj_gen;
655       jj_consume_token(-1);
656       throw new ParseException();
657     }
658   }
659
660   static final public void Expression() throws ParseException {
661     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
662     case PRINT:
663       PrintExpression();
664       break;
665     case ARRAY:
666     case FALSE:
667     case NEW:
668     case NULL:
669     case TRUE:
670     case INTEGER_LITERAL:
671     case FLOATING_POINT_LITERAL:
672     case STRING_LITERAL:
673     case IDENTIFIER:
674     case LPAREN:
675     case AT:
676     case DOLLAR:
677     case BANG:
678     case INCR:
679     case DECR:
680     case PLUS:
681     case MINUS:
682     case BIT_AND:
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 BIT_AND:
1105     case DOLLAR_ID:
1106       UnaryExpressionNotPlusMinus();
1107       break;
1108     default:
1109       jj_la1[42] = jj_gen;
1110       jj_consume_token(-1);
1111       throw new ParseException();
1112     }
1113   }
1114
1115   static final public void PreIncrementExpression() throws ParseException {
1116     jj_consume_token(INCR);
1117     PrimaryExpression();
1118   }
1119
1120   static final public void PreDecrementExpression() throws ParseException {
1121     jj_consume_token(DECR);
1122     PrimaryExpression();
1123   }
1124
1125   static final public void UnaryExpressionNotPlusMinus() throws ParseException {
1126     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1127     case BANG:
1128       jj_consume_token(BANG);
1129       UnaryExpression();
1130       break;
1131     default:
1132       jj_la1[43] = jj_gen;
1133       if (jj_2_3(2147483647)) {
1134         CastExpression();
1135       } else {
1136         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1137         case ARRAY:
1138         case NEW:
1139         case IDENTIFIER:
1140         case DOLLAR:
1141         case BIT_AND:
1142         case DOLLAR_ID:
1143           PostfixExpression();
1144           break;
1145         case FALSE:
1146         case NULL:
1147         case TRUE:
1148         case INTEGER_LITERAL:
1149         case FLOATING_POINT_LITERAL:
1150         case STRING_LITERAL:
1151           Literal();
1152           break;
1153         case LPAREN:
1154           jj_consume_token(LPAREN);
1155           Expression();
1156           jj_consume_token(RPAREN);
1157           break;
1158         default:
1159           jj_la1[44] = jj_gen;
1160           jj_consume_token(-1);
1161           throw new ParseException();
1162         }
1163       }
1164     }
1165   }
1166
1167   static final public void CastExpression() throws ParseException {
1168     jj_consume_token(LPAREN);
1169     Type();
1170     jj_consume_token(RPAREN);
1171     UnaryExpression();
1172   }
1173
1174   static final public void PostfixExpression() throws ParseException {
1175     PrimaryExpression();
1176     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1177     case INCR:
1178     case DECR:
1179       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1180       case INCR:
1181         jj_consume_token(INCR);
1182         break;
1183       case DECR:
1184         jj_consume_token(DECR);
1185         break;
1186       default:
1187         jj_la1[45] = jj_gen;
1188         jj_consume_token(-1);
1189         throw new ParseException();
1190       }
1191       break;
1192     default:
1193       jj_la1[46] = jj_gen;
1194       ;
1195     }
1196   }
1197
1198   static final public void PrimaryExpression() throws ParseException {
1199     if (jj_2_4(2)) {
1200       jj_consume_token(IDENTIFIER);
1201       jj_consume_token(STATICCLASSACCESS);
1202       ClassIdentifier();
1203       label_22:
1204       while (true) {
1205         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1206         case CLASSACCESS:
1207         case LPAREN:
1208         case LBRACKET:
1209           ;
1210           break;
1211         default:
1212           jj_la1[47] = jj_gen;
1213           break label_22;
1214         }
1215         PrimarySuffix();
1216       }
1217     } else {
1218       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1219       case NEW:
1220       case IDENTIFIER:
1221       case DOLLAR:
1222       case BIT_AND:
1223       case DOLLAR_ID:
1224         PrimaryPrefix();
1225         label_23:
1226         while (true) {
1227           switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1228           case CLASSACCESS:
1229           case LPAREN:
1230           case LBRACKET:
1231             ;
1232             break;
1233           default:
1234             jj_la1[48] = jj_gen;
1235             break label_23;
1236           }
1237           PrimarySuffix();
1238         }
1239         break;
1240       case ARRAY:
1241         jj_consume_token(ARRAY);
1242         ArrayInitializer();
1243         break;
1244       default:
1245         jj_la1[49] = jj_gen;
1246         jj_consume_token(-1);
1247         throw new ParseException();
1248       }
1249     }
1250   }
1251
1252   static final public void PrimaryPrefix() throws ParseException {
1253     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1254     case IDENTIFIER:
1255       jj_consume_token(IDENTIFIER);
1256       break;
1257     case NEW:
1258     case BIT_AND:
1259       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1260       case BIT_AND:
1261         jj_consume_token(BIT_AND);
1262         break;
1263       default:
1264         jj_la1[50] = jj_gen;
1265         ;
1266       }
1267       jj_consume_token(NEW);
1268       ClassIdentifier();
1269       break;
1270     case DOLLAR:
1271     case DOLLAR_ID:
1272       VariableDeclaratorId();
1273       break;
1274     default:
1275       jj_la1[51] = jj_gen;
1276       jj_consume_token(-1);
1277       throw new ParseException();
1278     }
1279   }
1280
1281   static final public void ClassIdentifier() throws ParseException {
1282     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1283     case IDENTIFIER:
1284       jj_consume_token(IDENTIFIER);
1285       break;
1286     case DOLLAR:
1287     case DOLLAR_ID:
1288       VariableDeclaratorId();
1289       break;
1290     default:
1291       jj_la1[52] = jj_gen;
1292       jj_consume_token(-1);
1293       throw new ParseException();
1294     }
1295   }
1296
1297   static final public void PrimarySuffix() throws ParseException {
1298     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1299     case LPAREN:
1300       Arguments();
1301       break;
1302     case CLASSACCESS:
1303     case LBRACKET:
1304       VariableSuffix();
1305       break;
1306     default:
1307       jj_la1[53] = jj_gen;
1308       jj_consume_token(-1);
1309       throw new ParseException();
1310     }
1311   }
1312
1313   static final public void VariableSuffix() throws ParseException {
1314     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1315     case CLASSACCESS:
1316       jj_consume_token(CLASSACCESS);
1317       VariableName();
1318       break;
1319     case LBRACKET:
1320       jj_consume_token(LBRACKET);
1321       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1322       case ARRAY:
1323       case PRINT:
1324       case FALSE:
1325       case NEW:
1326       case NULL:
1327       case TRUE:
1328       case INTEGER_LITERAL:
1329       case FLOATING_POINT_LITERAL:
1330       case STRING_LITERAL:
1331       case IDENTIFIER:
1332       case LPAREN:
1333       case AT:
1334       case DOLLAR:
1335       case BANG:
1336       case INCR:
1337       case DECR:
1338       case PLUS:
1339       case MINUS:
1340       case BIT_AND:
1341       case DOLLAR_ID:
1342         Expression();
1343         break;
1344       default:
1345         jj_la1[54] = jj_gen;
1346         ;
1347       }
1348       jj_consume_token(RBRACKET);
1349       break;
1350     default:
1351       jj_la1[55] = jj_gen;
1352       jj_consume_token(-1);
1353       throw new ParseException();
1354     }
1355   }
1356
1357   static final public void Literal() throws ParseException {
1358     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1359     case INTEGER_LITERAL:
1360       jj_consume_token(INTEGER_LITERAL);
1361       break;
1362     case FLOATING_POINT_LITERAL:
1363       jj_consume_token(FLOATING_POINT_LITERAL);
1364       break;
1365     case STRING_LITERAL:
1366       try {
1367         jj_consume_token(STRING_LITERAL);
1368       } catch (TokenMgrError e) {
1369     errorMessage = "unterminated string";
1370     errorLevel   = ERROR;
1371     {if (true) throw generateParseException();}
1372       }
1373       break;
1374     case FALSE:
1375     case TRUE:
1376       BooleanLiteral();
1377       break;
1378     case NULL:
1379       NullLiteral();
1380       break;
1381     default:
1382       jj_la1[56] = jj_gen;
1383       jj_consume_token(-1);
1384       throw new ParseException();
1385     }
1386   }
1387
1388   static final public void BooleanLiteral() throws ParseException {
1389     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1390     case TRUE:
1391       jj_consume_token(TRUE);
1392       break;
1393     case FALSE:
1394       jj_consume_token(FALSE);
1395       break;
1396     default:
1397       jj_la1[57] = jj_gen;
1398       jj_consume_token(-1);
1399       throw new ParseException();
1400     }
1401   }
1402
1403   static final public void NullLiteral() throws ParseException {
1404     jj_consume_token(NULL);
1405   }
1406
1407   static final public void Arguments() throws ParseException {
1408     jj_consume_token(LPAREN);
1409     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1410     case ARRAY:
1411     case PRINT:
1412     case FALSE:
1413     case NEW:
1414     case NULL:
1415     case TRUE:
1416     case INTEGER_LITERAL:
1417     case FLOATING_POINT_LITERAL:
1418     case STRING_LITERAL:
1419     case IDENTIFIER:
1420     case LPAREN:
1421     case AT:
1422     case DOLLAR:
1423     case BANG:
1424     case INCR:
1425     case DECR:
1426     case PLUS:
1427     case MINUS:
1428     case BIT_AND:
1429     case DOLLAR_ID:
1430       ArgumentList();
1431       break;
1432     default:
1433       jj_la1[58] = jj_gen;
1434       ;
1435     }
1436     try {
1437       jj_consume_token(RPAREN);
1438     } catch (ParseException e) {
1439     errorMessage = "')' expected to close the argument list";
1440     errorLevel   = ERROR;
1441     {if (true) throw e;}
1442     }
1443   }
1444
1445   static final public void ArgumentList() throws ParseException {
1446     Expression();
1447     label_24:
1448     while (true) {
1449       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1450       case COMMA:
1451         ;
1452         break;
1453       default:
1454         jj_la1[59] = jj_gen;
1455         break label_24;
1456       }
1457       jj_consume_token(COMMA);
1458       try {
1459         Expression();
1460       } catch (ParseException e) {
1461         errorMessage = "expression expected after a comma in argument list";
1462         errorLevel   = ERROR;
1463         {if (true) throw e;}
1464       }
1465     }
1466   }
1467
1468 /*
1469  * Statement syntax follows.
1470  */
1471   static final public void Statement() throws ParseException {
1472     if (jj_2_5(2)) {
1473       Expression();
1474       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1475       case SEMICOLON:
1476         jj_consume_token(SEMICOLON);
1477         break;
1478       case 127:
1479         jj_consume_token(127);
1480         break;
1481       default:
1482         jj_la1[60] = jj_gen;
1483         jj_consume_token(-1);
1484         throw new ParseException();
1485       }
1486     } else if (jj_2_6(2)) {
1487       LabeledStatement();
1488     } else {
1489       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1490       case LBRACE:
1491         Block();
1492         break;
1493       case SEMICOLON:
1494         EmptyStatement();
1495         break;
1496       case ARRAY:
1497       case NEW:
1498       case IDENTIFIER:
1499       case DOLLAR:
1500       case INCR:
1501       case DECR:
1502       case BIT_AND:
1503       case DOLLAR_ID:
1504         StatementExpression();
1505         try {
1506           jj_consume_token(SEMICOLON);
1507         } catch (ParseException e) {
1508     errorMessage = "';' expected after expression";
1509     errorLevel   = ERROR;
1510     {if (true) throw e;}
1511         }
1512         break;
1513       case SWITCH:
1514         SwitchStatement();
1515         break;
1516       case IF:
1517         IfStatement();
1518         break;
1519       case WHILE:
1520         WhileStatement();
1521         break;
1522       case DO:
1523         DoStatement();
1524         break;
1525       case FOR:
1526         ForStatement();
1527         break;
1528       case BREAK:
1529         BreakStatement();
1530         break;
1531       case CONTINUE:
1532         ContinueStatement();
1533         break;
1534       case RETURN:
1535         ReturnStatement();
1536         break;
1537       case ECHO:
1538         EchoStatement();
1539         break;
1540       case INCLUDE:
1541       case REQUIRE:
1542       case INCLUDE_ONCE:
1543       case REQUIRE_ONCE:
1544         IncludeStatement();
1545         break;
1546       case STATIC:
1547         StaticStatement();
1548         break;
1549       case GLOBAL:
1550         GlobalStatement();
1551         break;
1552       default:
1553         jj_la1[61] = jj_gen;
1554         jj_consume_token(-1);
1555         throw new ParseException();
1556       }
1557     }
1558   }
1559
1560   static final public void IncludeStatement() throws ParseException {
1561     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1562     case REQUIRE:
1563       jj_consume_token(REQUIRE);
1564       Expression();
1565       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1566       case SEMICOLON:
1567         jj_consume_token(SEMICOLON);
1568         break;
1569       case 127:
1570         jj_consume_token(127);
1571         break;
1572       default:
1573         jj_la1[62] = jj_gen;
1574         jj_consume_token(-1);
1575         throw new ParseException();
1576       }
1577       break;
1578     case REQUIRE_ONCE:
1579       jj_consume_token(REQUIRE_ONCE);
1580       Expression();
1581       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1582       case SEMICOLON:
1583         jj_consume_token(SEMICOLON);
1584         break;
1585       case 127:
1586         jj_consume_token(127);
1587         break;
1588       default:
1589         jj_la1[63] = jj_gen;
1590         jj_consume_token(-1);
1591         throw new ParseException();
1592       }
1593       break;
1594     case INCLUDE:
1595       jj_consume_token(INCLUDE);
1596       Expression();
1597       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1598       case SEMICOLON:
1599         jj_consume_token(SEMICOLON);
1600         break;
1601       case 127:
1602         jj_consume_token(127);
1603         break;
1604       default:
1605         jj_la1[64] = jj_gen;
1606         jj_consume_token(-1);
1607         throw new ParseException();
1608       }
1609       break;
1610     case INCLUDE_ONCE:
1611       jj_consume_token(INCLUDE_ONCE);
1612       Expression();
1613       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1614       case SEMICOLON:
1615         jj_consume_token(SEMICOLON);
1616         break;
1617       case 127:
1618         jj_consume_token(127);
1619         break;
1620       default:
1621         jj_la1[65] = jj_gen;
1622         jj_consume_token(-1);
1623         throw new ParseException();
1624       }
1625       break;
1626     default:
1627       jj_la1[66] = jj_gen;
1628       jj_consume_token(-1);
1629       throw new ParseException();
1630     }
1631   }
1632
1633   static final public void PrintExpression() throws ParseException {
1634     jj_consume_token(PRINT);
1635     Expression();
1636   }
1637
1638   static final public void EchoStatement() throws ParseException {
1639     jj_consume_token(ECHO);
1640     Expression();
1641     label_25:
1642     while (true) {
1643       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1644       case COMMA:
1645         ;
1646         break;
1647       default:
1648         jj_la1[67] = jj_gen;
1649         break label_25;
1650       }
1651       jj_consume_token(COMMA);
1652       Expression();
1653     }
1654     try {
1655       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1656       case SEMICOLON:
1657         jj_consume_token(SEMICOLON);
1658         break;
1659       case 127:
1660         jj_consume_token(127);
1661         break;
1662       default:
1663         jj_la1[68] = jj_gen;
1664         jj_consume_token(-1);
1665         throw new ParseException();
1666       }
1667     } catch (ParseException e) {
1668     errorMessage = "';' expected after 'echo' statement";
1669     errorLevel   = ERROR;
1670     {if (true) throw e;}
1671     }
1672   }
1673
1674   static final public void GlobalStatement() throws ParseException {
1675     jj_consume_token(GLOBAL);
1676     VariableDeclaratorId();
1677     label_26:
1678     while (true) {
1679       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1680       case COMMA:
1681         ;
1682         break;
1683       default:
1684         jj_la1[69] = jj_gen;
1685         break label_26;
1686       }
1687       jj_consume_token(COMMA);
1688       VariableDeclaratorId();
1689     }
1690     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1691     case SEMICOLON:
1692       jj_consume_token(SEMICOLON);
1693       break;
1694     case 127:
1695       jj_consume_token(127);
1696       break;
1697     default:
1698       jj_la1[70] = jj_gen;
1699       jj_consume_token(-1);
1700       throw new ParseException();
1701     }
1702   }
1703
1704   static final public void StaticStatement() throws ParseException {
1705     jj_consume_token(STATIC);
1706     VariableDeclarator();
1707     label_27:
1708     while (true) {
1709       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1710       case COMMA:
1711         ;
1712         break;
1713       default:
1714         jj_la1[71] = jj_gen;
1715         break label_27;
1716       }
1717       jj_consume_token(COMMA);
1718       VariableDeclarator();
1719     }
1720     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1721     case SEMICOLON:
1722       jj_consume_token(SEMICOLON);
1723       break;
1724     case 127:
1725       jj_consume_token(127);
1726       break;
1727     default:
1728       jj_la1[72] = jj_gen;
1729       jj_consume_token(-1);
1730       throw new ParseException();
1731     }
1732   }
1733
1734   static final public void LabeledStatement() throws ParseException {
1735     jj_consume_token(IDENTIFIER);
1736     jj_consume_token(COLON);
1737     Statement();
1738   }
1739
1740   static final public void Block() throws ParseException {
1741     jj_consume_token(LBRACE);
1742     label_28:
1743     while (true) {
1744       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1745       case CLASS:
1746       case FUNCTION:
1747       case IF:
1748       case ARRAY:
1749       case PRINT:
1750       case ECHO:
1751       case INCLUDE:
1752       case REQUIRE:
1753       case INCLUDE_ONCE:
1754       case REQUIRE_ONCE:
1755       case GLOBAL:
1756       case STATIC:
1757       case BREAK:
1758       case CONTINUE:
1759       case DO:
1760       case FALSE:
1761       case FOR:
1762       case NEW:
1763       case NULL:
1764       case RETURN:
1765       case SWITCH:
1766       case TRUE:
1767       case WHILE:
1768       case INTEGER_LITERAL:
1769       case FLOATING_POINT_LITERAL:
1770       case STRING_LITERAL:
1771       case IDENTIFIER:
1772       case LPAREN:
1773       case LBRACE:
1774       case SEMICOLON:
1775       case AT:
1776       case DOLLAR:
1777       case BANG:
1778       case INCR:
1779       case DECR:
1780       case PLUS:
1781       case MINUS:
1782       case BIT_AND:
1783       case DOLLAR_ID:
1784         ;
1785         break;
1786       default:
1787         jj_la1[73] = jj_gen;
1788         break label_28;
1789       }
1790       BlockStatement();
1791     }
1792     jj_consume_token(RBRACE);
1793   }
1794
1795   static final public void BlockStatement() throws ParseException {
1796     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1797     case IF:
1798     case ARRAY:
1799     case PRINT:
1800     case ECHO:
1801     case INCLUDE:
1802     case REQUIRE:
1803     case INCLUDE_ONCE:
1804     case REQUIRE_ONCE:
1805     case GLOBAL:
1806     case STATIC:
1807     case BREAK:
1808     case CONTINUE:
1809     case DO:
1810     case FALSE:
1811     case FOR:
1812     case NEW:
1813     case NULL:
1814     case RETURN:
1815     case SWITCH:
1816     case TRUE:
1817     case WHILE:
1818     case INTEGER_LITERAL:
1819     case FLOATING_POINT_LITERAL:
1820     case STRING_LITERAL:
1821     case IDENTIFIER:
1822     case LPAREN:
1823     case LBRACE:
1824     case SEMICOLON:
1825     case AT:
1826     case DOLLAR:
1827     case BANG:
1828     case INCR:
1829     case DECR:
1830     case PLUS:
1831     case MINUS:
1832     case BIT_AND:
1833     case DOLLAR_ID:
1834       Statement();
1835       break;
1836     case CLASS:
1837       ClassDeclaration();
1838       break;
1839     case FUNCTION:
1840       MethodDeclaration();
1841       break;
1842     default:
1843       jj_la1[74] = jj_gen;
1844       jj_consume_token(-1);
1845       throw new ParseException();
1846     }
1847   }
1848
1849   static final public void LocalVariableDeclaration() throws ParseException {
1850     VariableDeclarator();
1851     label_29:
1852     while (true) {
1853       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1854       case COMMA:
1855         ;
1856         break;
1857       default:
1858         jj_la1[75] = jj_gen;
1859         break label_29;
1860       }
1861       jj_consume_token(COMMA);
1862       VariableDeclarator();
1863     }
1864   }
1865
1866   static final public void EmptyStatement() throws ParseException {
1867     jj_consume_token(SEMICOLON);
1868   }
1869
1870   static final public void StatementExpression() throws ParseException {
1871     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1872     case INCR:
1873       PreIncrementExpression();
1874       break;
1875     case DECR:
1876       PreDecrementExpression();
1877       break;
1878     case ARRAY:
1879     case NEW:
1880     case IDENTIFIER:
1881     case DOLLAR:
1882     case BIT_AND:
1883     case DOLLAR_ID:
1884       PrimaryExpression();
1885       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1886       case ASSIGN:
1887       case INCR:
1888       case DECR:
1889       case PLUSASSIGN:
1890       case MINUSASSIGN:
1891       case STARASSIGN:
1892       case SLASHASSIGN:
1893       case ANDASSIGN:
1894       case ORASSIGN:
1895       case XORASSIGN:
1896       case DOTASSIGN:
1897       case REMASSIGN:
1898       case LSHIFTASSIGN:
1899       case RSIGNEDSHIFTASSIGN:
1900       case RUNSIGNEDSHIFTASSIGN:
1901         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1902         case INCR:
1903           jj_consume_token(INCR);
1904           break;
1905         case DECR:
1906           jj_consume_token(DECR);
1907           break;
1908         case ASSIGN:
1909         case PLUSASSIGN:
1910         case MINUSASSIGN:
1911         case STARASSIGN:
1912         case SLASHASSIGN:
1913         case ANDASSIGN:
1914         case ORASSIGN:
1915         case XORASSIGN:
1916         case DOTASSIGN:
1917         case REMASSIGN:
1918         case LSHIFTASSIGN:
1919         case RSIGNEDSHIFTASSIGN:
1920         case RUNSIGNEDSHIFTASSIGN:
1921           AssignmentOperator();
1922           Expression();
1923           break;
1924         default:
1925           jj_la1[76] = jj_gen;
1926           jj_consume_token(-1);
1927           throw new ParseException();
1928         }
1929         break;
1930       default:
1931         jj_la1[77] = jj_gen;
1932         ;
1933       }
1934       break;
1935     default:
1936       jj_la1[78] = jj_gen;
1937       jj_consume_token(-1);
1938       throw new ParseException();
1939     }
1940   }
1941
1942   static final public void SwitchStatement() throws ParseException {
1943     jj_consume_token(SWITCH);
1944     jj_consume_token(LPAREN);
1945     Expression();
1946     jj_consume_token(RPAREN);
1947     jj_consume_token(LBRACE);
1948     label_30:
1949     while (true) {
1950       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1951       case CASE:
1952       case _DEFAULT:
1953         ;
1954         break;
1955       default:
1956         jj_la1[79] = jj_gen;
1957         break label_30;
1958       }
1959       SwitchLabel();
1960       label_31:
1961       while (true) {
1962         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1963         case CLASS:
1964         case FUNCTION:
1965         case IF:
1966         case ARRAY:
1967         case PRINT:
1968         case ECHO:
1969         case INCLUDE:
1970         case REQUIRE:
1971         case INCLUDE_ONCE:
1972         case REQUIRE_ONCE:
1973         case GLOBAL:
1974         case STATIC:
1975         case BREAK:
1976         case CONTINUE:
1977         case DO:
1978         case FALSE:
1979         case FOR:
1980         case NEW:
1981         case NULL:
1982         case RETURN:
1983         case SWITCH:
1984         case TRUE:
1985         case WHILE:
1986         case INTEGER_LITERAL:
1987         case FLOATING_POINT_LITERAL:
1988         case STRING_LITERAL:
1989         case IDENTIFIER:
1990         case LPAREN:
1991         case LBRACE:
1992         case SEMICOLON:
1993         case AT:
1994         case DOLLAR:
1995         case BANG:
1996         case INCR:
1997         case DECR:
1998         case PLUS:
1999         case MINUS:
2000         case BIT_AND:
2001         case DOLLAR_ID:
2002           ;
2003           break;
2004         default:
2005           jj_la1[80] = jj_gen;
2006           break label_31;
2007         }
2008         BlockStatement();
2009       }
2010     }
2011     jj_consume_token(RBRACE);
2012   }
2013
2014   static final public void SwitchLabel() throws ParseException {
2015     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2016     case CASE:
2017       jj_consume_token(CASE);
2018       Expression();
2019       jj_consume_token(COLON);
2020       break;
2021     case _DEFAULT:
2022       jj_consume_token(_DEFAULT);
2023       jj_consume_token(COLON);
2024       break;
2025     default:
2026       jj_la1[81] = jj_gen;
2027       jj_consume_token(-1);
2028       throw new ParseException();
2029     }
2030   }
2031
2032   static final public void IfStatement() throws ParseException {
2033     jj_consume_token(IF);
2034     Condition("if");
2035     Statement();
2036     label_32:
2037     while (true) {
2038       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2039       case ELSEIF:
2040         ;
2041         break;
2042       default:
2043         jj_la1[82] = jj_gen;
2044         break label_32;
2045       }
2046       ElseIfStatement();
2047     }
2048     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2049     case ELSE:
2050       jj_consume_token(ELSE);
2051       Statement();
2052       break;
2053     default:
2054       jj_la1[83] = jj_gen;
2055       ;
2056     }
2057   }
2058
2059   static final public void Condition(String keyword) throws ParseException {
2060     try {
2061       jj_consume_token(LPAREN);
2062     } catch (ParseException e) {
2063     errorMessage = "'(' expected after " + keyword + " keyword";
2064     errorLevel   = ERROR;
2065     {if (true) throw e;}
2066     }
2067     Expression();
2068     try {
2069       jj_consume_token(RPAREN);
2070     } catch (ParseException e) {
2071     errorMessage = "')' expected after " + keyword + " keyword";
2072     errorLevel   = ERROR;
2073     {if (true) throw e;}
2074     }
2075   }
2076
2077   static final public void ElseIfStatement() throws ParseException {
2078     jj_consume_token(ELSEIF);
2079     Condition("elseif");
2080     Statement();
2081   }
2082
2083   static final public void WhileStatement() throws ParseException {
2084     jj_consume_token(WHILE);
2085     Condition("while");
2086     WhileStatement0();
2087   }
2088
2089   static final public void WhileStatement0() throws ParseException {
2090     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2091     case COLON:
2092       jj_consume_token(COLON);
2093       label_33:
2094       while (true) {
2095         switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2096         case IF:
2097         case ARRAY:
2098         case PRINT:
2099         case ECHO:
2100         case INCLUDE:
2101         case REQUIRE:
2102         case INCLUDE_ONCE:
2103         case REQUIRE_ONCE:
2104         case GLOBAL:
2105         case STATIC:
2106         case BREAK:
2107         case CONTINUE:
2108         case DO:
2109         case FALSE:
2110         case FOR:
2111         case NEW:
2112         case NULL:
2113         case RETURN:
2114         case SWITCH:
2115         case TRUE:
2116         case WHILE:
2117         case INTEGER_LITERAL:
2118         case FLOATING_POINT_LITERAL:
2119         case STRING_LITERAL:
2120         case IDENTIFIER:
2121         case LPAREN:
2122         case LBRACE:
2123         case SEMICOLON:
2124         case AT:
2125         case DOLLAR:
2126         case BANG:
2127         case INCR:
2128         case DECR:
2129         case PLUS:
2130         case MINUS:
2131         case BIT_AND:
2132         case DOLLAR_ID:
2133           ;
2134           break;
2135         default:
2136           jj_la1[84] = jj_gen;
2137           break label_33;
2138         }
2139         Statement();
2140       }
2141       jj_consume_token(ENDWHILE);
2142       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2143       case SEMICOLON:
2144         jj_consume_token(SEMICOLON);
2145         break;
2146       case 127:
2147         jj_consume_token(127);
2148         break;
2149       default:
2150         jj_la1[85] = jj_gen;
2151         jj_consume_token(-1);
2152         throw new ParseException();
2153       }
2154       break;
2155     case IF:
2156     case ARRAY:
2157     case PRINT:
2158     case ECHO:
2159     case INCLUDE:
2160     case REQUIRE:
2161     case INCLUDE_ONCE:
2162     case REQUIRE_ONCE:
2163     case GLOBAL:
2164     case STATIC:
2165     case BREAK:
2166     case CONTINUE:
2167     case DO:
2168     case FALSE:
2169     case FOR:
2170     case NEW:
2171     case NULL:
2172     case RETURN:
2173     case SWITCH:
2174     case TRUE:
2175     case WHILE:
2176     case INTEGER_LITERAL:
2177     case FLOATING_POINT_LITERAL:
2178     case STRING_LITERAL:
2179     case IDENTIFIER:
2180     case LPAREN:
2181     case LBRACE:
2182     case SEMICOLON:
2183     case AT:
2184     case DOLLAR:
2185     case BANG:
2186     case INCR:
2187     case DECR:
2188     case PLUS:
2189     case MINUS:
2190     case BIT_AND:
2191     case DOLLAR_ID:
2192       Statement();
2193       break;
2194     default:
2195       jj_la1[86] = jj_gen;
2196       jj_consume_token(-1);
2197       throw new ParseException();
2198     }
2199   }
2200
2201   static final public void DoStatement() throws ParseException {
2202     jj_consume_token(DO);
2203     Statement();
2204     jj_consume_token(WHILE);
2205     Condition("while");
2206     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2207     case SEMICOLON:
2208       jj_consume_token(SEMICOLON);
2209       break;
2210     case 127:
2211       jj_consume_token(127);
2212       break;
2213     default:
2214       jj_la1[87] = jj_gen;
2215       jj_consume_token(-1);
2216       throw new ParseException();
2217     }
2218   }
2219
2220   static final public void ForStatement() throws ParseException {
2221     jj_consume_token(FOR);
2222     jj_consume_token(LPAREN);
2223     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2224     case ARRAY:
2225     case NEW:
2226     case IDENTIFIER:
2227     case DOLLAR:
2228     case INCR:
2229     case DECR:
2230     case BIT_AND:
2231     case DOLLAR_ID:
2232       ForInit();
2233       break;
2234     default:
2235       jj_la1[88] = jj_gen;
2236       ;
2237     }
2238     jj_consume_token(SEMICOLON);
2239     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2240     case ARRAY:
2241     case PRINT:
2242     case FALSE:
2243     case NEW:
2244     case NULL:
2245     case TRUE:
2246     case INTEGER_LITERAL:
2247     case FLOATING_POINT_LITERAL:
2248     case STRING_LITERAL:
2249     case IDENTIFIER:
2250     case LPAREN:
2251     case AT:
2252     case DOLLAR:
2253     case BANG:
2254     case INCR:
2255     case DECR:
2256     case PLUS:
2257     case MINUS:
2258     case BIT_AND:
2259     case DOLLAR_ID:
2260       Expression();
2261       break;
2262     default:
2263       jj_la1[89] = jj_gen;
2264       ;
2265     }
2266     jj_consume_token(SEMICOLON);
2267     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2268     case ARRAY:
2269     case NEW:
2270     case IDENTIFIER:
2271     case DOLLAR:
2272     case INCR:
2273     case DECR:
2274     case BIT_AND:
2275     case DOLLAR_ID:
2276       ForUpdate();
2277       break;
2278     default:
2279       jj_la1[90] = jj_gen;
2280       ;
2281     }
2282     jj_consume_token(RPAREN);
2283     Statement();
2284   }
2285
2286   static final public void ForInit() throws ParseException {
2287     if (jj_2_7(2147483647)) {
2288       LocalVariableDeclaration();
2289     } else {
2290       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2291       case ARRAY:
2292       case NEW:
2293       case IDENTIFIER:
2294       case DOLLAR:
2295       case INCR:
2296       case DECR:
2297       case BIT_AND:
2298       case DOLLAR_ID:
2299         StatementExpressionList();
2300         break;
2301       default:
2302         jj_la1[91] = jj_gen;
2303         jj_consume_token(-1);
2304         throw new ParseException();
2305       }
2306     }
2307   }
2308
2309   static final public void StatementExpressionList() throws ParseException {
2310     StatementExpression();
2311     label_34:
2312     while (true) {
2313       switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2314       case COMMA:
2315         ;
2316         break;
2317       default:
2318         jj_la1[92] = jj_gen;
2319         break label_34;
2320       }
2321       jj_consume_token(COMMA);
2322       StatementExpression();
2323     }
2324   }
2325
2326   static final public void ForUpdate() throws ParseException {
2327     StatementExpressionList();
2328   }
2329
2330   static final public void BreakStatement() throws ParseException {
2331     jj_consume_token(BREAK);
2332     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2333     case IDENTIFIER:
2334       jj_consume_token(IDENTIFIER);
2335       break;
2336     default:
2337       jj_la1[93] = jj_gen;
2338       ;
2339     }
2340     jj_consume_token(SEMICOLON);
2341   }
2342
2343   static final public void ContinueStatement() throws ParseException {
2344     jj_consume_token(CONTINUE);
2345     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2346     case IDENTIFIER:
2347       jj_consume_token(IDENTIFIER);
2348       break;
2349     default:
2350       jj_la1[94] = jj_gen;
2351       ;
2352     }
2353     jj_consume_token(SEMICOLON);
2354   }
2355
2356   static final public void ReturnStatement() throws ParseException {
2357     jj_consume_token(RETURN);
2358     switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2359     case ARRAY:
2360     case PRINT:
2361     case FALSE:
2362     case NEW:
2363     case NULL:
2364     case TRUE:
2365     case INTEGER_LITERAL:
2366     case FLOATING_POINT_LITERAL:
2367     case STRING_LITERAL:
2368     case IDENTIFIER:
2369     case LPAREN:
2370     case AT:
2371     case DOLLAR:
2372     case BANG:
2373     case INCR:
2374     case DECR:
2375     case PLUS:
2376     case MINUS:
2377     case BIT_AND:
2378     case DOLLAR_ID:
2379       Expression();
2380       break;
2381     default:
2382       jj_la1[95] = jj_gen;
2383       ;
2384     }
2385     jj_consume_token(SEMICOLON);
2386   }
2387
2388   static final private boolean jj_2_1(int xla) {
2389     jj_la = xla; jj_lastpos = jj_scanpos = token;
2390     boolean retval = !jj_3_1();
2391     jj_save(0, xla);
2392     return retval;
2393   }
2394
2395   static final private boolean jj_2_2(int xla) {
2396     jj_la = xla; jj_lastpos = jj_scanpos = token;
2397     boolean retval = !jj_3_2();
2398     jj_save(1, xla);
2399     return retval;
2400   }
2401
2402   static final private boolean jj_2_3(int xla) {
2403     jj_la = xla; jj_lastpos = jj_scanpos = token;
2404     boolean retval = !jj_3_3();
2405     jj_save(2, xla);
2406     return retval;
2407   }
2408
2409   static final private boolean jj_2_4(int xla) {
2410     jj_la = xla; jj_lastpos = jj_scanpos = token;
2411     boolean retval = !jj_3_4();
2412     jj_save(3, xla);
2413     return retval;
2414   }
2415
2416   static final private boolean jj_2_5(int xla) {
2417     jj_la = xla; jj_lastpos = jj_scanpos = token;
2418     boolean retval = !jj_3_5();
2419     jj_save(4, xla);
2420     return retval;
2421   }
2422
2423   static final private boolean jj_2_6(int xla) {
2424     jj_la = xla; jj_lastpos = jj_scanpos = token;
2425     boolean retval = !jj_3_6();
2426     jj_save(5, xla);
2427     return retval;
2428   }
2429
2430   static final private boolean jj_2_7(int xla) {
2431     jj_la = xla; jj_lastpos = jj_scanpos = token;
2432     boolean retval = !jj_3_7();
2433     jj_save(6, xla);
2434     return retval;
2435   }
2436
2437   static final private boolean jj_3R_91() {
2438     if (jj_scan_token(SC_OR)) return true;
2439     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2440     return false;
2441   }
2442
2443   static final private boolean jj_3R_77() {
2444     if (jj_scan_token(REMASSIGN)) return true;
2445     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2446     return false;
2447   }
2448
2449   static final private boolean jj_3R_101() {
2450     if (jj_3R_103()) return true;
2451     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2452     Token xsp;
2453     while (true) {
2454       xsp = jj_scanpos;
2455       if (jj_3R_104()) { jj_scanpos = xsp; break; }
2456       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2457     }
2458     return false;
2459   }
2460
2461   static final private boolean jj_3R_73() {
2462     Token xsp;
2463     xsp = jj_scanpos;
2464     if (jj_3R_91()) {
2465     jj_scanpos = xsp;
2466     if (jj_3R_92()) return true;
2467     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2468     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2469     if (jj_3R_72()) return true;
2470     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2471     return false;
2472   }
2473
2474   static final private boolean jj_3R_96() {
2475     if (jj_scan_token(SC_AND)) return true;
2476     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2477     return false;
2478   }
2479
2480   static final private boolean jj_3R_90() {
2481     Token xsp;
2482     xsp = jj_scanpos;
2483     if (jj_3R_96()) {
2484     jj_scanpos = xsp;
2485     if (jj_3R_97()) return true;
2486     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2487     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2488     if (jj_3R_89()) return true;
2489     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2490     return false;
2491   }
2492
2493   static final private boolean jj_3R_98() {
2494     if (jj_3R_101()) return true;
2495     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2496     Token xsp;
2497     while (true) {
2498       xsp = jj_scanpos;
2499       if (jj_3R_102()) { jj_scanpos = xsp; break; }
2500       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2501     }
2502     return false;
2503   }
2504
2505   static final private boolean jj_3R_68() {
2506     if (jj_scan_token(HOOK)) return true;
2507     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2508     if (jj_3R_38()) return true;
2509     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2510     if (jj_scan_token(COLON)) return true;
2511     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2512     if (jj_3R_60()) return true;
2513     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2514     return false;
2515   }
2516
2517   static final private boolean jj_3R_94() {
2518     if (jj_3R_98()) return true;
2519     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2520     Token xsp;
2521     while (true) {
2522       xsp = jj_scanpos;
2523       if (jj_3R_99()) { jj_scanpos = xsp; break; }
2524       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2525     }
2526     return false;
2527   }
2528
2529   static final private boolean jj_3R_76() {
2530     if (jj_scan_token(SLASHASSIGN)) return true;
2531     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2532     return false;
2533   }
2534
2535   static final private boolean jj_3R_89() {
2536     if (jj_3R_94()) return true;
2537     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2538     Token xsp;
2539     while (true) {
2540       xsp = jj_scanpos;
2541       if (jj_3R_95()) { jj_scanpos = xsp; break; }
2542       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2543     }
2544     return false;
2545   }
2546
2547   static final private boolean jj_3R_72() {
2548     if (jj_3R_89()) return true;
2549     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2550     Token xsp;
2551     while (true) {
2552       xsp = jj_scanpos;
2553       if (jj_3R_90()) { jj_scanpos = xsp; break; }
2554       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2555     }
2556     return false;
2557   }
2558
2559   static final private boolean jj_3R_67() {
2560     if (jj_3R_72()) return true;
2561     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2562     Token xsp;
2563     while (true) {
2564       xsp = jj_scanpos;
2565       if (jj_3R_73()) { jj_scanpos = xsp; break; }
2566       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2567     }
2568     return false;
2569   }
2570
2571   static final private boolean jj_3R_75() {
2572     if (jj_scan_token(STARASSIGN)) return true;
2573     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2574     return false;
2575   }
2576
2577   static final private boolean jj_3R_60() {
2578     if (jj_3R_67()) return true;
2579     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2580     Token xsp;
2581     xsp = jj_scanpos;
2582     if (jj_3R_68()) jj_scanpos = xsp;
2583     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2584     return false;
2585   }
2586
2587   static final private boolean jj_3R_74() {
2588     if (jj_scan_token(ASSIGN)) return true;
2589     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2590     return false;
2591   }
2592
2593   static final private boolean jj_3R_69() {
2594     Token xsp;
2595     xsp = jj_scanpos;
2596     if (jj_3R_74()) {
2597     jj_scanpos = xsp;
2598     if (jj_3R_75()) {
2599     jj_scanpos = xsp;
2600     if (jj_3R_76()) {
2601     jj_scanpos = xsp;
2602     if (jj_3R_77()) {
2603     jj_scanpos = xsp;
2604     if (jj_3R_78()) {
2605     jj_scanpos = xsp;
2606     if (jj_3R_79()) {
2607     jj_scanpos = xsp;
2608     if (jj_3R_80()) {
2609     jj_scanpos = xsp;
2610     if (jj_3R_81()) {
2611     jj_scanpos = xsp;
2612     if (jj_3R_82()) {
2613     jj_scanpos = xsp;
2614     if (jj_3R_83()) {
2615     jj_scanpos = xsp;
2616     if (jj_3R_84()) {
2617     jj_scanpos = xsp;
2618     if (jj_3R_85()) {
2619     jj_scanpos = xsp;
2620     if (jj_3R_86()) return true;
2621     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2622     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2623     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2624     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2625     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2626     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2627     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2628     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2629     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2630     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2631     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2632     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2633     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2634     return false;
2635   }
2636
2637   static final private boolean jj_3R_61() {
2638     if (jj_3R_69()) return true;
2639     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2640     if (jj_3R_38()) return true;
2641     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2642     return false;
2643   }
2644
2645   static final private boolean jj_3R_56() {
2646     if (jj_scan_token(COMMA)) return true;
2647     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2648     if (jj_3R_55()) 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_54() {
2654     if (jj_3R_60()) return true;
2655     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2656     Token xsp;
2657     xsp = jj_scanpos;
2658     if (jj_3R_61()) jj_scanpos = xsp;
2659     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2660     return false;
2661   }
2662
2663   static final private boolean jj_3R_38() {
2664     Token xsp;
2665     xsp = jj_scanpos;
2666     if (jj_3R_53()) {
2667     jj_scanpos = xsp;
2668     if (jj_3R_54()) return true;
2669     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2670     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2671     return false;
2672   }
2673
2674   static final private boolean jj_3R_53() {
2675     if (jj_3R_59()) return true;
2676     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2677     return false;
2678   }
2679
2680   static final private boolean jj_3R_52() {
2681     if (jj_scan_token(INTEGER)) return true;
2682     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2683     return false;
2684   }
2685
2686   static final private boolean jj_3R_51() {
2687     if (jj_scan_token(INT)) return true;
2688     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2689     return false;
2690   }
2691
2692   static final private boolean jj_3R_50() {
2693     if (jj_scan_token(FLOAT)) return true;
2694     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2695     return false;
2696   }
2697
2698   static final private boolean jj_3R_49() {
2699     if (jj_scan_token(DOUBLE)) return true;
2700     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2701     return false;
2702   }
2703
2704   static final private boolean jj_3R_48() {
2705     if (jj_scan_token(REAL)) return true;
2706     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2707     return false;
2708   }
2709
2710   static final private boolean jj_3R_47() {
2711     if (jj_scan_token(BOOLEAN)) return true;
2712     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2713     return false;
2714   }
2715
2716   static final private boolean jj_3R_46() {
2717     if (jj_scan_token(BOOL)) return true;
2718     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2719     return false;
2720   }
2721
2722   static final private boolean jj_3R_42() {
2723     if (jj_3R_55()) return true;
2724     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2725     Token xsp;
2726     while (true) {
2727       xsp = jj_scanpos;
2728       if (jj_3R_56()) { jj_scanpos = xsp; break; }
2729       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2730     }
2731     return false;
2732   }
2733
2734   static final private boolean jj_3R_37() {
2735     Token xsp;
2736     xsp = jj_scanpos;
2737     if (jj_3R_45()) {
2738     jj_scanpos = xsp;
2739     if (jj_3R_46()) {
2740     jj_scanpos = xsp;
2741     if (jj_3R_47()) {
2742     jj_scanpos = xsp;
2743     if (jj_3R_48()) {
2744     jj_scanpos = xsp;
2745     if (jj_3R_49()) {
2746     jj_scanpos = xsp;
2747     if (jj_3R_50()) {
2748     jj_scanpos = xsp;
2749     if (jj_3R_51()) {
2750     jj_scanpos = xsp;
2751     if (jj_3R_52()) return true;
2752     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2753     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2754     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2755     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2756     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2757     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2758     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2759     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2760     return false;
2761   }
2762
2763   static final private boolean jj_3R_45() {
2764     if (jj_scan_token(STRING)) 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_41() {
2770     if (jj_scan_token(IDENTIFIER)) return true;
2771     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2772     if (jj_scan_token(COLON)) return true;
2773     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2774     return false;
2775   }
2776
2777   static final private boolean jj_3_2() {
2778     if (jj_scan_token(COMMA)) return true;
2779     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2780     if (jj_3R_36()) return true;
2781     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2782     return false;
2783   }
2784
2785   static final private boolean jj_3R_177() {
2786     if (jj_3R_36()) return true;
2787     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2788     Token xsp;
2789     while (true) {
2790       xsp = jj_scanpos;
2791       if (jj_3_2()) { jj_scanpos = xsp; break; }
2792       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2793     }
2794     return false;
2795   }
2796
2797   static final private boolean jj_3R_178() {
2798     if (jj_scan_token(ARRAYASSIGN)) return true;
2799     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2800     if (jj_3R_38()) return true;
2801     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2802     return false;
2803   }
2804
2805   static final private boolean jj_3R_59() {
2806     if (jj_scan_token(PRINT)) return true;
2807     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2808     if (jj_3R_38()) return true;
2809     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2810     return false;
2811   }
2812
2813   static final private boolean jj_3R_166() {
2814     if (jj_scan_token(LPAREN)) return true;
2815     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2816     Token xsp;
2817     xsp = jj_scanpos;
2818     if (jj_3R_177()) jj_scanpos = xsp;
2819     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2820     if (jj_scan_token(RPAREN)) return true;
2821     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2822     return false;
2823   }
2824
2825   static final private boolean jj_3R_36() {
2826     if (jj_3R_38()) return true;
2827     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2828     Token xsp;
2829     while (true) {
2830       xsp = jj_scanpos;
2831       if (jj_3R_178()) { jj_scanpos = xsp; break; }
2832       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2833     }
2834     return false;
2835   }
2836
2837   static final private boolean jj_3R_100() {
2838     if (jj_scan_token(LBRACE)) return true;
2839     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2840     if (jj_3R_38()) return true;
2841     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2842     if (jj_scan_token(RBRACE)) return true;
2843     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2844     return false;
2845   }
2846
2847   static final private boolean jj_3R_71() {
2848     if (jj_3R_38()) return true;
2849     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2850     return false;
2851   }
2852
2853   static final private boolean jj_3R_93() {
2854     if (jj_scan_token(LBRACE)) return true;
2855     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2856     if (jj_3R_38()) return true;
2857     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2858     if (jj_scan_token(RBRACE)) return true;
2859     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2860     return false;
2861   }
2862
2863   static final private boolean jj_3R_63() {
2864     if (jj_scan_token(ASSIGN)) return true;
2865     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2866     if (jj_3R_71()) return true;
2867     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2868     return false;
2869   }
2870
2871   static final private boolean jj_3R_66() {
2872     if (jj_scan_token(DOLLAR)) return true;
2873     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2874     if (jj_3R_57()) return true;
2875     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2876     return false;
2877   }
2878
2879   static final private boolean jj_3R_65() {
2880     if (jj_scan_token(IDENTIFIER)) return true;
2881     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2882     Token xsp;
2883     while (true) {
2884       xsp = jj_scanpos;
2885       if (jj_3R_100()) { jj_scanpos = xsp; break; }
2886       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2887     }
2888     return false;
2889   }
2890
2891   static final private boolean jj_3R_64() {
2892     if (jj_scan_token(LBRACE)) return true;
2893     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2894     if (jj_3R_38()) return true;
2895     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2896     if (jj_scan_token(RBRACE)) return true;
2897     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2898     return false;
2899   }
2900
2901   static final private boolean jj_3R_57() {
2902     Token xsp;
2903     xsp = jj_scanpos;
2904     if (jj_3R_64()) {
2905     jj_scanpos = xsp;
2906     if (jj_3R_65()) {
2907     jj_scanpos = xsp;
2908     if (jj_3R_66()) return true;
2909     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2910     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2911     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2912     return false;
2913   }
2914
2915   static final private boolean jj_3_1() {
2916     if (jj_3R_35()) return true;
2917     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2918     return false;
2919   }
2920
2921   static final private boolean jj_3R_40() {
2922     if (jj_scan_token(127)) 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_88() {
2928     if (jj_scan_token(DOLLAR)) return true;
2929     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2930     if (jj_3R_57()) return true;
2931     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2932     return false;
2933   }
2934
2935   static final private boolean jj_3R_87() {
2936     if (jj_scan_token(DOLLAR_ID)) return true;
2937     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2938     Token xsp;
2939     while (true) {
2940       xsp = jj_scanpos;
2941       if (jj_3R_93()) { jj_scanpos = xsp; break; }
2942       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2943     }
2944     return false;
2945   }
2946
2947   static final private boolean jj_3R_70() {
2948     Token xsp;
2949     xsp = jj_scanpos;
2950     if (jj_3R_87()) {
2951     jj_scanpos = xsp;
2952     if (jj_3R_88()) return true;
2953     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2954     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2955     return false;
2956   }
2957
2958   static final private boolean jj_3R_62() {
2959     if (jj_3R_70()) return true;
2960     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2961     Token xsp;
2962     while (true) {
2963       xsp = jj_scanpos;
2964       if (jj_3_1()) { jj_scanpos = xsp; break; }
2965       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2966     }
2967     return false;
2968   }
2969
2970   static final private boolean jj_3R_39() {
2971     if (jj_scan_token(SEMICOLON)) return true;
2972     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2973     return false;
2974   }
2975
2976   static final private boolean jj_3R_55() {
2977     if (jj_3R_62()) return true;
2978     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2979     Token xsp;
2980     xsp = jj_scanpos;
2981     if (jj_3R_63()) jj_scanpos = xsp;
2982     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2983     return false;
2984   }
2985
2986   static final private boolean jj_3_6() {
2987     if (jj_3R_41()) return true;
2988     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2989     return false;
2990   }
2991
2992   static final private boolean jj_3_5() {
2993     if (jj_3R_38()) return true;
2994     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
2995     Token xsp;
2996     xsp = jj_scanpos;
2997     if (jj_3R_39()) {
2998     jj_scanpos = xsp;
2999     if (jj_3R_40()) return true;
3000     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3001     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3002     return false;
3003   }
3004
3005   static final private boolean jj_3R_181() {
3006     if (jj_scan_token(COMMA)) return true;
3007     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3008     if (jj_3R_38()) return true;
3009     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3010     return false;
3011   }
3012
3013   static final private boolean jj_3R_180() {
3014     if (jj_3R_38()) return true;
3015     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3016     Token xsp;
3017     while (true) {
3018       xsp = jj_scanpos;
3019       if (jj_3R_181()) { jj_scanpos = xsp; break; }
3020       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3021     }
3022     return false;
3023   }
3024
3025   static final private boolean jj_3R_179() {
3026     if (jj_3R_180()) return true;
3027     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3028     return false;
3029   }
3030
3031   static final private boolean jj_3R_176() {
3032     if (jj_scan_token(LPAREN)) return true;
3033     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3034     Token xsp;
3035     xsp = jj_scanpos;
3036     if (jj_3R_179()) jj_scanpos = xsp;
3037     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3038     if (jj_scan_token(RPAREN)) return true;
3039     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3040     return false;
3041   }
3042
3043   static final private boolean jj_3R_163() {
3044     if (jj_scan_token(NULL)) return true;
3045     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3046     return false;
3047   }
3048
3049   static final private boolean jj_3R_168() {
3050     if (jj_scan_token(FALSE)) return true;
3051     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3052     return false;
3053   }
3054
3055   static final private boolean jj_3R_162() {
3056     Token xsp;
3057     xsp = jj_scanpos;
3058     if (jj_3R_167()) {
3059     jj_scanpos = xsp;
3060     if (jj_3R_168()) return true;
3061     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3062     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3063     return false;
3064   }
3065
3066   static final private boolean jj_3R_167() {
3067     if (jj_scan_token(TRUE)) return true;
3068     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3069     return false;
3070   }
3071
3072   static final private boolean jj_3R_86() {
3073     if (jj_scan_token(DOTASSIGN)) return true;
3074     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3075     return false;
3076   }
3077
3078   static final private boolean jj_3R_156() {
3079     if (jj_3R_163()) return true;
3080     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3081     return false;
3082   }
3083
3084   static final private boolean jj_3R_155() {
3085     if (jj_3R_162()) 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_173() {
3091     if (jj_3R_169()) 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_58() {
3097     if (jj_3R_38()) 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_85() {
3103     if (jj_scan_token(ORASSIGN)) 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_154() {
3109     if (jj_scan_token(STRING_LITERAL)) 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_153() {
3115     if (jj_scan_token(FLOATING_POINT_LITERAL)) 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_149() {
3121     Token xsp;
3122     xsp = jj_scanpos;
3123     if (jj_3R_152()) {
3124     jj_scanpos = xsp;
3125     if (jj_3R_153()) {
3126     jj_scanpos = xsp;
3127     if (jj_3R_154()) {
3128     jj_scanpos = xsp;
3129     if (jj_3R_155()) {
3130     jj_scanpos = xsp;
3131     if (jj_3R_156()) return true;
3132     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3133     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3134     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3135     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3136     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3137     return false;
3138   }
3139
3140   static final private boolean jj_3R_152() {
3141     if (jj_scan_token(INTEGER_LITERAL)) return true;
3142     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3143     return false;
3144   }
3145
3146   static final private boolean jj_3R_44() {
3147     if (jj_scan_token(LBRACKET)) return true;
3148     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3149     Token xsp;
3150     xsp = jj_scanpos;
3151     if (jj_3R_58()) jj_scanpos = xsp;
3152     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3153     if (jj_scan_token(RBRACKET)) return true;
3154     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3155     return false;
3156   }
3157
3158   static final private boolean jj_3R_43() {
3159     if (jj_scan_token(CLASSACCESS)) return true;
3160     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3161     if (jj_3R_57()) return true;
3162     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3163     return false;
3164   }
3165
3166   static final private boolean jj_3R_35() {
3167     Token xsp;
3168     xsp = jj_scanpos;
3169     if (jj_3R_43()) {
3170     jj_scanpos = xsp;
3171     if (jj_3R_44()) return true;
3172     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3173     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3174     return false;
3175   }
3176
3177   static final private boolean jj_3R_84() {
3178     if (jj_scan_token(XORASSIGN)) return true;
3179     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3180     return false;
3181   }
3182
3183   static final private boolean jj_3R_172() {
3184     if (jj_3R_35()) return true;
3185     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3186     return false;
3187   }
3188
3189   static final private boolean jj_3R_171() {
3190     if (jj_3R_176()) return true;
3191     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3192     return false;
3193   }
3194
3195   static final private boolean jj_3R_169() {
3196     Token xsp;
3197     xsp = jj_scanpos;
3198     if (jj_3R_171()) {
3199     jj_scanpos = xsp;
3200     if (jj_3R_172()) return true;
3201     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3202     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3203     return false;
3204   }
3205
3206   static final private boolean jj_3R_161() {
3207     if (jj_scan_token(DECR)) return true;
3208     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3209     return false;
3210   }
3211
3212   static final private boolean jj_3R_175() {
3213     if (jj_3R_62()) return true;
3214     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3215     return false;
3216   }
3217
3218   static final private boolean jj_3R_174() {
3219     if (jj_scan_token(IDENTIFIER)) return true;
3220     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3221     return false;
3222   }
3223
3224   static final private boolean jj_3R_83() {
3225     if (jj_scan_token(ANDASSIGN)) return true;
3226     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3227     return false;
3228   }
3229
3230   static final private boolean jj_3R_165() {
3231     if (jj_3R_169()) return true;
3232     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3233     return false;
3234   }
3235
3236   static final private boolean jj_3R_170() {
3237     Token xsp;
3238     xsp = jj_scanpos;
3239     if (jj_3R_174()) {
3240     jj_scanpos = xsp;
3241     if (jj_3R_175()) return true;
3242     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3243     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3244     return false;
3245   }
3246
3247   static final private boolean jj_3R_151() {
3248     Token xsp;
3249     xsp = jj_scanpos;
3250     if (jj_3R_160()) {
3251     jj_scanpos = xsp;
3252     if (jj_3R_161()) return true;
3253     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3254     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3255     return false;
3256   }
3257
3258   static final private boolean jj_3R_160() {
3259     if (jj_scan_token(INCR)) return true;
3260     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3261     return false;
3262   }
3263
3264   static final private boolean jj_3R_159() {
3265     if (jj_3R_62()) 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_164() {
3271     if (jj_scan_token(BIT_AND)) 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_158() {
3277     Token xsp;
3278     xsp = jj_scanpos;
3279     if (jj_3R_164()) jj_scanpos = xsp;
3280     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3281     if (jj_scan_token(NEW)) return true;
3282     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3283     if (jj_3R_170()) return true;
3284     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3285     return false;
3286   }
3287
3288   static final private boolean jj_3R_150() {
3289     Token xsp;
3290     xsp = jj_scanpos;
3291     if (jj_3R_157()) {
3292     jj_scanpos = xsp;
3293     if (jj_3R_158()) {
3294     jj_scanpos = xsp;
3295     if (jj_3R_159()) return true;
3296     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3297     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3298     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3299     return false;
3300   }
3301
3302   static final private boolean jj_3R_157() {
3303     if (jj_scan_token(IDENTIFIER)) return true;
3304     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3305     return false;
3306   }
3307
3308   static final private boolean jj_3R_146() {
3309     if (jj_scan_token(ARRAY)) return true;
3310     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3311     if (jj_3R_166()) 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_145() {
3317     if (jj_3R_150()) return true;
3318     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3319     Token xsp;
3320     while (true) {
3321       xsp = jj_scanpos;
3322       if (jj_3R_165()) { jj_scanpos = xsp; break; }
3323       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3324     }
3325     return false;
3326   }
3327
3328   static final private boolean jj_3_4() {
3329     if (jj_scan_token(IDENTIFIER)) return true;
3330     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3331     if (jj_scan_token(STATICCLASSACCESS)) return true;
3332     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3333     if (jj_3R_170()) return true;
3334     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3335     Token xsp;
3336     while (true) {
3337       xsp = jj_scanpos;
3338       if (jj_3R_173()) { jj_scanpos = xsp; break; }
3339       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3340     }
3341     return false;
3342   }
3343
3344   static final private boolean jj_3R_139() {
3345     Token xsp;
3346     xsp = jj_scanpos;
3347     if (jj_3_4()) {
3348     jj_scanpos = xsp;
3349     if (jj_3R_145()) {
3350     jj_scanpos = xsp;
3351     if (jj_3R_146()) return true;
3352     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3353     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3354     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3355     return false;
3356   }
3357
3358   static final private boolean jj_3R_82() {
3359     if (jj_scan_token(RUNSIGNEDSHIFTASSIGN)) 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_148() {
3365     if (jj_3R_139()) return true;
3366     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3367     Token xsp;
3368     xsp = jj_scanpos;
3369     if (jj_3R_151()) jj_scanpos = xsp;
3370     else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3371     return false;
3372   }
3373
3374   static final private boolean jj_3R_147() {
3375     if (jj_scan_token(LPAREN)) return true;
3376     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3377     if (jj_3R_37()) return true;
3378     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3379     if (jj_scan_token(RPAREN)) return true;
3380     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3381     if (jj_3R_122()) return true;
3382     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3383     return false;
3384   }
3385
3386   static final private boolean jj_3_3() {
3387     if (jj_scan_token(LPAREN)) return true;
3388     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3389     if (jj_3R_37()) return true;
3390     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3391     if (jj_scan_token(RPAREN)) return true;
3392     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3393     return false;
3394   }
3395
3396   static final private boolean jj_3R_121() {
3397     if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
3398     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3399     return false;
3400   }
3401
3402   static final private boolean jj_3R_133() {
3403     if (jj_scan_token(REM)) return true;
3404     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3405     return false;
3406   }
3407
3408   static final private boolean jj_3R_144() {
3409     if (jj_scan_token(LPAREN)) return true;
3410     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3411     if (jj_3R_38()) return true;
3412     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3413     if (jj_scan_token(RPAREN)) return true;
3414     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3415     return false;
3416   }
3417
3418   static final private boolean jj_3R_143() {
3419     if (jj_3R_149()) return true;
3420     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3421     return false;
3422   }
3423
3424   static final private boolean jj_3R_142() {
3425     if (jj_3R_148()) return true;
3426     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3427     return false;
3428   }
3429
3430   static final private boolean jj_3R_125() {
3431     if (jj_scan_token(MINUS)) return true;
3432     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3433     return false;
3434   }
3435
3436   static final private boolean jj_3R_141() {
3437     if (jj_3R_147()) return true;
3438     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3439     return false;
3440   }
3441
3442   static final private boolean jj_3R_81() {
3443     if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
3444     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3445     return false;
3446   }
3447
3448   static final private boolean jj_3R_138() {
3449     Token xsp;
3450     xsp = jj_scanpos;
3451     if (jj_3R_140()) {
3452     jj_scanpos = xsp;
3453     if (jj_3R_141()) {
3454     jj_scanpos = xsp;
3455     if (jj_3R_142()) {
3456     jj_scanpos = xsp;
3457     if (jj_3R_143()) {
3458     jj_scanpos = xsp;
3459     if (jj_3R_144()) return true;
3460     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3461     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3462     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3463     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3464     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3465     return false;
3466   }
3467
3468   static final private boolean jj_3R_140() {
3469     if (jj_scan_token(BANG)) return true;
3470     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3471     if (jj_3R_122()) return true;
3472     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3473     return false;
3474   }
3475
3476   static final private boolean jj_3R_132() {
3477     if (jj_scan_token(SLASH)) return true;
3478     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3479     return false;
3480   }
3481
3482   static final private boolean jj_3R_137() {
3483     if (jj_scan_token(DECR)) return true;
3484     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3485     if (jj_3R_139()) return true;
3486     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3487     return false;
3488   }
3489
3490   static final private boolean jj_3R_116() {
3491     if (jj_scan_token(GE)) return true;
3492     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3493     return false;
3494   }
3495
3496   static final private boolean jj_3R_124() {
3497     if (jj_scan_token(PLUS)) return true;
3498     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3499     return false;
3500   }
3501
3502   static final private boolean jj_3R_120() {
3503     if (jj_scan_token(RSIGNEDSHIFT)) return true;
3504     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3505     return false;
3506   }
3507
3508   static final private boolean jj_3R_118() {
3509     Token xsp;
3510     xsp = jj_scanpos;
3511     if (jj_3R_124()) {
3512     jj_scanpos = xsp;
3513     if (jj_3R_125()) return true;
3514     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3515     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3516     if (jj_3R_117()) return true;
3517     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3518     return false;
3519   }
3520
3521   static final private boolean jj_3R_131() {
3522     if (jj_scan_token(STAR)) return true;
3523     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3524     return false;
3525   }
3526
3527   static final private boolean jj_3_7() {
3528     if (jj_3R_42()) return true;
3529     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3530     return false;
3531   }
3532
3533   static final private boolean jj_3R_123() {
3534     Token xsp;
3535     xsp = jj_scanpos;
3536     if (jj_3R_131()) {
3537     jj_scanpos = xsp;
3538     if (jj_3R_132()) {
3539     jj_scanpos = xsp;
3540     if (jj_3R_133()) return true;
3541     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3542     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3543     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3544     if (jj_3R_122()) return true;
3545     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3546     return false;
3547   }
3548
3549   static final private boolean jj_3R_136() {
3550     if (jj_scan_token(INCR)) return true;
3551     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3552     if (jj_3R_139()) return true;
3553     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3554     return false;
3555   }
3556
3557   static final private boolean jj_3R_135() {
3558     if (jj_scan_token(MINUS)) return true;
3559     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3560     return false;
3561   }
3562
3563   static final private boolean jj_3R_115() {
3564     if (jj_scan_token(LE)) return true;
3565     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3566     return false;
3567   }
3568
3569   static final private boolean jj_3R_80() {
3570     if (jj_scan_token(LSHIFTASSIGN)) return true;
3571     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3572     return false;
3573   }
3574
3575   static final private boolean jj_3R_130() {
3576     if (jj_3R_138()) return true;
3577     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3578     return false;
3579   }
3580
3581   static final private boolean jj_3R_119() {
3582     if (jj_scan_token(LSHIFT)) return true;
3583     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3584     return false;
3585   }
3586
3587   static final private boolean jj_3R_129() {
3588     if (jj_3R_137()) return true;
3589     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3590     return false;
3591   }
3592
3593   static final private boolean jj_3R_112() {
3594     Token xsp;
3595     xsp = jj_scanpos;
3596     if (jj_3R_119()) {
3597     jj_scanpos = xsp;
3598     if (jj_3R_120()) {
3599     jj_scanpos = xsp;
3600     if (jj_3R_121()) return true;
3601     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3602     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3603     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3604     if (jj_3R_111()) return true;
3605     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3606     return false;
3607   }
3608
3609   static final private boolean jj_3R_114() {
3610     if (jj_scan_token(GT)) return true;
3611     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3612     return false;
3613   }
3614
3615   static final private boolean jj_3R_110() {
3616     if (jj_scan_token(NE)) return true;
3617     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3618     return false;
3619   }
3620
3621   static final private boolean jj_3R_128() {
3622     if (jj_3R_136()) return true;
3623     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3624     return false;
3625   }
3626
3627   static final private boolean jj_3R_134() {
3628     if (jj_scan_token(PLUS)) return true;
3629     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3630     return false;
3631   }
3632
3633   static final private boolean jj_3R_127() {
3634     Token xsp;
3635     xsp = jj_scanpos;
3636     if (jj_3R_134()) {
3637     jj_scanpos = xsp;
3638     if (jj_3R_135()) return true;
3639     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3640     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3641     if (jj_3R_122()) return true;
3642     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3643     return false;
3644   }
3645
3646   static final private boolean jj_3R_122() {
3647     Token xsp;
3648     xsp = jj_scanpos;
3649     if (jj_3R_126()) {
3650     jj_scanpos = xsp;
3651     if (jj_3R_127()) {
3652     jj_scanpos = xsp;
3653     if (jj_3R_128()) {
3654     jj_scanpos = xsp;
3655     if (jj_3R_129()) {
3656     jj_scanpos = xsp;
3657     if (jj_3R_130()) return true;
3658     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3659     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3660     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3661     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3662     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3663     return false;
3664   }
3665
3666   static final private boolean jj_3R_126() {
3667     if (jj_scan_token(AT)) return true;
3668     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3669     if (jj_3R_122()) return true;
3670     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3671     return false;
3672   }
3673
3674   static final private boolean jj_3R_113() {
3675     if (jj_scan_token(LT)) return true;
3676     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3677     return false;
3678   }
3679
3680   static final private boolean jj_3R_109() {
3681     if (jj_scan_token(EQ)) return true;
3682     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3683     return false;
3684   }
3685
3686   static final private boolean jj_3R_108() {
3687     Token xsp;
3688     xsp = jj_scanpos;
3689     if (jj_3R_113()) {
3690     jj_scanpos = xsp;
3691     if (jj_3R_114()) {
3692     jj_scanpos = xsp;
3693     if (jj_3R_115()) {
3694     jj_scanpos = xsp;
3695     if (jj_3R_116()) return true;
3696     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3697     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3698     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3699     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3700     if (jj_3R_107()) return true;
3701     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3702     return false;
3703   }
3704
3705   static final private boolean jj_3R_106() {
3706     Token xsp;
3707     xsp = jj_scanpos;
3708     if (jj_3R_109()) {
3709     jj_scanpos = xsp;
3710     if (jj_3R_110()) return true;
3711     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3712     } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3713     if (jj_3R_105()) return true;
3714     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3715     return false;
3716   }
3717
3718   static final private boolean jj_3R_117() {
3719     if (jj_3R_122()) return true;
3720     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3721     Token xsp;
3722     while (true) {
3723       xsp = jj_scanpos;
3724       if (jj_3R_123()) { jj_scanpos = xsp; break; }
3725       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3726     }
3727     return false;
3728   }
3729
3730   static final private boolean jj_3R_79() {
3731     if (jj_scan_token(MINUSASSIGN)) return true;
3732     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3733     return false;
3734   }
3735
3736   static final private boolean jj_3R_111() {
3737     if (jj_3R_117()) return true;
3738     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3739     Token xsp;
3740     while (true) {
3741       xsp = jj_scanpos;
3742       if (jj_3R_118()) { jj_scanpos = xsp; break; }
3743       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3744     }
3745     return false;
3746   }
3747
3748   static final private boolean jj_3R_104() {
3749     if (jj_scan_token(BIT_AND)) return true;
3750     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3751     if (jj_3R_103()) return true;
3752     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3753     return false;
3754   }
3755
3756   static final private boolean jj_3R_107() {
3757     if (jj_3R_111()) return true;
3758     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3759     Token xsp;
3760     while (true) {
3761       xsp = jj_scanpos;
3762       if (jj_3R_112()) { jj_scanpos = xsp; break; }
3763       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3764     }
3765     return false;
3766   }
3767
3768   static final private boolean jj_3R_78() {
3769     if (jj_scan_token(PLUSASSIGN)) return true;
3770     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3771     return false;
3772   }
3773
3774   static final private boolean jj_3R_99() {
3775     if (jj_scan_token(BIT_OR)) return true;
3776     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3777     if (jj_3R_98()) return true;
3778     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3779     return false;
3780   }
3781
3782   static final private boolean jj_3R_102() {
3783     if (jj_scan_token(XOR)) return true;
3784     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3785     if (jj_3R_101()) return true;
3786     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3787     return false;
3788   }
3789
3790   static final private boolean jj_3R_105() {
3791     if (jj_3R_107()) return true;
3792     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3793     Token xsp;
3794     while (true) {
3795       xsp = jj_scanpos;
3796       if (jj_3R_108()) { jj_scanpos = xsp; break; }
3797       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3798     }
3799     return false;
3800   }
3801
3802   static final private boolean jj_3R_92() {
3803     if (jj_scan_token(_ORL)) return true;
3804     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3805     return false;
3806   }
3807
3808   static final private boolean jj_3R_97() {
3809     if (jj_scan_token(_ANDL)) return true;
3810     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3811     return false;
3812   }
3813
3814   static final private boolean jj_3R_95() {
3815     if (jj_scan_token(DOT)) return true;
3816     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3817     if (jj_3R_94()) return true;
3818     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3819     return false;
3820   }
3821
3822   static final private boolean jj_3R_103() {
3823     if (jj_3R_105()) return true;
3824     if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3825     Token xsp;
3826     while (true) {
3827       xsp = jj_scanpos;
3828       if (jj_3R_106()) { jj_scanpos = xsp; break; }
3829       if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
3830     }
3831     return false;
3832   }
3833
3834   static private boolean jj_initialized_once = false;
3835   static public PHPParserTokenManager token_source;
3836   static SimpleCharStream jj_input_stream;
3837   static public Token token, jj_nt;
3838   static private int jj_ntk;
3839   static private Token jj_scanpos, jj_lastpos;
3840   static private int jj_la;
3841   static public boolean lookingAhead = false;
3842   static private boolean jj_semLA;
3843   static private int jj_gen;
3844   static final private int[] jj_la1 = new int[96];
3845   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,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,};
3846   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,0x0,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,};
3847   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,0x0,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,};
3848   static final private int[] jj_la1_3 = {0x0,0x400009e0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x0,0x0,0x0,0x400009e0,0x0,0x800,0x0,0x40000800,0x800,0x0,0x3ffc0000,0x400009e0,0x3ffc0000,0x0,0x8,0x8,0x10,0x10,0x0,0x1000,0x2000,0x800,0x4,0x4,0x3,0x3,0x38000,0x38000,0x180,0x180,0x4600,0x4600,0x180,0x400009e0,0x0,0x40000800,0x60,0x60,0x0,0x0,0x40000800,0x800,0x40000800,0x40000000,0x0,0x400009e0,0x0,0x0,0x0,0x400009e0,0x0,0x80000000,0x40000860,0x80000000,0x80000000,0x80000000,0x80000000,0x0,0x0,0x80000000,0x0,0x80000000,0x0,0x80000000,0x400009e0,0x400009e0,0x0,0x3ffc0060,0x3ffc0060,0x40000860,0x0,0x400009e0,0x0,0x0,0x0,0x400009e0,0x80000000,0x400009e0,0x80000000,0x40000860,0x400009e0,0x40000860,0x40000860,0x0,0x0,0x0,0x400009e0,};
3849   static final private JJCalls[] jj_2_rtns = new JJCalls[7];
3850   static private boolean jj_rescan = false;
3851   static private int jj_gc = 0;
3852
3853   public PHPParser(java.io.InputStream stream) {
3854     if (jj_initialized_once) {
3855       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3856       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3857       System.out.println("       during parser generation.");
3858       throw new Error();
3859     }
3860     jj_initialized_once = true;
3861     jj_input_stream = new SimpleCharStream(stream, 1, 1);
3862     token_source = new PHPParserTokenManager(jj_input_stream);
3863     token = new Token();
3864     jj_ntk = -1;
3865     jj_gen = 0;
3866     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3867     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3868   }
3869
3870   static public void ReInit(java.io.InputStream stream) {
3871     jj_input_stream.ReInit(stream, 1, 1);
3872     token_source.ReInit(jj_input_stream);
3873     token = new Token();
3874     jj_ntk = -1;
3875     jj_gen = 0;
3876     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3877     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3878   }
3879
3880   public PHPParser(java.io.Reader stream) {
3881     if (jj_initialized_once) {
3882       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3883       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3884       System.out.println("       during parser generation.");
3885       throw new Error();
3886     }
3887     jj_initialized_once = true;
3888     jj_input_stream = new SimpleCharStream(stream, 1, 1);
3889     token_source = new PHPParserTokenManager(jj_input_stream);
3890     token = new Token();
3891     jj_ntk = -1;
3892     jj_gen = 0;
3893     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3894     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3895   }
3896
3897   static public void ReInit(java.io.Reader stream) {
3898     jj_input_stream.ReInit(stream, 1, 1);
3899     token_source.ReInit(jj_input_stream);
3900     token = new Token();
3901     jj_ntk = -1;
3902     jj_gen = 0;
3903     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3904     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3905   }
3906
3907   public PHPParser(PHPParserTokenManager tm) {
3908     if (jj_initialized_once) {
3909       System.out.println("ERROR: Second call to constructor of static parser.  You must");
3910       System.out.println("       either use ReInit() or set the JavaCC option STATIC to false");
3911       System.out.println("       during parser generation.");
3912       throw new Error();
3913     }
3914     jj_initialized_once = true;
3915     token_source = tm;
3916     token = new Token();
3917     jj_ntk = -1;
3918     jj_gen = 0;
3919     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3920     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3921   }
3922
3923   public void ReInit(PHPParserTokenManager tm) {
3924     token_source = tm;
3925     token = new Token();
3926     jj_ntk = -1;
3927     jj_gen = 0;
3928     for (int i = 0; i < 96; i++) jj_la1[i] = -1;
3929     for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
3930   }
3931
3932   static final private Token jj_consume_token(int kind) throws ParseException {
3933     Token oldToken;
3934     if ((oldToken = token).next != null) token = token.next;
3935     else token = token.next = token_source.getNextToken();
3936     jj_ntk = -1;
3937     if (token.kind == kind) {
3938       jj_gen++;
3939       if (++jj_gc > 100) {
3940         jj_gc = 0;
3941         for (int i = 0; i < jj_2_rtns.length; i++) {
3942           JJCalls c = jj_2_rtns[i];
3943           while (c != null) {
3944             if (c.gen < jj_gen) c.first = null;
3945             c = c.next;
3946           }
3947         }
3948       }
3949       return token;
3950     }
3951     token = oldToken;
3952     jj_kind = kind;
3953     throw generateParseException();
3954   }
3955
3956   static final private boolean jj_scan_token(int kind) {
3957     if (jj_scanpos == jj_lastpos) {
3958       jj_la--;
3959       if (jj_scanpos.next == null) {
3960         jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
3961       } else {
3962         jj_lastpos = jj_scanpos = jj_scanpos.next;
3963       }
3964     } else {
3965       jj_scanpos = jj_scanpos.next;
3966     }
3967     if (jj_rescan) {
3968       int i = 0; Token tok = token;
3969       while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
3970       if (tok != null) jj_add_error_token(kind, i);
3971     }
3972     return (jj_scanpos.kind != kind);
3973   }
3974
3975   static final public Token getNextToken() {
3976     if (token.next != null) token = token.next;
3977     else token = token.next = token_source.getNextToken();
3978     jj_ntk = -1;
3979     jj_gen++;
3980     return token;
3981   }
3982
3983   static final public Token getToken(int index) {
3984     Token t = lookingAhead ? jj_scanpos : token;
3985     for (int i = 0; i < index; i++) {
3986       if (t.next != null) t = t.next;
3987       else t = t.next = token_source.getNextToken();
3988     }
3989     return t;
3990   }
3991
3992   static final private int jj_ntk() {
3993     if ((jj_nt=token.next) == null)
3994       return (jj_ntk = (token.next=token_source.getNextToken()).kind);
3995     else
3996       return (jj_ntk = jj_nt.kind);
3997   }
3998
3999   static private java.util.Vector jj_expentries = new java.util.Vector();
4000   static private int[] jj_expentry;
4001   static private int jj_kind = -1;
4002   static private int[] jj_lasttokens = new int[100];
4003   static private int jj_endpos;
4004
4005   static private void jj_add_error_token(int kind, int pos) {
4006     if (pos >= 100) return;
4007     if (pos == jj_endpos + 1) {
4008       jj_lasttokens[jj_endpos++] = kind;
4009     } else if (jj_endpos != 0) {
4010       jj_expentry = new int[jj_endpos];
4011       for (int i = 0; i < jj_endpos; i++) {
4012         jj_expentry[i] = jj_lasttokens[i];
4013       }
4014       boolean exists = false;
4015       for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
4016         int[] oldentry = (int[])(enum.nextElement());
4017         if (oldentry.length == jj_expentry.length) {
4018           exists = true;
4019           for (int i = 0; i < jj_expentry.length; i++) {
4020             if (oldentry[i] != jj_expentry[i]) {
4021               exists = false;
4022               break;
4023             }
4024           }
4025           if (exists) break;
4026         }
4027       }
4028       if (!exists) jj_expentries.addElement(jj_expentry);
4029       if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
4030     }
4031   }
4032
4033   static final public ParseException generateParseException() {
4034     jj_expentries.removeAllElements();
4035     boolean[] la1tokens = new boolean[128];
4036     for (int i = 0; i < 128; i++) {
4037       la1tokens[i] = false;
4038     }
4039     if (jj_kind >= 0) {
4040       la1tokens[jj_kind] = true;
4041       jj_kind = -1;
4042     }
4043     for (int i = 0; i < 96; i++) {
4044       if (jj_la1[i] == jj_gen) {
4045         for (int j = 0; j < 32; j++) {
4046           if ((jj_la1_0[i] & (1<<j)) != 0) {
4047             la1tokens[j] = true;
4048           }
4049           if ((jj_la1_1[i] & (1<<j)) != 0) {
4050             la1tokens[32+j] = true;
4051           }
4052           if ((jj_la1_2[i] & (1<<j)) != 0) {
4053             la1tokens[64+j] = true;
4054           }
4055           if ((jj_la1_3[i] & (1<<j)) != 0) {
4056             la1tokens[96+j] = true;
4057           }
4058         }
4059       }
4060     }
4061     for (int i = 0; i < 128; i++) {
4062       if (la1tokens[i]) {
4063         jj_expentry = new int[1];
4064         jj_expentry[0] = i;
4065         jj_expentries.addElement(jj_expentry);
4066       }
4067     }
4068     jj_endpos = 0;
4069     jj_rescan_token();
4070     jj_add_error_token(0, 0);
4071     int[][] exptokseq = new int[jj_expentries.size()][];
4072     for (int i = 0; i < jj_expentries.size(); i++) {
4073       exptokseq[i] = (int[])jj_expentries.elementAt(i);
4074     }
4075     return new ParseException(token, exptokseq, tokenImage);
4076   }
4077
4078   static final public void enable_tracing() {
4079   }
4080
4081   static final public void disable_tracing() {
4082   }
4083
4084   static final private void jj_rescan_token() {
4085     jj_rescan = true;
4086     for (int i = 0; i < 7; i++) {
4087       JJCalls p = jj_2_rtns[i];
4088       do {
4089         if (p.gen > jj_gen) {
4090           jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
4091           switch (i) {
4092             case 0: jj_3_1(); break;
4093             case 1: jj_3_2(); break;
4094             case 2: jj_3_3(); break;
4095             case 3: jj_3_4(); break;
4096             case 4: jj_3_5(); break;
4097             case 5: jj_3_6(); break;
4098             case 6: jj_3_7(); break;
4099           }
4100         }
4101         p = p.next;
4102       } while (p != null);
4103     }
4104     jj_rescan = false;
4105   }
4106
4107   static final private void jj_save(int index, int xla) {
4108     JJCalls p = jj_2_rtns[index];
4109     while (p.gen > jj_gen) {
4110       if (p.next == null) { p = p.next = new JJCalls(); break; }
4111       p = p.next;
4112     }
4113     p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
4114   }
4115
4116   static final class JJCalls {
4117     int gen;
4118     Token first;
4119     int arg;
4120     JJCalls next;
4121   }
4122
4123 }