1 /* Generated By:JavaCC: Do not edit this line. PHPParser.java */
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;
10 import java.util.Hashtable;
11 import java.util.ArrayList;
12 import java.io.StringReader;
14 import java.text.MessageFormat;
16 import net.sourceforge.phpeclipse.actions.PHPStartApacheAction;
17 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
18 import net.sourceforge.phpdt.internal.compiler.ast.*;
19 import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
20 import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
21 import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
25 * This php parser is inspired by the Java 1.2 grammar example
26 * given with JavaCC. You can get JavaCC at http://www.webgain.com
27 * You can test the parser with the PHPParserTestCase2.java
28 * @author Matthieu Casanova
30 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
32 /** The current segment. */
33 private static OutlineableWithChildren currentSegment;
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 static PHPOutlineInfo outlineInfo;
39 /** The error level of the current ParseException. */
40 private static int errorLevel = ERROR;
41 /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
42 private static String errorMessage;
44 private static int errorStart = -1;
45 private static int errorEnd = -1;
46 private static PHPDocument phpDocument;
48 private static final char[] SYNTAX_ERROR_CHAR = {'s','y','n','t','a','x',' ','e','r','r','o','r'};
50 * The point where html starts.
51 * It will be used by the token manager to create HTMLCode objects
53 public static int htmlStart;
56 private final static int AstStackIncrement = 100;
57 /** The stack of node. */
58 private static AstNode[] nodes;
59 /** The cursor in expression stack. */
60 private static int nodePtr;
62 private static final boolean PARSER_DEBUG = false;
64 public final void setFileToParse(final IFile fileToParse) {
65 PHPParser.fileToParse = fileToParse;
71 public PHPParser(final IFile fileToParse) {
72 this(new StringReader(""));
73 PHPParser.fileToParse = fileToParse;
77 * Reinitialize the parser.
79 private static final void init() {
80 nodes = new AstNode[AstStackIncrement];
86 * Add an php node on the stack.
87 * @param node the node that will be added to the stack
89 private static final void pushOnAstNodes(final AstNode node) {
91 nodes[++nodePtr] = node;
92 } catch (IndexOutOfBoundsException e) {
93 final int oldStackLength = nodes.length;
94 final AstNode[] oldStack = nodes;
95 nodes = new AstNode[oldStackLength + AstStackIncrement];
96 System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
97 nodePtr = oldStackLength;
98 nodes[nodePtr] = node;
102 public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
103 phpDocument = new PHPDocument(parent,"_root".toCharArray());
104 currentSegment = phpDocument;
105 outlineInfo = new PHPOutlineInfo(parent, currentSegment);
106 final StringReader stream = new StringReader(s);
107 if (jj_input_stream == null) {
108 jj_input_stream = new SimpleCharStream(stream, 1, 1);
114 phpDocument.nodes = new AstNode[nodes.length];
115 System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length);
116 if (PHPeclipsePlugin.DEBUG) {
117 PHPeclipsePlugin.log(1,phpDocument.toString());
119 } catch (ParseException e) {
120 processParseException(e);
126 * This method will process the parse exception.
127 * If the error message is null, the parse exception wasn't catched and a trace is written in the log
128 * @param e the ParseException
130 private static void processParseException(final ParseException e) {
135 if (errorMessage == null) {
136 PHPeclipsePlugin.log(e);
137 errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
138 errorStart = SimpleCharStream.getPosition();
139 errorEnd = errorStart + 1;
143 // if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e);
147 * Create marker for the parse error.
148 * @param e the ParseException
150 private static void setMarker(final ParseException e) {
152 if (errorStart == -1) {
153 setMarker(fileToParse,
155 SimpleCharStream.tokenBegin,
156 SimpleCharStream.tokenBegin + e.currentToken.image.length(),
158 "Line " + e.currentToken.beginLine);
160 setMarker(fileToParse,
165 "Line " + e.currentToken.beginLine);
169 } catch (CoreException e2) {
170 PHPeclipsePlugin.log(e2);
174 private static void scanLine(final String output,
177 final int brIndx) throws CoreException {
179 final StringBuffer lineNumberBuffer = new StringBuffer(10);
181 current = output.substring(indx, brIndx);
183 if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
184 final int onLine = current.indexOf("on line <b>");
186 lineNumberBuffer.delete(0, lineNumberBuffer.length());
187 for (int i = onLine; i < current.length(); i++) {
188 ch = current.charAt(i);
189 if ('0' <= ch && '9' >= ch) {
190 lineNumberBuffer.append(ch);
194 final int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
196 final Hashtable attributes = new Hashtable();
198 current = current.replaceAll("\n", "");
199 current = current.replaceAll("<b>", "");
200 current = current.replaceAll("</b>", "");
201 MarkerUtilities.setMessage(attributes, current);
203 if (current.indexOf(PARSE_ERROR_STRING) != -1)
204 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
205 else if (current.indexOf(PARSE_WARNING_STRING) != -1)
206 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
208 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
209 MarkerUtilities.setLineNumber(attributes, lineNumber);
210 MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
215 public final void parse(final String s) throws CoreException {
216 final StringReader stream = new StringReader(s);
217 if (jj_input_stream == null) {
218 jj_input_stream = new SimpleCharStream(stream, 1, 1);
224 } catch (ParseException e) {
225 processParseException(e);
230 * Call the php parse command ( php -l -f <filename> )
231 * and create markers according to the external parser output
233 public static void phpExternalParse(final IFile file) {
234 final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
235 final String filename = file.getLocation().toString();
237 final String[] arguments = { filename };
238 final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
239 final String command = form.format(arguments);
241 final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
244 // parse the buffer to find the errors and warnings
245 createMarkers(parserResult, file);
246 } catch (CoreException e) {
247 PHPeclipsePlugin.log(e);
252 * Put a new html block in the stack.
254 public static final void createNewHTMLCode() {
255 final int currentPosition = SimpleCharStream.getPosition();
256 if (currentPosition == htmlStart || currentPosition > SimpleCharStream.currentBuffer.length()) {
259 final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition+1).toCharArray();
260 pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition));
263 /** Create a new task. */
264 public static final void createNewTask() {
265 final int currentPosition = SimpleCharStream.getPosition();
266 final String todo = SimpleCharStream.currentBuffer.substring(currentPosition-3,
267 SimpleCharStream.currentBuffer.indexOf("\n",
269 PHPeclipsePlugin.log(1,SimpleCharStream.currentBuffer.toString());
271 setMarker(fileToParse,
273 SimpleCharStream.getBeginLine(),
275 "Line "+SimpleCharStream.getBeginLine());
276 } catch (CoreException e) {
277 PHPeclipsePlugin.log(e);
281 private static final void parse() throws ParseException {
285 static final public void phpFile() throws ParseException {
289 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
328 case INTEGER_LITERAL:
329 case FLOATING_POINT_LITERAL:
344 PHPParser.createNewHTMLCode();
345 } catch (TokenMgrError e) {
346 PHPeclipsePlugin.log(e);
347 errorStart = SimpleCharStream.getPosition();
348 errorEnd = errorStart + 1;
349 errorMessage = e.getMessage();
351 {if (true) throw generateParseException();}
356 * A php block is a <?= expression [;]?>
357 * or <?php somephpcode ?>
358 * or <? somephpcode ?>
360 static final public void PhpBlock() throws ParseException {
361 final int start = SimpleCharStream.getPosition();
362 final PHPEchoBlock phpEchoBlock;
363 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
365 phpEchoBlock = phpEchoBlock();
366 pushOnAstNodes(phpEchoBlock);
405 case INTEGER_LITERAL:
406 case FLOATING_POINT_LITERAL:
413 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
416 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
418 jj_consume_token(PHPSTARTLONG);
421 jj_consume_token(PHPSTARTSHORT);
423 setMarker(fileToParse,
424 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
426 SimpleCharStream.getPosition(),
428 "Line " + token.beginLine);
429 } catch (CoreException e) {
430 PHPeclipsePlugin.log(e);
435 jj_consume_token(-1);
436 throw new ParseException();
445 jj_consume_token(PHPEND);
446 } catch (ParseException e) {
447 errorMessage = "'?>' expected";
449 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
450 errorEnd = SimpleCharStream.getPosition() + 1;
451 processParseException(e);
456 jj_consume_token(-1);
457 throw new ParseException();
461 static final public PHPEchoBlock phpEchoBlock() throws ParseException {
462 final Expression expr;
463 final int pos = SimpleCharStream.getPosition();
464 final PHPEchoBlock echoBlock;
465 jj_consume_token(PHPECHOSTART);
467 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
469 jj_consume_token(SEMICOLON);
475 jj_consume_token(PHPEND);
476 echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition());
477 pushOnAstNodes(echoBlock);
478 {if (true) return echoBlock;}
479 throw new Error("Missing return statement in function");
482 static final public void Php() throws ParseException {
485 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
520 case INTEGER_LITERAL:
521 case FLOATING_POINT_LITERAL:
538 static final public ClassDeclaration ClassDeclaration() throws ParseException {
539 final ClassDeclaration classDeclaration;
540 final Token className,superclassName;
542 char[] classNameImage = SYNTAX_ERROR_CHAR;
543 char[] superclassNameImage = null;
544 jj_consume_token(CLASS);
545 pos = SimpleCharStream.getPosition();
547 className = jj_consume_token(IDENTIFIER);
548 classNameImage = className.image.toCharArray();
549 } catch (ParseException e) {
550 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
552 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
553 errorEnd = SimpleCharStream.getPosition() + 1;
554 processParseException(e);
556 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
558 jj_consume_token(EXTENDS);
560 superclassName = jj_consume_token(IDENTIFIER);
561 superclassNameImage = superclassName.image.toCharArray();
562 } catch (ParseException e) {
563 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
565 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
566 errorEnd = SimpleCharStream.getPosition() + 1;
567 processParseException(e);
568 superclassNameImage = SYNTAX_ERROR_CHAR;
575 if (superclassNameImage == null) {
576 classDeclaration = new ClassDeclaration(currentSegment,
581 classDeclaration = new ClassDeclaration(currentSegment,
587 currentSegment.add(classDeclaration);
588 currentSegment = classDeclaration;
589 ClassBody(classDeclaration);
590 currentSegment = (OutlineableWithChildren) currentSegment.getParent();
591 classDeclaration.sourceEnd = SimpleCharStream.getPosition();
592 pushOnAstNodes(classDeclaration);
593 {if (true) return classDeclaration;}
594 throw new Error("Missing return statement in function");
597 static final public void ClassBody(final ClassDeclaration classDeclaration) throws ParseException {
599 jj_consume_token(LBRACE);
600 } catch (ParseException e) {
601 errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
603 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
604 errorEnd = SimpleCharStream.getPosition() + 1;
605 processParseException(e);
609 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
618 ClassBodyDeclaration(classDeclaration);
621 jj_consume_token(RBRACE);
622 } catch (ParseException e) {
623 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
625 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
626 errorEnd = SimpleCharStream.getPosition() + 1;
627 processParseException(e);
632 * A class can contain only methods and fields.
634 static final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException {
635 final MethodDeclaration method;
636 final FieldDeclaration field;
637 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
639 method = MethodDeclaration();
640 method.analyzeCode();
641 classDeclaration.addMethod(method);
644 field = FieldDeclaration();
645 classDeclaration.addField(field);
649 jj_consume_token(-1);
650 throw new ParseException();
655 * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
656 * it is only used by ClassBodyDeclaration()
658 static final public FieldDeclaration FieldDeclaration() throws ParseException {
659 VariableDeclaration variableDeclaration;
660 final VariableDeclaration[] list;
661 final ArrayList arrayList = new ArrayList();
662 final int pos = SimpleCharStream.getPosition();
663 jj_consume_token(VAR);
664 variableDeclaration = VariableDeclaratorNoSuffix();
665 arrayList.add(variableDeclaration);
666 outlineInfo.addVariable(new String(variableDeclaration.name));
669 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
677 jj_consume_token(COMMA);
678 variableDeclaration = VariableDeclaratorNoSuffix();
679 arrayList.add(variableDeclaration);
680 outlineInfo.addVariable(new String(variableDeclaration.name));
683 jj_consume_token(SEMICOLON);
684 } catch (ParseException e) {
685 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
687 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
688 errorEnd = SimpleCharStream.getPosition() + 1;
689 processParseException(e);
691 list = new VariableDeclaration[arrayList.size()];
692 arrayList.toArray(list);
693 {if (true) return new FieldDeclaration(list,
695 SimpleCharStream.getPosition(),
697 throw new Error("Missing return statement in function");
701 * a strict variable declarator : there cannot be a suffix here.
703 static final public VariableDeclaration VariableDeclaratorNoSuffix() throws ParseException {
705 Expression initializer = null;
706 final int pos = SimpleCharStream.getPosition();
707 varName = jj_consume_token(DOLLAR_ID);
708 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
710 jj_consume_token(ASSIGN);
712 initializer = VariableInitializer();
713 } catch (ParseException e) {
714 errorMessage = "Literal expression expected in variable initializer";
716 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
717 errorEnd = SimpleCharStream.getPosition() + 1;
718 processParseException(e);
725 if (initializer == null) {
726 {if (true) return new VariableDeclaration(currentSegment,
727 varName.image.substring(1).toCharArray(),
729 SimpleCharStream.getPosition());}
731 {if (true) return new VariableDeclaration(currentSegment,
732 varName.image.substring(1).toCharArray(),
734 VariableDeclaration.EQUAL,
736 throw new Error("Missing return statement in function");
739 static final public VariableDeclaration VariableDeclarator() throws ParseException {
740 final String varName;
741 Expression initializer = null;
742 final int pos = SimpleCharStream.getPosition();
743 varName = VariableDeclaratorId();
744 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
746 jj_consume_token(ASSIGN);
748 initializer = VariableInitializer();
749 } catch (ParseException e) {
750 errorMessage = "Literal expression expected in variable initializer";
752 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
753 errorEnd = SimpleCharStream.getPosition() + 1;
754 processParseException(e);
761 if (initializer == null) {
762 {if (true) return new VariableDeclaration(currentSegment,
763 varName.toCharArray(),
765 SimpleCharStream.getPosition());}
767 {if (true) return new VariableDeclaration(currentSegment,
768 varName.toCharArray(),
770 VariableDeclaration.EQUAL,
772 throw new Error("Missing return statement in function");
777 * @return the variable name (with suffix)
779 static final public String VariableDeclaratorId() throws ParseException {
781 Expression expression = null;
782 final int pos = SimpleCharStream.getPosition();
783 ConstantIdentifier ex;
793 ex = new ConstantIdentifier(var.toCharArray(),
795 SimpleCharStream.getPosition());
796 expression = VariableSuffix(ex);
798 if (expression == null) {
799 {if (true) return var;}
801 {if (true) return expression.toStringExpression();}
802 } catch (ParseException e) {
803 errorMessage = "'$' expected for variable identifier";
805 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
806 errorEnd = SimpleCharStream.getPosition() + 1;
809 throw new Error("Missing return statement in function");
813 * Return a variablename without the $.
814 * @return a variable name
816 static final public String Variable() throws ParseException {
817 final StringBuffer buff;
818 Expression expression = null;
821 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
823 token = jj_consume_token(DOLLAR_ID);
824 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
826 jj_consume_token(LBRACE);
827 expression = Expression();
828 jj_consume_token(RBRACE);
834 if (expression == null) {
835 {if (true) return token.image.substring(1);}
837 buff = new StringBuffer(token.image);
839 buff.append(expression.toStringExpression());
841 {if (true) return buff.toString();}
844 jj_consume_token(DOLLAR);
845 expr = VariableName();
846 {if (true) return expr;}
850 jj_consume_token(-1);
851 throw new ParseException();
853 throw new Error("Missing return statement in function");
857 * A Variable name (without the $)
858 * @return a variable name String
860 static final public String VariableName() throws ParseException {
861 final StringBuffer buff;
863 Expression expression = null;
865 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
867 jj_consume_token(LBRACE);
868 expression = Expression();
869 jj_consume_token(RBRACE);
870 buff = new StringBuffer("{");
871 buff.append(expression.toStringExpression());
873 {if (true) return buff.toString();}
876 token = jj_consume_token(IDENTIFIER);
877 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
879 jj_consume_token(LBRACE);
880 expression = Expression();
881 jj_consume_token(RBRACE);
887 if (expression == null) {
888 {if (true) return token.image;}
890 buff = new StringBuffer(token.image);
892 buff.append(expression.toStringExpression());
894 {if (true) return buff.toString();}
897 jj_consume_token(DOLLAR);
898 expr = VariableName();
899 buff = new StringBuffer("$");
901 {if (true) return buff.toString();}
904 token = jj_consume_token(DOLLAR_ID);
905 {if (true) return token.image;}
909 jj_consume_token(-1);
910 throw new ParseException();
912 throw new Error("Missing return statement in function");
915 static final public Expression VariableInitializer() throws ParseException {
916 final Expression expr;
918 final int pos = SimpleCharStream.getPosition();
919 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
923 case INTEGER_LITERAL:
924 case FLOATING_POINT_LITERAL:
927 {if (true) return expr;}
930 jj_consume_token(MINUS);
931 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
932 case INTEGER_LITERAL:
933 token = jj_consume_token(INTEGER_LITERAL);
935 case FLOATING_POINT_LITERAL:
936 token = jj_consume_token(FLOATING_POINT_LITERAL);
940 jj_consume_token(-1);
941 throw new ParseException();
943 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
945 SimpleCharStream.getPosition()),
950 jj_consume_token(PLUS);
951 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
952 case INTEGER_LITERAL:
953 token = jj_consume_token(INTEGER_LITERAL);
955 case FLOATING_POINT_LITERAL:
956 token = jj_consume_token(FLOATING_POINT_LITERAL);
960 jj_consume_token(-1);
961 throw new ParseException();
963 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(),
965 SimpleCharStream.getPosition()),
970 expr = ArrayDeclarator();
971 {if (true) return expr;}
974 token = jj_consume_token(IDENTIFIER);
975 {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());}
979 jj_consume_token(-1);
980 throw new ParseException();
982 throw new Error("Missing return statement in function");
985 static final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
986 final Expression expr,expr2;
988 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
990 jj_consume_token(ARRAYASSIGN);
991 expr2 = Expression();
992 {if (true) return new ArrayVariableDeclaration(expr,expr2);}
998 {if (true) return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
999 throw new Error("Missing return statement in function");
1002 static final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
1003 ArrayVariableDeclaration expr;
1004 final ArrayList list = new ArrayList();
1005 jj_consume_token(LPAREN);
1006 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1022 case INTEGER_LITERAL:
1023 case FLOATING_POINT_LITERAL:
1024 case STRING_LITERAL:
1028 expr = ArrayVariable();
1037 jj_consume_token(COMMA);
1038 expr = ArrayVariable();
1043 jj_la1[20] = jj_gen;
1046 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1048 jj_consume_token(COMMA);
1052 jj_la1[21] = jj_gen;
1055 jj_consume_token(RPAREN);
1056 final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
1058 {if (true) return vars;}
1059 throw new Error("Missing return statement in function");
1063 * A Method Declaration.
1064 * <b>function</b> MetodDeclarator() Block()
1066 static final public MethodDeclaration MethodDeclaration() throws ParseException {
1067 final MethodDeclaration functionDeclaration;
1069 final OutlineableWithChildren seg = currentSegment;
1070 jj_consume_token(FUNCTION);
1072 functionDeclaration = MethodDeclarator();
1073 outlineInfo.addVariable(new String(functionDeclaration.name));
1074 } catch (ParseException e) {
1075 if (errorMessage != null) {if (true) throw e;}
1076 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1078 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1079 errorEnd = SimpleCharStream.getPosition() + 1;
1080 {if (true) throw e;}
1082 currentSegment = functionDeclaration;
1084 functionDeclaration.statements = block.statements;
1085 currentSegment = seg;
1086 {if (true) return functionDeclaration;}
1087 throw new Error("Missing return statement in function");
1091 * A MethodDeclarator.
1092 * [&] IDENTIFIER(parameters ...).
1093 * @return a function description for the outline
1095 static final public MethodDeclaration MethodDeclarator() throws ParseException {
1096 final Token identifier;
1097 Token reference = null;
1098 final Hashtable formalParameters;
1099 final int pos = SimpleCharStream.getPosition();
1100 char[] identifierChar = SYNTAX_ERROR_CHAR;
1101 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1103 reference = jj_consume_token(BIT_AND);
1106 jj_la1[22] = jj_gen;
1110 identifier = jj_consume_token(IDENTIFIER);
1111 identifierChar = identifier.image.toCharArray();
1112 } catch (ParseException e) {
1113 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1115 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1116 errorEnd = SimpleCharStream.getPosition() + 1;
1117 processParseException(e);
1119 formalParameters = FormalParameters();
1120 MethodDeclaration method = new MethodDeclaration(currentSegment,
1125 SimpleCharStream.getPosition());
1126 {if (true) return method;}
1127 throw new Error("Missing return statement in function");
1131 * FormalParameters follows method identifier.
1132 * (FormalParameter())
1134 static final public Hashtable FormalParameters() throws ParseException {
1135 VariableDeclaration var;
1136 final Hashtable parameters = new Hashtable();
1138 jj_consume_token(LPAREN);
1139 } catch (ParseException e) {
1140 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
1142 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1143 errorEnd = SimpleCharStream.getPosition() + 1;
1144 processParseException(e);
1146 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1149 var = FormalParameter();
1150 parameters.put(new String(var.name),var);
1153 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1158 jj_la1[23] = jj_gen;
1161 jj_consume_token(COMMA);
1162 var = FormalParameter();
1163 parameters.put(new String(var.name),var);
1167 jj_la1[24] = jj_gen;
1171 jj_consume_token(RPAREN);
1172 } catch (ParseException e) {
1173 errorMessage = "')' expected";
1175 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1176 errorEnd = SimpleCharStream.getPosition() + 1;
1177 processParseException(e);
1179 {if (true) return parameters;}
1180 throw new Error("Missing return statement in function");
1184 * A formal parameter.
1185 * $varname[=value] (,$varname[=value])
1187 static final public VariableDeclaration FormalParameter() throws ParseException {
1188 final VariableDeclaration variableDeclaration;
1190 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1192 token = jj_consume_token(BIT_AND);
1195 jj_la1[25] = jj_gen;
1198 variableDeclaration = VariableDeclaratorNoSuffix();
1199 if (token != null) {
1200 variableDeclaration.setReference(true);
1202 {if (true) return variableDeclaration;}
1203 throw new Error("Missing return statement in function");
1206 static final public ConstantIdentifier Type() throws ParseException {
1208 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1210 jj_consume_token(STRING);
1211 pos = SimpleCharStream.getPosition();
1212 {if (true) return new ConstantIdentifier(Types.STRING,pos,pos-6);}
1215 jj_consume_token(BOOL);
1216 pos = SimpleCharStream.getPosition();
1217 {if (true) return new ConstantIdentifier(Types.BOOL,pos,pos-4);}
1220 jj_consume_token(BOOLEAN);
1221 pos = SimpleCharStream.getPosition();
1222 {if (true) return new ConstantIdentifier(Types.BOOLEAN,pos,pos-7);}
1225 jj_consume_token(REAL);
1226 pos = SimpleCharStream.getPosition();
1227 {if (true) return new ConstantIdentifier(Types.REAL,pos,pos-4);}
1230 jj_consume_token(DOUBLE);
1231 pos = SimpleCharStream.getPosition();
1232 {if (true) return new ConstantIdentifier(Types.DOUBLE,pos,pos-5);}
1235 jj_consume_token(FLOAT);
1236 pos = SimpleCharStream.getPosition();
1237 {if (true) return new ConstantIdentifier(Types.FLOAT,pos,pos-5);}
1240 jj_consume_token(INT);
1241 pos = SimpleCharStream.getPosition();
1242 {if (true) return new ConstantIdentifier(Types.INT,pos,pos-3);}
1245 jj_consume_token(INTEGER);
1246 pos = SimpleCharStream.getPosition();
1247 {if (true) return new ConstantIdentifier(Types.INTEGER,pos,pos-7);}
1250 jj_consume_token(OBJECT);
1251 pos = SimpleCharStream.getPosition();
1252 {if (true) return new ConstantIdentifier(Types.OBJECT,pos,pos-6);}
1255 jj_la1[26] = jj_gen;
1256 jj_consume_token(-1);
1257 throw new ParseException();
1259 throw new Error("Missing return statement in function");
1262 static final public Expression Expression() throws ParseException {
1263 final Expression expr;
1264 Expression initializer = null;
1265 final int pos = SimpleCharStream.getPosition();
1266 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1278 case INTEGER_LITERAL:
1279 case FLOATING_POINT_LITERAL:
1280 case STRING_LITERAL:
1283 expr = ConditionalExpression();
1284 {if (true) return expr;}
1291 expr = ExpressionWBang();
1292 {if (true) return expr;}
1295 jj_la1[27] = jj_gen;
1296 jj_consume_token(-1);
1297 throw new ParseException();
1299 throw new Error("Missing return statement in function");
1302 static final public Expression ExpressionWBang() throws ParseException {
1303 final Expression expr;
1304 final int pos = SimpleCharStream.getPosition();
1305 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1307 jj_consume_token(BANG);
1308 expr = ExpressionWBang();
1309 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);}
1315 expr = ExpressionNoBang();
1316 {if (true) return expr;}
1319 jj_la1[28] = jj_gen;
1320 jj_consume_token(-1);
1321 throw new ParseException();
1323 throw new Error("Missing return statement in function");
1326 static final public Expression ExpressionNoBang() throws ParseException {
1327 Expression expr = null;
1328 int assignOperator = -1;
1330 final int pos = SimpleCharStream.getPosition();
1331 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1333 expr = PrintExpression();
1334 {if (true) return expr;}
1337 expr = ListExpression();
1338 {if (true) return expr;}
1342 var = VariableDeclaratorId();
1343 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1356 case RSIGNEDSHIFTASSIGN:
1357 assignOperator = AssignmentOperator();
1359 expr = Expression();
1360 } catch (ParseException e) {
1361 if (errorMessage != null) {
1362 {if (true) throw e;}
1364 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1366 errorEnd = SimpleCharStream.getPosition();
1367 {if (true) throw e;}
1371 jj_la1[29] = jj_gen;
1374 if (assignOperator == -1) {
1375 {if (true) return new VariableDeclaration(currentSegment,
1378 SimpleCharStream.getPosition());}
1380 {if (true) return new VariableDeclaration(currentSegment,
1385 {if (true) return expr;}
1388 jj_la1[30] = jj_gen;
1389 jj_consume_token(-1);
1390 throw new ParseException();
1392 throw new Error("Missing return statement in function");
1396 * Any assignement operator.
1397 * @return the assignement operator id
1399 static final public int AssignmentOperator() throws ParseException {
1400 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1402 jj_consume_token(ASSIGN);
1403 {if (true) return VariableDeclaration.EQUAL;}
1406 jj_consume_token(STARASSIGN);
1407 {if (true) return VariableDeclaration.STAR_EQUAL;}
1410 jj_consume_token(SLASHASSIGN);
1411 {if (true) return VariableDeclaration.SLASH_EQUAL;}
1414 jj_consume_token(REMASSIGN);
1415 {if (true) return VariableDeclaration.REM_EQUAL;}
1418 jj_consume_token(PLUSASSIGN);
1419 {if (true) return VariableDeclaration.PLUS_EQUAL;}
1422 jj_consume_token(MINUSASSIGN);
1423 {if (true) return VariableDeclaration.MINUS_EQUAL;}
1426 jj_consume_token(LSHIFTASSIGN);
1427 {if (true) return VariableDeclaration.LSHIFT_EQUAL;}
1429 case RSIGNEDSHIFTASSIGN:
1430 jj_consume_token(RSIGNEDSHIFTASSIGN);
1431 {if (true) return VariableDeclaration.RSIGNEDSHIFT_EQUAL;}
1434 jj_consume_token(ANDASSIGN);
1435 {if (true) return VariableDeclaration.AND_EQUAL;}
1438 jj_consume_token(XORASSIGN);
1439 {if (true) return VariableDeclaration.XOR_EQUAL;}
1442 jj_consume_token(ORASSIGN);
1443 {if (true) return VariableDeclaration.OR_EQUAL;}
1446 jj_consume_token(DOTASSIGN);
1447 {if (true) return VariableDeclaration.DOT_EQUAL;}
1450 jj_consume_token(TILDEEQUAL);
1451 {if (true) return VariableDeclaration.TILDE_EQUAL;}
1454 jj_la1[31] = jj_gen;
1455 jj_consume_token(-1);
1456 throw new ParseException();
1458 throw new Error("Missing return statement in function");
1461 static final public Expression ConditionalExpression() throws ParseException {
1462 final Expression expr;
1463 Expression expr2 = null;
1464 Expression expr3 = null;
1465 expr = ConditionalOrExpression();
1466 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1468 jj_consume_token(HOOK);
1469 expr2 = Expression();
1470 jj_consume_token(COLON);
1471 expr3 = ConditionalExpression();
1474 jj_la1[32] = jj_gen;
1477 if (expr3 == null) {
1478 {if (true) return expr;}
1480 {if (true) return new ConditionalExpression(expr,expr2,expr3);}
1481 throw new Error("Missing return statement in function");
1484 static final public Expression ConditionalOrExpression() throws ParseException {
1485 Expression expr,expr2;
1487 expr = ConditionalAndExpression();
1490 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1496 jj_la1[33] = jj_gen;
1499 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1501 jj_consume_token(OR_OR);
1502 operator = OperatorIds.OR_OR;
1505 jj_consume_token(_ORL);
1506 operator = OperatorIds.ORL;
1509 jj_la1[34] = jj_gen;
1510 jj_consume_token(-1);
1511 throw new ParseException();
1513 expr2 = ConditionalAndExpression();
1514 expr = new BinaryExpression(expr,expr2,operator);
1516 {if (true) return expr;}
1517 throw new Error("Missing return statement in function");
1520 static final public Expression ConditionalAndExpression() throws ParseException {
1521 Expression expr,expr2;
1523 expr = ConcatExpression();
1526 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1532 jj_la1[35] = jj_gen;
1535 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1537 jj_consume_token(AND_AND);
1538 operator = OperatorIds.AND_AND;
1541 jj_consume_token(_ANDL);
1542 operator = OperatorIds.ANDL;
1545 jj_la1[36] = jj_gen;
1546 jj_consume_token(-1);
1547 throw new ParseException();
1549 expr2 = ConcatExpression();
1550 expr = new BinaryExpression(expr,expr2,operator);
1552 {if (true) return expr;}
1553 throw new Error("Missing return statement in function");
1556 static final public Expression ConcatExpression() throws ParseException {
1557 Expression expr,expr2;
1558 expr = InclusiveOrExpression();
1561 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1566 jj_la1[37] = jj_gen;
1569 jj_consume_token(DOT);
1570 expr2 = InclusiveOrExpression();
1571 expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
1573 {if (true) return expr;}
1574 throw new Error("Missing return statement in function");
1577 static final public Expression InclusiveOrExpression() throws ParseException {
1578 Expression expr,expr2;
1579 expr = ExclusiveOrExpression();
1582 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1587 jj_la1[38] = jj_gen;
1590 jj_consume_token(BIT_OR);
1591 expr2 = ExclusiveOrExpression();
1592 expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
1594 {if (true) return expr;}
1595 throw new Error("Missing return statement in function");
1598 static final public Expression ExclusiveOrExpression() throws ParseException {
1599 Expression expr,expr2;
1600 expr = AndExpression();
1603 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1608 jj_la1[39] = jj_gen;
1611 jj_consume_token(XOR);
1612 expr2 = AndExpression();
1613 expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
1615 {if (true) return expr;}
1616 throw new Error("Missing return statement in function");
1619 static final public Expression AndExpression() throws ParseException {
1620 Expression expr,expr2;
1621 expr = EqualityExpression();
1624 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1629 jj_la1[40] = jj_gen;
1632 jj_consume_token(BIT_AND);
1633 expr2 = EqualityExpression();
1634 expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
1636 {if (true) return expr;}
1637 throw new Error("Missing return statement in function");
1640 static final public Expression EqualityExpression() throws ParseException {
1641 Expression expr,expr2;
1643 expr = RelationalExpression();
1646 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1650 case BANGDOUBLEEQUAL:
1655 jj_la1[41] = jj_gen;
1658 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1660 jj_consume_token(EQUAL_EQUAL);
1661 operator = OperatorIds.EQUAL_EQUAL;
1664 jj_consume_token(DIF);
1665 operator = OperatorIds.DIF;
1668 jj_consume_token(NOT_EQUAL);
1669 operator = OperatorIds.DIF;
1671 case BANGDOUBLEEQUAL:
1672 jj_consume_token(BANGDOUBLEEQUAL);
1673 operator = OperatorIds.BANG_EQUAL_EQUAL;
1676 jj_consume_token(TRIPLEEQUAL);
1677 operator = OperatorIds.EQUAL_EQUAL_EQUAL;
1680 jj_la1[42] = jj_gen;
1681 jj_consume_token(-1);
1682 throw new ParseException();
1685 expr2 = RelationalExpression();
1686 } catch (ParseException e) {
1687 if (errorMessage != null) {
1688 {if (true) throw e;}
1690 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1692 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1693 errorEnd = SimpleCharStream.getPosition() + 1;
1694 {if (true) throw e;}
1696 expr = new BinaryExpression(expr,expr2,operator);
1698 {if (true) return expr;}
1699 throw new Error("Missing return statement in function");
1702 static final public Expression RelationalExpression() throws ParseException {
1703 Expression expr,expr2;
1705 expr = ShiftExpression();
1708 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1716 jj_la1[43] = jj_gen;
1719 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1721 jj_consume_token(LT);
1722 operator = OperatorIds.LESS;
1725 jj_consume_token(GT);
1726 operator = OperatorIds.GREATER;
1729 jj_consume_token(LE);
1730 operator = OperatorIds.LESS_EQUAL;
1733 jj_consume_token(GE);
1734 operator = OperatorIds.GREATER_EQUAL;
1737 jj_la1[44] = jj_gen;
1738 jj_consume_token(-1);
1739 throw new ParseException();
1741 expr2 = ShiftExpression();
1742 expr = new BinaryExpression(expr,expr2,operator);
1744 {if (true) return expr;}
1745 throw new Error("Missing return statement in function");
1748 static final public Expression ShiftExpression() throws ParseException {
1749 Expression expr,expr2;
1751 expr = AdditiveExpression();
1754 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1757 case RUNSIGNEDSHIFT:
1761 jj_la1[45] = jj_gen;
1764 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1766 jj_consume_token(LSHIFT);
1767 operator = OperatorIds.LEFT_SHIFT;
1770 jj_consume_token(RSIGNEDSHIFT);
1771 operator = OperatorIds.RIGHT_SHIFT;
1773 case RUNSIGNEDSHIFT:
1774 jj_consume_token(RUNSIGNEDSHIFT);
1775 operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
1778 jj_la1[46] = jj_gen;
1779 jj_consume_token(-1);
1780 throw new ParseException();
1782 expr2 = AdditiveExpression();
1783 expr = new BinaryExpression(expr,expr2,operator);
1785 {if (true) return expr;}
1786 throw new Error("Missing return statement in function");
1789 static final public Expression AdditiveExpression() throws ParseException {
1790 Expression expr,expr2;
1792 expr = MultiplicativeExpression();
1795 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1801 jj_la1[47] = jj_gen;
1804 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1806 jj_consume_token(PLUS);
1807 operator = OperatorIds.PLUS;
1810 jj_consume_token(MINUS);
1811 operator = OperatorIds.MINUS;
1814 jj_la1[48] = jj_gen;
1815 jj_consume_token(-1);
1816 throw new ParseException();
1818 expr2 = MultiplicativeExpression();
1819 expr = new BinaryExpression(expr,expr2,operator);
1821 {if (true) return expr;}
1822 throw new Error("Missing return statement in function");
1825 static final public Expression MultiplicativeExpression() throws ParseException {
1826 Expression expr,expr2;
1829 expr = UnaryExpression();
1830 } catch (ParseException e) {
1831 if (errorMessage != null) {if (true) throw e;}
1832 errorMessage = "unexpected token '"+e.currentToken.next.image+"'";
1834 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
1835 errorEnd = SimpleCharStream.getPosition() + 1;
1836 {if (true) throw e;}
1840 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1847 jj_la1[49] = jj_gen;
1850 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1852 jj_consume_token(STAR);
1853 operator = OperatorIds.MULTIPLY;
1856 jj_consume_token(SLASH);
1857 operator = OperatorIds.DIVIDE;
1860 jj_consume_token(REMAINDER);
1861 operator = OperatorIds.REMAINDER;
1864 jj_la1[50] = jj_gen;
1865 jj_consume_token(-1);
1866 throw new ParseException();
1868 expr2 = UnaryExpression();
1869 expr = new BinaryExpression(expr,expr2,operator);
1871 {if (true) return expr;}
1872 throw new Error("Missing return statement in function");
1876 * An unary expression starting with @, & or nothing
1878 static final public Expression UnaryExpression() throws ParseException {
1879 final Expression expr;
1880 final int pos = SimpleCharStream.getPosition();
1881 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1883 jj_consume_token(BIT_AND);
1884 expr = UnaryExpressionNoPrefix();
1885 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
1897 case INTEGER_LITERAL:
1898 case FLOATING_POINT_LITERAL:
1899 case STRING_LITERAL:
1902 expr = AtUnaryExpression();
1903 {if (true) return expr;}
1906 jj_la1[51] = jj_gen;
1907 jj_consume_token(-1);
1908 throw new ParseException();
1910 throw new Error("Missing return statement in function");
1913 static final public Expression AtUnaryExpression() throws ParseException {
1914 final Expression expr;
1915 final int pos = SimpleCharStream.getPosition();
1916 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1918 jj_consume_token(AT);
1919 expr = AtUnaryExpression();
1920 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);}
1931 case INTEGER_LITERAL:
1932 case FLOATING_POINT_LITERAL:
1933 case STRING_LITERAL:
1936 expr = UnaryExpressionNoPrefix();
1937 {if (true) return expr;}
1940 jj_la1[52] = jj_gen;
1941 jj_consume_token(-1);
1942 throw new ParseException();
1944 throw new Error("Missing return statement in function");
1947 static final public Expression UnaryExpressionNoPrefix() throws ParseException {
1948 final Expression expr;
1950 final int pos = SimpleCharStream.getPosition();
1951 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1954 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1956 jj_consume_token(PLUS);
1957 operator = OperatorIds.PLUS;
1960 jj_consume_token(MINUS);
1961 operator = OperatorIds.MINUS;
1964 jj_la1[53] = jj_gen;
1965 jj_consume_token(-1);
1966 throw new ParseException();
1968 expr = UnaryExpression();
1969 {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
1973 expr = PreIncDecExpression();
1974 {if (true) return expr;}
1981 case INTEGER_LITERAL:
1982 case FLOATING_POINT_LITERAL:
1983 case STRING_LITERAL:
1986 expr = UnaryExpressionNotPlusMinus();
1987 {if (true) return expr;}
1990 jj_la1[54] = jj_gen;
1991 jj_consume_token(-1);
1992 throw new ParseException();
1994 throw new Error("Missing return statement in function");
1997 static final public Expression PreIncDecExpression() throws ParseException {
1998 final Expression expr;
2000 final int pos = SimpleCharStream.getPosition();
2001 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2003 jj_consume_token(PLUS_PLUS);
2004 operator = OperatorIds.PLUS_PLUS;
2007 jj_consume_token(MINUS_MINUS);
2008 operator = OperatorIds.MINUS_MINUS;
2011 jj_la1[55] = jj_gen;
2012 jj_consume_token(-1);
2013 throw new ParseException();
2015 expr = PrimaryExpression();
2016 {if (true) return new PrefixedUnaryExpression(expr,operator,pos);}
2017 throw new Error("Missing return statement in function");
2020 static final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
2021 final Expression expr;
2022 final int pos = SimpleCharStream.getPosition();
2023 if (jj_2_3(2147483647)) {
2024 expr = CastExpression();
2025 {if (true) return expr;}
2027 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2031 expr = PostfixExpression();
2032 {if (true) return expr;}
2037 case INTEGER_LITERAL:
2038 case FLOATING_POINT_LITERAL:
2039 case STRING_LITERAL:
2041 {if (true) return expr;}
2044 jj_consume_token(LPAREN);
2045 expr = Expression();
2047 jj_consume_token(RPAREN);
2048 } catch (ParseException e) {
2049 errorMessage = "')' expected";
2051 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2052 errorEnd = SimpleCharStream.getPosition() + 1;
2053 {if (true) throw e;}
2055 {if (true) return expr;}
2058 jj_la1[56] = jj_gen;
2059 jj_consume_token(-1);
2060 throw new ParseException();
2063 throw new Error("Missing return statement in function");
2066 static final public CastExpression CastExpression() throws ParseException {
2067 final ConstantIdentifier type;
2068 final Expression expr;
2069 final int pos = SimpleCharStream.getPosition();
2070 jj_consume_token(LPAREN);
2071 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2084 jj_consume_token(ARRAY);
2085 type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition());
2088 jj_la1[57] = jj_gen;
2089 jj_consume_token(-1);
2090 throw new ParseException();
2092 jj_consume_token(RPAREN);
2093 expr = UnaryExpression();
2094 {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());}
2095 throw new Error("Missing return statement in function");
2098 static final public Expression PostfixExpression() throws ParseException {
2099 final Expression expr;
2101 final int pos = SimpleCharStream.getPosition();
2102 expr = PrimaryExpression();
2103 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2106 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2108 jj_consume_token(PLUS_PLUS);
2109 operator = OperatorIds.PLUS_PLUS;
2112 jj_consume_token(MINUS_MINUS);
2113 operator = OperatorIds.MINUS_MINUS;
2116 jj_la1[58] = jj_gen;
2117 jj_consume_token(-1);
2118 throw new ParseException();
2122 jj_la1[59] = jj_gen;
2125 if (operator == -1) {
2126 {if (true) return expr;}
2128 {if (true) return new PostfixedUnaryExpression(expr,operator,pos);}
2129 throw new Error("Missing return statement in function");
2132 static final public Expression PrimaryExpression() throws ParseException {
2134 int assignOperator = -1;
2135 final Token identifier;
2137 final int pos = SimpleCharStream.getPosition();
2138 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2140 identifier = jj_consume_token(IDENTIFIER);
2141 expr = new ConstantIdentifier(token.image.toCharArray(),
2143 SimpleCharStream.getPosition());
2146 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2148 case STATICCLASSACCESS:
2154 jj_la1[60] = jj_gen;
2157 expr = PrimarySuffix(expr);
2159 {if (true) return expr;}
2162 expr = ArrayDeclarator();
2163 {if (true) return expr;}
2166 jj_consume_token(NEW);
2167 expr = ClassIdentifier();
2168 expr = new PrefixedUnaryExpression(expr,OperatorIds.NEW,pos);
2169 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2171 expr = Arguments(expr);
2174 jj_la1[61] = jj_gen;
2177 {if (true) return expr;}
2180 jj_la1[62] = jj_gen;
2181 jj_consume_token(-1);
2182 throw new ParseException();
2184 throw new Error("Missing return statement in function");
2187 static final public AbstractSuffixExpression PrimarySuffix(final Expression prefix) throws ParseException {
2188 final AbstractSuffixExpression suffix;
2189 final Expression expr;
2190 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2192 suffix = Arguments(prefix);
2193 {if (true) return suffix;}
2197 suffix = VariableSuffix(prefix);
2198 {if (true) return suffix;}
2200 case STATICCLASSACCESS:
2201 jj_consume_token(STATICCLASSACCESS);
2202 expr = ClassIdentifier();
2203 suffix = new ClassAccess(prefix,
2205 ClassAccess.STATIC);
2206 {if (true) return suffix;}
2209 jj_la1[63] = jj_gen;
2210 jj_consume_token(-1);
2211 throw new ParseException();
2213 throw new Error("Missing return statement in function");
2217 * An array declarator.
2221 static final public ArrayInitializer ArrayDeclarator() throws ParseException {
2222 final ArrayVariableDeclaration[] vars;
2223 final int pos = SimpleCharStream.getPosition();
2224 jj_consume_token(ARRAY);
2225 vars = ArrayInitializer();
2226 {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());}
2227 throw new Error("Missing return statement in function");
2230 static final public PrefixedUnaryExpression classInstantiation() throws ParseException {
2232 final StringBuffer buff;
2233 final int pos = SimpleCharStream.getPosition();
2234 jj_consume_token(NEW);
2235 expr = ClassIdentifier();
2236 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2240 buff = new StringBuffer(expr.toStringExpression());
2241 expr = PrimaryExpression();
2242 buff.append(expr.toStringExpression());
2243 expr = new ConstantIdentifier(buff.toString().toCharArray(),
2245 SimpleCharStream.getPosition());
2248 jj_la1[64] = jj_gen;
2251 {if (true) return new PrefixedUnaryExpression(expr,
2254 throw new Error("Missing return statement in function");
2257 static final public ConstantIdentifier ClassIdentifier() throws ParseException {
2260 final int pos = SimpleCharStream.getPosition();
2261 final ConstantIdentifier type;
2262 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2264 token = jj_consume_token(IDENTIFIER);
2265 {if (true) return new ConstantIdentifier(token.image.toCharArray(),
2267 SimpleCharStream.getPosition());}
2279 {if (true) return type;}
2283 expr = VariableDeclaratorId();
2284 {if (true) return new ConstantIdentifier(expr.toCharArray(),
2286 SimpleCharStream.getPosition());}
2289 jj_la1[65] = jj_gen;
2290 jj_consume_token(-1);
2291 throw new ParseException();
2293 throw new Error("Missing return statement in function");
2296 static final public AbstractSuffixExpression VariableSuffix(final Expression prefix) throws ParseException {
2298 final int pos = SimpleCharStream.getPosition();
2299 Expression expression = null;
2300 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2302 jj_consume_token(CLASSACCESS);
2304 expr = VariableName();
2305 } catch (ParseException e) {
2306 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
2308 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2309 errorEnd = SimpleCharStream.getPosition() + 1;
2310 {if (true) throw e;}
2312 {if (true) return new ClassAccess(prefix,
2313 new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()),
2314 ClassAccess.NORMAL);}
2317 jj_consume_token(LBRACKET);
2318 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2343 case INTEGER_LITERAL:
2344 case FLOATING_POINT_LITERAL:
2345 case STRING_LITERAL:
2349 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2365 case INTEGER_LITERAL:
2366 case FLOATING_POINT_LITERAL:
2367 case STRING_LITERAL:
2371 expression = Expression();
2382 expression = Type();
2385 jj_la1[66] = jj_gen;
2386 jj_consume_token(-1);
2387 throw new ParseException();
2391 jj_la1[67] = jj_gen;
2395 jj_consume_token(RBRACKET);
2396 } catch (ParseException e) {
2397 errorMessage = "']' expected";
2399 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2400 errorEnd = SimpleCharStream.getPosition() + 1;
2401 {if (true) throw e;}
2403 {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());}
2406 jj_la1[68] = jj_gen;
2407 jj_consume_token(-1);
2408 throw new ParseException();
2410 throw new Error("Missing return statement in function");
2413 static final public Literal Literal() throws ParseException {
2416 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2417 case INTEGER_LITERAL:
2418 token = jj_consume_token(INTEGER_LITERAL);
2419 pos = SimpleCharStream.getPosition();
2420 {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
2422 case FLOATING_POINT_LITERAL:
2423 token = jj_consume_token(FLOATING_POINT_LITERAL);
2424 pos = SimpleCharStream.getPosition();
2425 {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);}
2427 case STRING_LITERAL:
2428 token = jj_consume_token(STRING_LITERAL);
2429 pos = SimpleCharStream.getPosition();
2430 {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length());}
2433 jj_consume_token(TRUE);
2434 pos = SimpleCharStream.getPosition();
2435 {if (true) return new TrueLiteral(pos-4,pos);}
2438 jj_consume_token(FALSE);
2439 pos = SimpleCharStream.getPosition();
2440 {if (true) return new FalseLiteral(pos-4,pos);}
2443 jj_consume_token(NULL);
2444 pos = SimpleCharStream.getPosition();
2445 {if (true) return new NullLiteral(pos-4,pos);}
2448 jj_la1[69] = jj_gen;
2449 jj_consume_token(-1);
2450 throw new ParseException();
2452 throw new Error("Missing return statement in function");
2455 static final public FunctionCall Arguments(final Expression func) throws ParseException {
2456 Expression[] args = null;
2457 jj_consume_token(LPAREN);
2458 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2474 case INTEGER_LITERAL:
2475 case FLOATING_POINT_LITERAL:
2476 case STRING_LITERAL:
2480 args = ArgumentList();
2483 jj_la1[70] = jj_gen;
2487 jj_consume_token(RPAREN);
2488 } catch (ParseException e) {
2489 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
2491 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2492 errorEnd = SimpleCharStream.getPosition() + 1;
2493 {if (true) throw e;}
2495 {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());}
2496 throw new Error("Missing return statement in function");
2500 * An argument list is a list of arguments separated by comma :
2501 * argumentDeclaration() (, argumentDeclaration)*
2502 * @return an array of arguments
2504 static final public Expression[] ArgumentList() throws ParseException {
2506 final ArrayList list = new ArrayList();
2511 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2516 jj_la1[71] = jj_gen;
2519 jj_consume_token(COMMA);
2523 } catch (ParseException e) {
2524 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
2526 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2527 errorEnd = SimpleCharStream.getPosition() + 1;
2528 {if (true) throw e;}
2531 final Expression[] arguments = new Expression[list.size()];
2532 list.toArray(arguments);
2533 {if (true) return arguments;}
2534 throw new Error("Missing return statement in function");
2538 * A Statement without break.
2540 static final public Statement StatementNoBreak() throws ParseException {
2541 final Statement statement;
2544 statement = Expression();
2546 jj_consume_token(SEMICOLON);
2547 } catch (ParseException e) {
2548 if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
2549 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
2551 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2552 errorEnd = SimpleCharStream.getPosition() + 1;
2553 {if (true) throw e;}
2556 {if (true) return statement;}
2558 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2560 statement = LabeledStatement();
2561 {if (true) return statement;}
2564 statement = Block();
2565 {if (true) return statement;}
2568 statement = EmptyStatement();
2569 {if (true) return statement;}
2572 statement = SwitchStatement();
2573 {if (true) return statement;}
2576 statement = IfStatement();
2577 {if (true) return statement;}
2580 statement = WhileStatement();
2581 {if (true) return statement;}
2584 statement = DoStatement();
2585 {if (true) return statement;}
2588 statement = ForStatement();
2589 {if (true) return statement;}
2592 statement = ForeachStatement();
2593 {if (true) return statement;}
2596 statement = ContinueStatement();
2597 {if (true) return statement;}
2600 statement = ReturnStatement();
2601 {if (true) return statement;}
2604 statement = EchoStatement();
2605 {if (true) return statement;}
2612 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2614 token = jj_consume_token(AT);
2617 jj_la1[72] = jj_gen;
2620 statement = IncludeStatement();
2621 if (token != null) {
2622 ((InclusionStatement)statement).silent = true;
2624 {if (true) return statement;}
2627 statement = StaticStatement();
2628 {if (true) return statement;}
2631 statement = GlobalStatement();
2632 {if (true) return statement;}
2635 statement = defineStatement();
2636 currentSegment.add((Outlineable)statement);{if (true) return statement;}
2639 jj_la1[73] = jj_gen;
2640 jj_consume_token(-1);
2641 throw new ParseException();
2644 throw new Error("Missing return statement in function");
2647 static final public Define defineStatement() throws ParseException {
2648 final int start = SimpleCharStream.getPosition();
2649 Expression defineName,defineValue;
2650 jj_consume_token(DEFINE);
2652 jj_consume_token(LPAREN);
2653 } catch (ParseException e) {
2654 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
2656 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2657 errorEnd = SimpleCharStream.getPosition() + 1;
2658 processParseException(e);
2661 defineName = Expression();
2662 } catch (ParseException e) {
2663 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2665 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2666 errorEnd = SimpleCharStream.getPosition() + 1;
2667 {if (true) throw e;}
2670 jj_consume_token(COMMA);
2671 } catch (ParseException e) {
2672 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
2674 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2675 errorEnd = SimpleCharStream.getPosition() + 1;
2676 processParseException(e);
2679 defineValue = Expression();
2680 } catch (ParseException e) {
2681 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2683 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2684 errorEnd = SimpleCharStream.getPosition() + 1;
2685 {if (true) throw e;}
2688 jj_consume_token(RPAREN);
2689 } catch (ParseException e) {
2690 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
2692 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2693 errorEnd = SimpleCharStream.getPosition() + 1;
2694 processParseException(e);
2696 {if (true) return new Define(currentSegment,
2700 SimpleCharStream.getPosition());}
2701 throw new Error("Missing return statement in function");
2705 * A Normal statement.
2707 static final public Statement Statement() throws ParseException {
2708 final Statement statement;
2709 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2741 case INTEGER_LITERAL:
2742 case FLOATING_POINT_LITERAL:
2743 case STRING_LITERAL:
2749 statement = StatementNoBreak();
2750 {if (true) return statement;}
2753 statement = BreakStatement();
2754 {if (true) return statement;}
2757 jj_la1[74] = jj_gen;
2758 jj_consume_token(-1);
2759 throw new ParseException();
2761 throw new Error("Missing return statement in function");
2765 * An html block inside a php syntax.
2767 static final public HTMLBlock htmlBlock() throws ParseException {
2768 final int startIndex = nodePtr;
2769 final AstNode[] blockNodes;
2771 jj_consume_token(PHPEND);
2774 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2779 jj_la1[75] = jj_gen;
2785 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2787 jj_consume_token(PHPSTARTLONG);
2790 jj_consume_token(PHPSTARTSHORT);
2793 jj_la1[76] = jj_gen;
2794 jj_consume_token(-1);
2795 throw new ParseException();
2797 } catch (ParseException e) {
2798 errorMessage = "unexpected end of file , '<?php' expected";
2800 errorStart = SimpleCharStream.getPosition();
2801 errorEnd = SimpleCharStream.getPosition();
2802 {if (true) throw e;}
2804 nbNodes = nodePtr - startIndex;
2805 blockNodes = new AstNode[nbNodes];
2806 System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
2807 nodePtr = startIndex;
2808 {if (true) return new HTMLBlock(blockNodes);}
2809 throw new Error("Missing return statement in function");
2813 * An include statement. It's "include" an expression;
2815 static final public InclusionStatement IncludeStatement() throws ParseException {
2816 final Expression expr;
2818 final int pos = SimpleCharStream.getPosition();
2819 final InclusionStatement inclusionStatement;
2820 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2822 jj_consume_token(REQUIRE);
2823 keyword = InclusionStatement.REQUIRE;
2826 jj_consume_token(REQUIRE_ONCE);
2827 keyword = InclusionStatement.REQUIRE_ONCE;
2830 jj_consume_token(INCLUDE);
2831 keyword = InclusionStatement.INCLUDE;
2834 jj_consume_token(INCLUDE_ONCE);
2835 keyword = InclusionStatement.INCLUDE_ONCE;
2838 jj_la1[77] = jj_gen;
2839 jj_consume_token(-1);
2840 throw new ParseException();
2843 expr = Expression();
2844 } catch (ParseException e) {
2845 if (errorMessage != null) {
2846 {if (true) throw e;}
2848 errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
2850 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2851 errorEnd = SimpleCharStream.getPosition() + 1;
2852 {if (true) throw e;}
2854 inclusionStatement = new InclusionStatement(currentSegment,
2858 currentSegment.add(inclusionStatement);
2860 jj_consume_token(SEMICOLON);
2861 } catch (ParseException e) {
2862 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
2864 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2865 errorEnd = SimpleCharStream.getPosition() + 1;
2866 {if (true) throw e;}
2868 {if (true) return inclusionStatement;}
2869 throw new Error("Missing return statement in function");
2872 static final public PrintExpression PrintExpression() throws ParseException {
2873 final Expression expr;
2874 final int pos = SimpleCharStream.getPosition();
2875 jj_consume_token(PRINT);
2876 expr = Expression();
2877 {if (true) return new PrintExpression(expr,pos,SimpleCharStream.getPosition());}
2878 throw new Error("Missing return statement in function");
2881 static final public ListExpression ListExpression() throws ParseException {
2883 final Expression expression;
2884 final ArrayList list = new ArrayList();
2885 final int pos = SimpleCharStream.getPosition();
2886 jj_consume_token(LIST);
2888 jj_consume_token(LPAREN);
2889 } catch (ParseException e) {
2890 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
2892 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2893 errorEnd = SimpleCharStream.getPosition() + 1;
2894 {if (true) throw e;}
2896 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2899 expr = VariableDeclaratorId();
2903 jj_la1[78] = jj_gen;
2906 if (expr == null) list.add(null);
2909 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2914 jj_la1[79] = jj_gen;
2918 jj_consume_token(COMMA);
2919 } catch (ParseException e) {
2920 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
2922 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2923 errorEnd = SimpleCharStream.getPosition() + 1;
2924 {if (true) throw e;}
2926 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2929 expr = VariableDeclaratorId();
2933 jj_la1[80] = jj_gen;
2938 jj_consume_token(RPAREN);
2939 } catch (ParseException e) {
2940 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
2942 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2943 errorEnd = SimpleCharStream.getPosition() + 1;
2944 {if (true) throw e;}
2946 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2948 jj_consume_token(ASSIGN);
2949 expression = Expression();
2950 final String[] strings = new String[list.size()];
2951 list.toArray(strings);
2952 {if (true) return new ListExpression(strings,
2955 SimpleCharStream.getPosition());}
2958 jj_la1[81] = jj_gen;
2961 final String[] strings = new String[list.size()];
2962 list.toArray(strings);
2963 {if (true) return new ListExpression(strings,pos,SimpleCharStream.getPosition());}
2964 throw new Error("Missing return statement in function");
2968 * An echo statement.
2969 * echo anyexpression (, otherexpression)*
2971 static final public EchoStatement EchoStatement() throws ParseException {
2972 final ArrayList expressions = new ArrayList();
2974 final int pos = SimpleCharStream.getPosition();
2975 jj_consume_token(ECHO);
2976 expr = Expression();
2977 expressions.add(expr);
2980 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2985 jj_la1[82] = jj_gen;
2988 jj_consume_token(COMMA);
2989 expr = Expression();
2990 expressions.add(expr);
2993 jj_consume_token(SEMICOLON);
2994 } catch (ParseException e) {
2995 if (e.currentToken.next.kind != 4) {
2996 errorMessage = "';' expected after 'echo' statement";
2998 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
2999 errorEnd = SimpleCharStream.getPosition() + 1;
3000 {if (true) throw e;}
3003 final Expression[] exprs = new Expression[expressions.size()];
3004 expressions.toArray(exprs);
3005 {if (true) return new EchoStatement(exprs,pos);}
3006 throw new Error("Missing return statement in function");
3009 static final public GlobalStatement GlobalStatement() throws ParseException {
3010 final int pos = SimpleCharStream.getPosition();
3012 final ArrayList vars = new ArrayList();
3013 final GlobalStatement global;
3014 jj_consume_token(GLOBAL);
3015 expr = VariableDeclaratorId();
3019 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3024 jj_la1[83] = jj_gen;
3027 jj_consume_token(COMMA);
3028 expr = VariableDeclaratorId();
3032 jj_consume_token(SEMICOLON);
3033 final String[] strings = new String[vars.size()];
3034 vars.toArray(strings);
3035 global = new GlobalStatement(currentSegment,
3038 SimpleCharStream.getPosition());
3039 currentSegment.add(global);
3040 {if (true) return global;}
3041 } catch (ParseException e) {
3042 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3044 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3045 errorEnd = SimpleCharStream.getPosition() + 1;
3046 {if (true) throw e;}
3048 throw new Error("Missing return statement in function");
3051 static final public StaticStatement StaticStatement() throws ParseException {
3052 final int pos = SimpleCharStream.getPosition();
3053 final ArrayList vars = new ArrayList();
3054 VariableDeclaration expr;
3055 jj_consume_token(STATIC);
3056 expr = VariableDeclarator();
3057 vars.add(new String(expr.name));
3060 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3065 jj_la1[84] = jj_gen;
3068 jj_consume_token(COMMA);
3069 expr = VariableDeclarator();
3070 vars.add(new String(expr.name));
3073 jj_consume_token(SEMICOLON);
3074 final String[] strings = new String[vars.size()];
3075 vars.toArray(strings);
3076 {if (true) return new StaticStatement(strings,
3078 SimpleCharStream.getPosition());}
3079 } catch (ParseException e) {
3080 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3082 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3083 errorEnd = SimpleCharStream.getPosition() + 1;
3084 {if (true) throw e;}
3086 throw new Error("Missing return statement in function");
3089 static final public LabeledStatement LabeledStatement() throws ParseException {
3090 final int pos = SimpleCharStream.getPosition();
3092 final Statement statement;
3093 label = jj_consume_token(IDENTIFIER);
3094 jj_consume_token(COLON);
3095 statement = Statement();
3096 {if (true) return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());}
3097 throw new Error("Missing return statement in function");
3107 static final public Block Block() throws ParseException {
3108 final int pos = SimpleCharStream.getPosition();
3109 final ArrayList list = new ArrayList();
3110 Statement statement;
3112 jj_consume_token(LBRACE);
3113 } catch (ParseException e) {
3114 errorMessage = "'{' expected";
3116 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3117 errorEnd = SimpleCharStream.getPosition() + 1;
3118 {if (true) throw e;}
3122 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3158 case INTEGER_LITERAL:
3159 case FLOATING_POINT_LITERAL:
3160 case STRING_LITERAL:
3169 jj_la1[85] = jj_gen;
3172 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3207 case INTEGER_LITERAL:
3208 case FLOATING_POINT_LITERAL:
3209 case STRING_LITERAL:
3215 statement = BlockStatement();
3216 list.add(statement);
3219 statement = htmlBlock();
3220 list.add(statement);
3223 jj_la1[86] = jj_gen;
3224 jj_consume_token(-1);
3225 throw new ParseException();
3229 jj_consume_token(RBRACE);
3230 } catch (ParseException e) {
3231 errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
3233 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3234 errorEnd = SimpleCharStream.getPosition() + 1;
3235 {if (true) throw e;}
3237 final Statement[] statements = new Statement[list.size()];
3238 list.toArray(statements);
3239 {if (true) return new Block(statements,pos,SimpleCharStream.getPosition());}
3240 throw new Error("Missing return statement in function");
3243 static final public Statement BlockStatement() throws ParseException {
3244 final Statement statement;
3245 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3278 case INTEGER_LITERAL:
3279 case FLOATING_POINT_LITERAL:
3280 case STRING_LITERAL:
3286 statement = Statement();
3287 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3288 {if (true) return statement;}
3291 statement = ClassDeclaration();
3292 {if (true) return statement;}
3295 statement = MethodDeclaration();
3296 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3297 currentSegment.add((MethodDeclaration) statement);
3298 ((MethodDeclaration) statement).analyzeCode();
3299 {if (true) return statement;}
3302 jj_la1[87] = jj_gen;
3303 jj_consume_token(-1);
3304 throw new ParseException();
3306 throw new Error("Missing return statement in function");
3310 * A Block statement that will not contain any 'break'
3312 static final public Statement BlockStatementNoBreak() throws ParseException {
3313 final Statement statement;
3314 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3346 case INTEGER_LITERAL:
3347 case FLOATING_POINT_LITERAL:
3348 case STRING_LITERAL:
3354 statement = StatementNoBreak();
3355 {if (true) return statement;}
3358 statement = ClassDeclaration();
3359 {if (true) return statement;}
3362 statement = MethodDeclaration();
3363 currentSegment.add((MethodDeclaration) statement);
3364 ((MethodDeclaration) statement).analyzeCode();
3365 {if (true) return statement;}
3368 jj_la1[88] = jj_gen;
3369 jj_consume_token(-1);
3370 throw new ParseException();
3372 throw new Error("Missing return statement in function");
3375 static final public VariableDeclaration[] LocalVariableDeclaration() throws ParseException {
3376 final ArrayList list = new ArrayList();
3377 VariableDeclaration var;
3378 var = LocalVariableDeclarator();
3382 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3387 jj_la1[89] = jj_gen;
3390 jj_consume_token(COMMA);
3391 var = LocalVariableDeclarator();
3394 final VariableDeclaration[] vars = new VariableDeclaration[list.size()];
3396 {if (true) return vars;}
3397 throw new Error("Missing return statement in function");
3400 static final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
3401 final String varName;
3402 Expression initializer = null;
3403 final int pos = SimpleCharStream.getPosition();
3404 varName = VariableDeclaratorId();
3405 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3407 jj_consume_token(ASSIGN);
3408 initializer = Expression();
3411 jj_la1[90] = jj_gen;
3414 if (initializer == null) {
3415 {if (true) return new VariableDeclaration(currentSegment,
3416 varName.toCharArray(),
3418 SimpleCharStream.getPosition());}
3420 {if (true) return new VariableDeclaration(currentSegment,
3421 varName.toCharArray(),
3423 VariableDeclaration.EQUAL,
3425 throw new Error("Missing return statement in function");
3428 static final public EmptyStatement EmptyStatement() throws ParseException {
3430 jj_consume_token(SEMICOLON);
3431 pos = SimpleCharStream.getPosition();
3432 {if (true) return new EmptyStatement(pos-1,pos);}
3433 throw new Error("Missing return statement in function");
3436 static final public Expression StatementExpression() throws ParseException {
3437 final Expression expr,expr2;
3439 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3442 expr = PreIncDecExpression();
3443 {if (true) return expr;}
3448 expr = PrimaryExpression();
3449 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3452 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3454 jj_consume_token(PLUS_PLUS);
3455 {if (true) return new PostfixedUnaryExpression(expr,
3456 OperatorIds.PLUS_PLUS,
3457 SimpleCharStream.getPosition());}
3460 jj_consume_token(MINUS_MINUS);
3461 {if (true) return new PostfixedUnaryExpression(expr,
3462 OperatorIds.MINUS_MINUS,
3463 SimpleCharStream.getPosition());}
3466 jj_la1[91] = jj_gen;
3467 jj_consume_token(-1);
3468 throw new ParseException();
3472 jj_la1[92] = jj_gen;
3475 {if (true) return expr;}
3478 jj_la1[93] = jj_gen;
3479 jj_consume_token(-1);
3480 throw new ParseException();
3482 throw new Error("Missing return statement in function");
3485 static final public SwitchStatement SwitchStatement() throws ParseException {
3486 final Expression variable;
3487 final AbstractCase[] cases;
3488 final int pos = SimpleCharStream.getPosition();
3489 jj_consume_token(SWITCH);
3491 jj_consume_token(LPAREN);
3492 } catch (ParseException e) {
3493 errorMessage = "'(' expected after 'switch'";
3495 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3496 errorEnd = SimpleCharStream.getPosition() + 1;
3497 {if (true) throw e;}
3500 variable = Expression();
3501 } catch (ParseException e) {
3502 if (errorMessage != null) {
3503 {if (true) throw e;}
3505 errorMessage = "expression expected";
3507 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3508 errorEnd = SimpleCharStream.getPosition() + 1;
3509 {if (true) throw e;}
3512 jj_consume_token(RPAREN);
3513 } catch (ParseException e) {
3514 errorMessage = "')' expected";
3516 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3517 errorEnd = SimpleCharStream.getPosition() + 1;
3518 {if (true) throw e;}
3520 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3522 cases = switchStatementBrace();
3525 cases = switchStatementColon(pos, pos + 6);
3528 jj_la1[94] = jj_gen;
3529 jj_consume_token(-1);
3530 throw new ParseException();
3532 {if (true) return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());}
3533 throw new Error("Missing return statement in function");
3536 static final public AbstractCase[] switchStatementBrace() throws ParseException {
3538 final ArrayList cases = new ArrayList();
3539 jj_consume_token(LBRACE);
3542 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3548 jj_la1[95] = jj_gen;
3551 cas = switchLabel0();
3555 jj_consume_token(RBRACE);
3556 final AbstractCase[] abcase = new AbstractCase[cases.size()];
3557 cases.toArray(abcase);
3558 {if (true) return abcase;}
3559 } catch (ParseException e) {
3560 errorMessage = "'}' expected";
3562 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3563 errorEnd = SimpleCharStream.getPosition() + 1;
3564 {if (true) throw e;}
3566 throw new Error("Missing return statement in function");
3570 * A Switch statement with : ... endswitch;
3571 * @param start the begin offset of the switch
3572 * @param end the end offset of the switch
3574 static final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
3576 final ArrayList cases = new ArrayList();
3577 jj_consume_token(COLON);
3579 setMarker(fileToParse,
3580 "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
3584 "Line " + token.beginLine);
3585 } catch (CoreException e) {
3586 PHPeclipsePlugin.log(e);
3590 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3596 jj_la1[96] = jj_gen;
3599 cas = switchLabel0();
3603 jj_consume_token(ENDSWITCH);
3604 } catch (ParseException e) {
3605 errorMessage = "'endswitch' expected";
3607 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3608 errorEnd = SimpleCharStream.getPosition() + 1;
3609 {if (true) throw e;}
3612 jj_consume_token(SEMICOLON);
3613 final AbstractCase[] abcase = new AbstractCase[cases.size()];
3614 cases.toArray(abcase);
3615 {if (true) return abcase;}
3616 } catch (ParseException e) {
3617 errorMessage = "';' expected after 'endswitch' keyword";
3619 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3620 errorEnd = SimpleCharStream.getPosition() + 1;
3621 {if (true) throw e;}
3623 throw new Error("Missing return statement in function");
3626 static final public AbstractCase switchLabel0() throws ParseException {
3627 final Expression expr;
3628 Statement statement;
3629 final ArrayList stmts = new ArrayList();
3630 final int pos = SimpleCharStream.getPosition();
3631 expr = SwitchLabel();
3634 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3669 case INTEGER_LITERAL:
3670 case FLOATING_POINT_LITERAL:
3671 case STRING_LITERAL:
3680 jj_la1[97] = jj_gen;
3683 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3717 case INTEGER_LITERAL:
3718 case FLOATING_POINT_LITERAL:
3719 case STRING_LITERAL:
3725 statement = BlockStatementNoBreak();
3726 stmts.add(statement);
3729 statement = htmlBlock();
3730 stmts.add(statement);
3733 jj_la1[98] = jj_gen;
3734 jj_consume_token(-1);
3735 throw new ParseException();
3738 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3740 statement = BreakStatement();
3741 stmts.add(statement);
3744 jj_la1[99] = jj_gen;
3747 final Statement[] stmtsArray = new Statement[stmts.size()];
3748 stmts.toArray(stmtsArray);
3749 if (expr == null) {//it's a default
3750 {if (true) return new DefaultCase(stmtsArray,pos,SimpleCharStream.getPosition());}
3752 {if (true) return new Case(expr,stmtsArray,pos,SimpleCharStream.getPosition());}
3753 throw new Error("Missing return statement in function");
3758 * case Expression() :
3760 * @return the if it was a case and null if not
3762 static final public Expression SwitchLabel() throws ParseException {
3763 final Expression expr;
3764 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3766 token = jj_consume_token(CASE);
3768 expr = Expression();
3769 } catch (ParseException e) {
3770 if (errorMessage != null) {if (true) throw e;}
3771 errorMessage = "expression expected after 'case' keyword";
3773 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3774 errorEnd = SimpleCharStream.getPosition() + 1;
3775 {if (true) throw e;}
3778 jj_consume_token(COLON);
3779 {if (true) return expr;}
3780 } catch (ParseException e) {
3781 errorMessage = "':' expected after case expression";
3783 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3784 errorEnd = SimpleCharStream.getPosition() + 1;
3785 {if (true) throw e;}
3789 token = jj_consume_token(_DEFAULT);
3791 jj_consume_token(COLON);
3792 {if (true) return null;}
3793 } catch (ParseException e) {
3794 errorMessage = "':' expected after 'default' keyword";
3796 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3797 errorEnd = SimpleCharStream.getPosition() + 1;
3798 {if (true) throw e;}
3802 jj_la1[100] = jj_gen;
3803 jj_consume_token(-1);
3804 throw new ParseException();
3806 throw new Error("Missing return statement in function");
3809 static final public Break BreakStatement() throws ParseException {
3810 Expression expression = null;
3811 final int start = SimpleCharStream.getPosition();
3812 jj_consume_token(BREAK);
3813 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3829 case INTEGER_LITERAL:
3830 case FLOATING_POINT_LITERAL:
3831 case STRING_LITERAL:
3835 expression = Expression();
3838 jj_la1[101] = jj_gen;
3842 jj_consume_token(SEMICOLON);
3843 } catch (ParseException e) {
3844 errorMessage = "';' expected after 'break' keyword";
3846 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3847 errorEnd = SimpleCharStream.getPosition() + 1;
3848 {if (true) throw e;}
3850 {if (true) return new Break(expression, start, SimpleCharStream.getPosition());}
3851 throw new Error("Missing return statement in function");
3854 static final public IfStatement IfStatement() throws ParseException {
3855 final int pos = SimpleCharStream.getPosition();
3856 final Expression condition;
3857 final IfStatement ifStatement;
3858 jj_consume_token(IF);
3859 condition = Condition("if");
3860 ifStatement = IfStatement0(condition, pos,pos+2);
3861 {if (true) return ifStatement;}
3862 throw new Error("Missing return statement in function");
3865 static final public Expression Condition(final String keyword) throws ParseException {
3866 final Expression condition;
3868 jj_consume_token(LPAREN);
3869 } catch (ParseException e) {
3870 errorMessage = "'(' expected after " + keyword + " keyword";
3872 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length();
3873 errorEnd = errorStart +1;
3874 processParseException(e);
3876 condition = Expression();
3878 jj_consume_token(RPAREN);
3879 } catch (ParseException e) {
3880 errorMessage = "')' expected after " + keyword + " keyword";
3882 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
3883 errorEnd = SimpleCharStream.getPosition() + 1;
3884 processParseException(e);
3886 {if (true) return condition;}
3887 throw new Error("Missing return statement in function");
3890 static final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
3891 Statement statement;
3892 final Statement stmt;
3893 final Statement[] statementsArray;
3894 ElseIf elseifStatement;
3895 Else elseStatement = null;
3896 final ArrayList stmts;
3897 final ArrayList elseIfList = new ArrayList();
3898 final ElseIf[] elseIfs;
3899 int pos = SimpleCharStream.getPosition();
3900 final int endStatements;
3901 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3903 jj_consume_token(COLON);
3904 stmts = new ArrayList();
3907 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3941 case INTEGER_LITERAL:
3942 case FLOATING_POINT_LITERAL:
3943 case STRING_LITERAL:
3952 jj_la1[102] = jj_gen;
3955 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3988 case INTEGER_LITERAL:
3989 case FLOATING_POINT_LITERAL:
3990 case STRING_LITERAL:
3996 statement = Statement();
3997 stmts.add(statement);
4000 statement = htmlBlock();
4001 stmts.add(statement);
4004 jj_la1[103] = jj_gen;
4005 jj_consume_token(-1);
4006 throw new ParseException();
4009 endStatements = SimpleCharStream.getPosition();
4012 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4017 jj_la1[104] = jj_gen;
4020 elseifStatement = ElseIfStatementColon();
4021 elseIfList.add(elseifStatement);
4023 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4025 elseStatement = ElseStatementColon();
4028 jj_la1[105] = jj_gen;
4032 setMarker(fileToParse,
4033 "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
4037 "Line " + token.beginLine);
4038 } catch (CoreException e) {
4039 PHPeclipsePlugin.log(e);
4042 jj_consume_token(ENDIF);
4043 } catch (ParseException e) {
4044 errorMessage = "'endif' expected";
4046 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4047 errorEnd = SimpleCharStream.getPosition() + 1;
4048 {if (true) throw e;}
4051 jj_consume_token(SEMICOLON);
4052 } catch (ParseException e) {
4053 errorMessage = "';' expected after 'endif' keyword";
4055 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4056 errorEnd = SimpleCharStream.getPosition() + 1;
4057 {if (true) throw e;}
4059 elseIfs = new ElseIf[elseIfList.size()];
4060 elseIfList.toArray(elseIfs);
4061 if (stmts.size() == 1) {
4062 {if (true) return new IfStatement(condition,
4063 (Statement) stmts.get(0),
4067 SimpleCharStream.getPosition());}
4069 statementsArray = new Statement[stmts.size()];
4070 stmts.toArray(statementsArray);
4071 {if (true) return new IfStatement(condition,
4072 new Block(statementsArray,pos,endStatements),
4076 SimpleCharStream.getPosition());}
4112 case INTEGER_LITERAL:
4113 case FLOATING_POINT_LITERAL:
4114 case STRING_LITERAL:
4120 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4153 case INTEGER_LITERAL:
4154 case FLOATING_POINT_LITERAL:
4155 case STRING_LITERAL:
4167 jj_la1[106] = jj_gen;
4168 jj_consume_token(-1);
4169 throw new ParseException();
4173 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4178 jj_la1[107] = jj_gen;
4181 elseifStatement = ElseIfStatement();
4182 elseIfList.add(elseifStatement);
4184 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4186 jj_consume_token(ELSE);
4188 pos = SimpleCharStream.getPosition();
4189 statement = Statement();
4190 elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());
4191 } catch (ParseException e) {
4192 if (errorMessage != null) {
4193 {if (true) throw e;}
4195 errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
4197 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4198 errorEnd = SimpleCharStream.getPosition() + 1;
4199 {if (true) throw e;}
4203 jj_la1[108] = jj_gen;
4206 elseIfs = new ElseIf[elseIfList.size()];
4207 elseIfList.toArray(elseIfs);
4208 {if (true) return new IfStatement(condition,
4213 SimpleCharStream.getPosition());}
4216 jj_la1[109] = jj_gen;
4217 jj_consume_token(-1);
4218 throw new ParseException();
4220 throw new Error("Missing return statement in function");
4223 static final public ElseIf ElseIfStatementColon() throws ParseException {
4224 final Expression condition;
4225 Statement statement;
4226 final ArrayList list = new ArrayList();
4227 final int pos = SimpleCharStream.getPosition();
4228 jj_consume_token(ELSEIF);
4229 condition = Condition("elseif");
4230 jj_consume_token(COLON);
4233 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4267 case INTEGER_LITERAL:
4268 case FLOATING_POINT_LITERAL:
4269 case STRING_LITERAL:
4278 jj_la1[110] = jj_gen;
4281 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4314 case INTEGER_LITERAL:
4315 case FLOATING_POINT_LITERAL:
4316 case STRING_LITERAL:
4322 statement = Statement();
4323 list.add(statement);
4326 statement = htmlBlock();
4327 list.add(statement);
4330 jj_la1[111] = jj_gen;
4331 jj_consume_token(-1);
4332 throw new ParseException();
4335 final Statement[] stmtsArray = new Statement[list.size()];
4336 list.toArray(stmtsArray);
4337 {if (true) return new ElseIf(condition,stmtsArray ,pos,SimpleCharStream.getPosition());}
4338 throw new Error("Missing return statement in function");
4341 static final public Else ElseStatementColon() throws ParseException {
4342 Statement statement;
4343 final ArrayList list = new ArrayList();
4344 final int pos = SimpleCharStream.getPosition();
4345 jj_consume_token(ELSE);
4346 jj_consume_token(COLON);
4349 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4383 case INTEGER_LITERAL:
4384 case FLOATING_POINT_LITERAL:
4385 case STRING_LITERAL:
4394 jj_la1[112] = jj_gen;
4397 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4430 case INTEGER_LITERAL:
4431 case FLOATING_POINT_LITERAL:
4432 case STRING_LITERAL:
4438 statement = Statement();
4439 list.add(statement);
4442 statement = htmlBlock();
4443 list.add(statement);
4446 jj_la1[113] = jj_gen;
4447 jj_consume_token(-1);
4448 throw new ParseException();
4451 final Statement[] stmtsArray = new Statement[list.size()];
4452 list.toArray(stmtsArray);
4453 {if (true) return new Else(stmtsArray,pos,SimpleCharStream.getPosition());}
4454 throw new Error("Missing return statement in function");
4457 static final public ElseIf ElseIfStatement() throws ParseException {
4458 final Expression condition;
4459 final Statement statement;
4460 final ArrayList list = new ArrayList();
4461 final int pos = SimpleCharStream.getPosition();
4462 jj_consume_token(ELSEIF);
4463 condition = Condition("elseif");
4464 statement = Statement();
4465 list.add(statement);/*todo:do better*/
4466 final Statement[] stmtsArray = new Statement[list.size()];
4467 list.toArray(stmtsArray);
4468 {if (true) return new ElseIf(condition,stmtsArray,pos,SimpleCharStream.getPosition());}
4469 throw new Error("Missing return statement in function");
4472 static final public WhileStatement WhileStatement() throws ParseException {
4473 final Expression condition;
4474 final Statement action;
4475 final int pos = SimpleCharStream.getPosition();
4476 jj_consume_token(WHILE);
4477 condition = Condition("while");
4478 action = WhileStatement0(pos,pos + 5);
4479 {if (true) return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());}
4480 throw new Error("Missing return statement in function");
4483 static final public Statement WhileStatement0(final int start, final int end) throws ParseException {
4484 Statement statement;
4485 final ArrayList stmts = new ArrayList();
4486 final int pos = SimpleCharStream.getPosition();
4487 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4489 jj_consume_token(COLON);
4492 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4525 case INTEGER_LITERAL:
4526 case FLOATING_POINT_LITERAL:
4527 case STRING_LITERAL:
4536 jj_la1[114] = jj_gen;
4539 statement = Statement();
4540 stmts.add(statement);
4543 setMarker(fileToParse,
4544 "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
4548 "Line " + token.beginLine);
4549 } catch (CoreException e) {
4550 PHPeclipsePlugin.log(e);
4553 jj_consume_token(ENDWHILE);
4554 } catch (ParseException e) {
4555 errorMessage = "'endwhile' expected";
4557 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4558 errorEnd = SimpleCharStream.getPosition() + 1;
4559 {if (true) throw e;}
4562 jj_consume_token(SEMICOLON);
4563 final Statement[] stmtsArray = new Statement[stmts.size()];
4564 stmts.toArray(stmtsArray);
4565 {if (true) return new Block(stmtsArray,pos,SimpleCharStream.getPosition());}
4566 } catch (ParseException e) {
4567 errorMessage = "';' expected after 'endwhile' keyword";
4569 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4570 errorEnd = SimpleCharStream.getPosition() + 1;
4571 {if (true) throw e;}
4606 case INTEGER_LITERAL:
4607 case FLOATING_POINT_LITERAL:
4608 case STRING_LITERAL:
4614 statement = Statement();
4615 {if (true) return statement;}
4618 jj_la1[115] = jj_gen;
4619 jj_consume_token(-1);
4620 throw new ParseException();
4622 throw new Error("Missing return statement in function");
4625 static final public DoStatement DoStatement() throws ParseException {
4626 final Statement action;
4627 final Expression condition;
4628 final int pos = SimpleCharStream.getPosition();
4629 jj_consume_token(DO);
4630 action = Statement();
4631 jj_consume_token(WHILE);
4632 condition = Condition("while");
4634 jj_consume_token(SEMICOLON);
4635 {if (true) return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());}
4636 } catch (ParseException e) {
4637 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
4639 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4640 errorEnd = SimpleCharStream.getPosition() + 1;
4641 {if (true) throw e;}
4643 throw new Error("Missing return statement in function");
4646 static final public ForeachStatement ForeachStatement() throws ParseException {
4647 Statement statement;
4648 Expression expression;
4649 final int pos = SimpleCharStream.getPosition();
4650 ArrayVariableDeclaration variable;
4651 jj_consume_token(FOREACH);
4653 jj_consume_token(LPAREN);
4654 } catch (ParseException e) {
4655 errorMessage = "'(' expected after 'foreach' keyword";
4657 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4658 errorEnd = SimpleCharStream.getPosition() + 1;
4659 {if (true) throw e;}
4662 expression = Expression();
4663 } catch (ParseException e) {
4664 errorMessage = "variable expected";
4666 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4667 errorEnd = SimpleCharStream.getPosition() + 1;
4668 {if (true) throw e;}
4671 jj_consume_token(AS);
4672 } catch (ParseException e) {
4673 errorMessage = "'as' expected";
4675 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4676 errorEnd = SimpleCharStream.getPosition() + 1;
4677 {if (true) throw e;}
4680 variable = ArrayVariable();
4681 } catch (ParseException e) {
4682 errorMessage = "variable expected";
4684 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4685 errorEnd = SimpleCharStream.getPosition() + 1;
4686 {if (true) throw e;}
4689 jj_consume_token(RPAREN);
4690 } catch (ParseException e) {
4691 errorMessage = "')' expected after 'foreach' keyword";
4693 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4694 errorEnd = SimpleCharStream.getPosition() + 1;
4695 {if (true) throw e;}
4698 statement = Statement();
4699 } catch (ParseException e) {
4700 if (errorMessage != null) {if (true) throw e;}
4701 errorMessage = "statement expected";
4703 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4704 errorEnd = SimpleCharStream.getPosition() + 1;
4705 {if (true) throw e;}
4707 {if (true) return new ForeachStatement(expression,
4711 SimpleCharStream.getPosition());}
4712 throw new Error("Missing return statement in function");
4715 static final public ForStatement ForStatement() throws ParseException {
4717 final int pos = SimpleCharStream.getPosition();
4718 Expression[] initializations = null;
4719 Expression condition = null;
4720 Expression[] increments = null;
4722 final ArrayList list = new ArrayList();
4723 final int startBlock, endBlock;
4724 token = jj_consume_token(FOR);
4726 jj_consume_token(LPAREN);
4727 } catch (ParseException e) {
4728 errorMessage = "'(' expected after 'for' keyword";
4730 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4731 errorEnd = SimpleCharStream.getPosition() + 1;
4732 {if (true) throw e;}
4734 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4742 initializations = ForInit();
4745 jj_la1[116] = jj_gen;
4748 jj_consume_token(SEMICOLON);
4749 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4765 case INTEGER_LITERAL:
4766 case FLOATING_POINT_LITERAL:
4767 case STRING_LITERAL:
4771 condition = Expression();
4774 jj_la1[117] = jj_gen;
4777 jj_consume_token(SEMICOLON);
4778 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4784 increments = StatementExpressionList();
4787 jj_la1[118] = jj_gen;
4790 jj_consume_token(RPAREN);
4791 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4824 case INTEGER_LITERAL:
4825 case FLOATING_POINT_LITERAL:
4826 case STRING_LITERAL:
4832 action = Statement();
4833 {if (true) return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());}
4836 jj_consume_token(COLON);
4837 startBlock = SimpleCharStream.getPosition();
4840 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4873 case INTEGER_LITERAL:
4874 case FLOATING_POINT_LITERAL:
4875 case STRING_LITERAL:
4884 jj_la1[119] = jj_gen;
4887 action = Statement();
4891 setMarker(fileToParse,
4892 "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
4894 pos+token.image.length(),
4896 "Line " + token.beginLine);
4897 } catch (CoreException e) {
4898 PHPeclipsePlugin.log(e);
4900 endBlock = SimpleCharStream.getPosition();
4902 jj_consume_token(ENDFOR);
4903 } catch (ParseException e) {
4904 errorMessage = "'endfor' expected";
4906 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4907 errorEnd = SimpleCharStream.getPosition() + 1;
4908 {if (true) throw e;}
4911 jj_consume_token(SEMICOLON);
4912 final Statement[] stmtsArray = new Statement[list.size()];
4913 list.toArray(stmtsArray);
4914 {if (true) return new ForStatement(initializations,condition,increments,new Block(stmtsArray,startBlock,endBlock),pos,SimpleCharStream.getPosition());}
4915 } catch (ParseException e) {
4916 errorMessage = "';' expected after 'endfor' keyword";
4918 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
4919 errorEnd = SimpleCharStream.getPosition() + 1;
4920 {if (true) throw e;}
4924 jj_la1[120] = jj_gen;
4925 jj_consume_token(-1);
4926 throw new ParseException();
4928 throw new Error("Missing return statement in function");
4931 static final public Expression[] ForInit() throws ParseException {
4932 final Expression[] exprs;
4933 if (jj_2_5(2147483647)) {
4934 exprs = LocalVariableDeclaration();
4935 {if (true) return exprs;}
4937 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4943 exprs = StatementExpressionList();
4944 {if (true) return exprs;}
4947 jj_la1[121] = jj_gen;
4948 jj_consume_token(-1);
4949 throw new ParseException();
4952 throw new Error("Missing return statement in function");
4955 static final public Expression[] StatementExpressionList() throws ParseException {
4956 final ArrayList list = new ArrayList();
4957 final Expression expr;
4958 expr = StatementExpression();
4962 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4967 jj_la1[122] = jj_gen;
4970 jj_consume_token(COMMA);
4971 StatementExpression();
4974 final Expression[] exprsArray = new Expression[list.size()];
4975 list.toArray(exprsArray);
4976 {if (true) return exprsArray;}
4977 throw new Error("Missing return statement in function");
4980 static final public Continue ContinueStatement() throws ParseException {
4981 Expression expr = null;
4982 final int pos = SimpleCharStream.getPosition();
4983 jj_consume_token(CONTINUE);
4984 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5000 case INTEGER_LITERAL:
5001 case FLOATING_POINT_LITERAL:
5002 case STRING_LITERAL:
5006 expr = Expression();
5009 jj_la1[123] = jj_gen;
5013 jj_consume_token(SEMICOLON);
5014 {if (true) return new Continue(expr,pos,SimpleCharStream.getPosition());}
5015 } catch (ParseException e) {
5016 errorMessage = "';' expected after 'continue' statement";
5018 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
5019 errorEnd = SimpleCharStream.getPosition() + 1;
5020 {if (true) throw e;}
5022 throw new Error("Missing return statement in function");
5025 static final public ReturnStatement ReturnStatement() throws ParseException {
5026 Expression expr = null;
5027 final int pos = SimpleCharStream.getPosition();
5028 jj_consume_token(RETURN);
5029 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5045 case INTEGER_LITERAL:
5046 case FLOATING_POINT_LITERAL:
5047 case STRING_LITERAL:
5051 expr = Expression();
5054 jj_la1[124] = jj_gen;
5058 jj_consume_token(SEMICOLON);
5059 {if (true) return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());}
5060 } catch (ParseException e) {
5061 errorMessage = "';' expected after 'return' statement";
5063 errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1;
5064 errorEnd = SimpleCharStream.getPosition() + 1;
5065 {if (true) throw e;}
5067 throw new Error("Missing return statement in function");
5070 static final private boolean jj_2_1(int xla) {
5071 jj_la = xla; jj_lastpos = jj_scanpos = token;
5072 boolean retval = !jj_3_1();
5077 static final private boolean jj_2_2(int xla) {
5078 jj_la = xla; jj_lastpos = jj_scanpos = token;
5079 boolean retval = !jj_3_2();
5084 static final private boolean jj_2_3(int xla) {
5085 jj_la = xla; jj_lastpos = jj_scanpos = token;
5086 boolean retval = !jj_3_3();
5091 static final private boolean jj_2_4(int xla) {
5092 jj_la = xla; jj_lastpos = jj_scanpos = token;
5093 boolean retval = !jj_3_4();
5098 static final private boolean jj_2_5(int xla) {
5099 jj_la = xla; jj_lastpos = jj_scanpos = token;
5100 boolean retval = !jj_3_5();
5105 static final private boolean jj_3R_155() {
5106 if (jj_3R_161()) return true;
5107 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5111 static final private boolean jj_3R_160() {
5112 if (jj_scan_token(MINUS)) return true;
5113 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5117 static final private boolean jj_3R_159() {
5118 if (jj_scan_token(PLUS)) return true;
5119 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5123 static final private boolean jj_3R_152() {
5130 if (jj_3R_156()) return true;
5131 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5132 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5133 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5137 static final private boolean jj_3R_154() {
5142 if (jj_3R_160()) return true;
5143 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5144 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5145 if (jj_3R_143()) return true;
5146 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5150 static final private boolean jj_3R_158() {
5151 if (jj_3R_152()) return true;
5152 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5156 static final private boolean jj_3R_50() {
5157 if (jj_3R_65()) return true;
5158 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5161 if (jj_3R_66()) jj_scanpos = xsp;
5162 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5166 static final private boolean jj_3R_153() {
5171 if (jj_3R_158()) return true;
5172 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5173 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5177 static final private boolean jj_3R_157() {
5178 if (jj_scan_token(AT)) return true;
5179 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5180 if (jj_3R_153()) return true;
5181 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5185 static final private boolean jj_3R_51() {
5186 if (jj_scan_token(COMMA)) return true;
5187 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5188 if (jj_3R_50()) return true;
5189 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5193 static final private boolean jj_3R_148() {
5194 if (jj_3R_153()) return true;
5195 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5199 static final private boolean jj_3R_143() {
5204 if (jj_3R_148()) return true;
5205 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5206 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5210 static final private boolean jj_3R_147() {
5211 if (jj_scan_token(BIT_AND)) return true;
5212 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5213 if (jj_3R_152()) return true;
5214 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5218 static final private boolean jj_3R_44() {
5219 if (jj_3R_50()) return true;
5220 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5224 if (jj_3R_51()) { jj_scanpos = xsp; break; }
5225 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5230 static final private boolean jj_3R_151() {
5231 if (jj_scan_token(REMAINDER)) return true;
5232 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5236 static final private boolean jj_3R_150() {
5237 if (jj_scan_token(SLASH)) return true;
5238 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5242 static final private boolean jj_3R_149() {
5243 if (jj_scan_token(STAR)) return true;
5244 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5248 static final private boolean jj_3R_144() {
5255 if (jj_3R_151()) return true;
5256 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5257 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5258 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5259 if (jj_3R_143()) return true;
5260 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5264 static final private boolean jj_3R_138() {
5265 if (jj_3R_143()) return true;
5266 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5270 if (jj_3R_144()) { jj_scanpos = xsp; break; }
5271 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5276 static final private boolean jj_3R_146() {
5277 if (jj_scan_token(MINUS)) return true;
5278 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5282 static final private boolean jj_3R_145() {
5283 if (jj_scan_token(PLUS)) return true;
5284 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5288 static final private boolean jj_3R_139() {
5293 if (jj_3R_146()) return true;
5294 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5295 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5296 if (jj_3R_138()) return true;
5297 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5301 static final private boolean jj_3R_132() {
5302 if (jj_3R_138()) return true;
5303 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5307 if (jj_3R_139()) { jj_scanpos = xsp; break; }
5308 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5313 static final private boolean jj_3R_142() {
5314 if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
5315 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5319 static final private boolean jj_3_4() {
5320 if (jj_3R_43()) return true;
5321 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5322 if (jj_scan_token(SEMICOLON)) return true;
5323 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5327 static final private boolean jj_3R_141() {
5328 if (jj_scan_token(RSIGNEDSHIFT)) return true;
5329 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5333 static final private boolean jj_3R_140() {
5334 if (jj_scan_token(LSHIFT)) return true;
5335 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5339 static final private boolean jj_3R_133() {
5346 if (jj_3R_142()) return true;
5347 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5348 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5349 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5350 if (jj_3R_132()) return true;
5351 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5355 static final private boolean jj_3R_124() {
5356 if (jj_3R_132()) return true;
5357 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5361 if (jj_3R_133()) { jj_scanpos = xsp; break; }
5362 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5367 static final private boolean jj_3R_137() {
5368 if (jj_scan_token(GE)) return true;
5369 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5373 static final private boolean jj_3R_201() {
5374 if (jj_scan_token(COMMA)) return true;
5375 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5379 static final private boolean jj_3R_136() {
5380 if (jj_scan_token(LE)) return true;
5381 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5385 static final private boolean jj_3R_135() {
5386 if (jj_scan_token(GT)) return true;
5387 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5391 static final private boolean jj_3R_134() {
5392 if (jj_scan_token(LT)) return true;
5393 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5397 static final private boolean jj_3_2() {
5398 if (jj_scan_token(COMMA)) return true;
5399 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5400 if (jj_3R_40()) return true;
5401 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5405 static final private boolean jj_3R_125() {
5414 if (jj_3R_137()) return true;
5415 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5416 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5417 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5418 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5419 if (jj_3R_124()) return true;
5420 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5424 static final private boolean jj_3R_119() {
5425 if (jj_3R_124()) return true;
5426 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5430 if (jj_3R_125()) { jj_scanpos = xsp; break; }
5431 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5436 static final private boolean jj_3R_205() {
5437 if (jj_scan_token(COMMA)) return true;
5438 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5439 if (jj_3R_43()) return true;
5440 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5444 static final private boolean jj_3R_200() {
5445 if (jj_3R_40()) return true;
5446 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5450 if (jj_3_2()) { jj_scanpos = xsp; break; }
5451 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5456 static final private boolean jj_3_5() {
5457 if (jj_3R_44()) return true;
5458 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5462 static final private boolean jj_3R_203() {
5463 if (jj_3R_43()) return true;
5464 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5468 if (jj_3R_205()) { jj_scanpos = xsp; break; }
5469 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5474 static final private boolean jj_3R_192() {
5475 if (jj_scan_token(LPAREN)) return true;
5476 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5479 if (jj_3R_200()) jj_scanpos = xsp;
5480 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5482 if (jj_3R_201()) jj_scanpos = xsp;
5483 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5484 if (jj_scan_token(RPAREN)) return true;
5485 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5489 static final private boolean jj_3R_204() {
5490 if (jj_scan_token(ARRAYASSIGN)) return true;
5491 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5492 if (jj_3R_43()) return true;
5493 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5497 static final private boolean jj_3R_202() {
5498 if (jj_3R_203()) return true;
5499 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5503 static final private boolean jj_3R_40() {
5504 if (jj_3R_43()) return true;
5505 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5508 if (jj_3R_204()) jj_scanpos = xsp;
5509 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5513 static final private boolean jj_3R_130() {
5514 if (jj_scan_token(TRIPLEEQUAL)) return true;
5515 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5519 static final private boolean jj_3R_129() {
5520 if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
5521 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5525 static final private boolean jj_3R_128() {
5526 if (jj_scan_token(NOT_EQUAL)) return true;
5527 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5531 static final private boolean jj_3R_127() {
5532 if (jj_scan_token(DIF)) return true;
5533 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5537 static final private boolean jj_3R_72() {
5538 if (jj_3R_47()) return true;
5539 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5543 static final private boolean jj_3R_126() {
5544 if (jj_scan_token(EQUAL_EQUAL)) return true;
5545 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5549 static final private boolean jj_3R_196() {
5550 if (jj_scan_token(LPAREN)) return true;
5551 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5554 if (jj_3R_202()) jj_scanpos = xsp;
5555 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5556 if (jj_scan_token(RPAREN)) return true;
5557 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5561 static final private boolean jj_3R_120() {
5572 if (jj_3R_130()) return true;
5573 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5574 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5575 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5576 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5577 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5578 if (jj_3R_119()) return true;
5579 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5583 static final private boolean jj_3R_117() {
5584 if (jj_3R_119()) return true;
5585 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5589 if (jj_3R_120()) { jj_scanpos = xsp; break; }
5590 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5595 static final private boolean jj_3R_178() {
5596 if (jj_scan_token(NULL)) return true;
5597 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5601 static final private boolean jj_3R_177() {
5602 if (jj_scan_token(FALSE)) return true;
5603 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5607 static final private boolean jj_3R_176() {
5608 if (jj_scan_token(TRUE)) return true;
5609 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5613 static final private boolean jj_3R_118() {
5614 if (jj_scan_token(BIT_AND)) return true;
5615 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5616 if (jj_3R_117()) return true;
5617 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5621 static final private boolean jj_3R_175() {
5622 if (jj_scan_token(STRING_LITERAL)) return true;
5623 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5627 static final private boolean jj_3R_174() {
5628 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
5629 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5633 static final private boolean jj_3R_102() {
5634 if (jj_3R_117()) return true;
5635 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5639 if (jj_3R_118()) { jj_scanpos = xsp; break; }
5640 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5645 static final private boolean jj_3R_171() {
5658 if (jj_3R_178()) return true;
5659 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5660 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5661 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5662 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5663 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5664 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5668 static final private boolean jj_3R_173() {
5669 if (jj_scan_token(INTEGER_LITERAL)) return true;
5670 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5674 static final private boolean jj_3R_71() {
5675 if (jj_3R_43()) return true;
5676 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5680 static final private boolean jj_3R_53() {
5685 if (jj_3R_72()) return true;
5686 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5687 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5691 static final private boolean jj_3R_101() {
5692 if (jj_scan_token(LBRACE)) return true;
5693 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5694 if (jj_3R_43()) return true;
5695 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5696 if (jj_scan_token(RBRACE)) return true;
5697 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5701 static final private boolean jj_3R_103() {
5702 if (jj_scan_token(XOR)) return true;
5703 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5704 if (jj_3R_102()) return true;
5705 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5709 static final private boolean jj_3R_70() {
5710 if (jj_scan_token(DOLLAR_ID)) return true;
5711 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5715 static final private boolean jj_3R_98() {
5716 if (jj_3R_102()) return true;
5717 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5721 if (jj_3R_103()) { jj_scanpos = xsp; break; }
5722 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5727 static final private boolean jj_3R_69() {
5728 if (jj_scan_token(DOLLAR)) return true;
5729 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5730 if (jj_3R_52()) return true;
5731 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5735 static final private boolean jj_3R_46() {
5736 if (jj_scan_token(LBRACKET)) return true;
5737 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5740 if (jj_3R_53()) jj_scanpos = xsp;
5741 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5742 if (jj_scan_token(RBRACKET)) return true;
5743 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5747 static final private boolean jj_3R_99() {
5748 if (jj_scan_token(BIT_OR)) return true;
5749 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5750 if (jj_3R_98()) return true;
5751 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5755 static final private boolean jj_3R_91() {
5756 if (jj_3R_98()) return true;
5757 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5761 if (jj_3R_99()) { jj_scanpos = xsp; break; }
5762 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5767 static final private boolean jj_3R_68() {
5768 if (jj_scan_token(IDENTIFIER)) return true;
5769 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5772 if (jj_3R_101()) jj_scanpos = xsp;
5773 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5777 static final private boolean jj_3R_45() {
5778 if (jj_scan_token(CLASSACCESS)) return true;
5779 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5780 if (jj_3R_52()) return true;
5781 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5785 static final private boolean jj_3R_39() {
5790 if (jj_3R_46()) return true;
5791 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5792 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5796 static final private boolean jj_3R_92() {
5797 if (jj_scan_token(DOT)) return true;
5798 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5799 if (jj_3R_91()) return true;
5800 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5804 static final private boolean jj_3R_52() {
5813 if (jj_3R_70()) return true;
5814 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5815 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5816 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5817 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5821 static final private boolean jj_3R_67() {
5822 if (jj_scan_token(LBRACE)) return true;
5823 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5824 if (jj_3R_43()) return true;
5825 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5826 if (jj_scan_token(RBRACE)) return true;
5827 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5831 static final private boolean jj_3R_83() {
5832 if (jj_3R_91()) return true;
5833 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5837 if (jj_3R_92()) { jj_scanpos = xsp; break; }
5838 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5843 static final private boolean jj_3R_90() {
5844 if (jj_scan_token(LBRACE)) return true;
5845 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5846 if (jj_3R_43()) return true;
5847 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5848 if (jj_scan_token(RBRACE)) return true;
5849 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5853 static final private boolean jj_3R_195() {
5854 if (jj_3R_65()) return true;
5855 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5859 static final private boolean jj_3R_194() {
5860 if (jj_3R_47()) return true;
5861 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5865 static final private boolean jj_3R_94() {
5866 if (jj_scan_token(_ANDL)) return true;
5867 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5871 static final private boolean jj_3R_93() {
5872 if (jj_scan_token(AND_AND)) return true;
5873 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5877 static final private boolean jj_3R_193() {
5878 if (jj_scan_token(IDENTIFIER)) return true;
5879 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5883 static final private boolean jj_3R_189() {
5890 if (jj_3R_195()) return true;
5891 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5892 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5893 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5897 static final private boolean jj_3R_84() {
5902 if (jj_3R_94()) return true;
5903 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5904 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5905 if (jj_3R_83()) return true;
5906 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5910 static final private boolean jj_3R_78() {
5911 if (jj_3R_83()) return true;
5912 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5916 if (jj_3R_84()) { jj_scanpos = xsp; break; }
5917 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5922 static final private boolean jj_3R_74() {
5923 if (jj_scan_token(HOOK)) return true;
5924 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5925 if (jj_3R_43()) return true;
5926 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5927 if (jj_scan_token(COLON)) return true;
5928 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5929 if (jj_3R_63()) return true;
5930 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5934 static final private boolean jj_3R_82() {
5935 if (jj_scan_token(DOLLAR)) return true;
5936 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5937 if (jj_3R_52()) return true;
5938 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5942 static final private boolean jj_3R_86() {
5943 if (jj_scan_token(_ORL)) return true;
5944 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5948 static final private boolean jj_3R_85() {
5949 if (jj_scan_token(OR_OR)) return true;
5950 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5954 static final private boolean jj_3R_123() {
5955 if (jj_scan_token(ASSIGN)) return true;
5956 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5957 if (jj_3R_43()) return true;
5958 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5962 static final private boolean jj_3R_81() {
5963 if (jj_scan_token(DOLLAR_ID)) return true;
5964 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5967 if (jj_3R_90()) jj_scanpos = xsp;
5968 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5972 static final private boolean jj_3R_77() {
5977 if (jj_3R_82()) return true;
5978 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5979 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5983 static final private boolean jj_3R_79() {
5988 if (jj_3R_86()) return true;
5989 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5990 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5991 if (jj_3R_78()) return true;
5992 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5996 static final private boolean jj_3R_73() {
5997 if (jj_3R_78()) return true;
5998 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6002 if (jj_3R_79()) { jj_scanpos = xsp; break; }
6003 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6008 static final private boolean jj_3R_131() {
6009 if (jj_3R_65()) return true;
6010 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6014 static final private boolean jj_3R_182() {
6015 if (jj_scan_token(ARRAY)) return true;
6016 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6017 if (jj_3R_192()) return true;
6018 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6022 static final private boolean jj_3R_122() {
6023 if (jj_scan_token(COMMA)) return true;
6024 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6027 if (jj_3R_131()) jj_scanpos = xsp;
6028 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6032 static final private boolean jj_3R_63() {
6033 if (jj_3R_73()) return true;
6034 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6037 if (jj_3R_74()) jj_scanpos = xsp;
6038 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6042 static final private boolean jj_3R_121() {
6043 if (jj_3R_65()) return true;
6044 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6048 static final private boolean jj_3_1() {
6049 if (jj_3R_39()) return true;
6050 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6054 static final private boolean jj_3R_116() {
6055 if (jj_scan_token(TILDEEQUAL)) return true;
6056 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6060 static final private boolean jj_3R_115() {
6061 if (jj_scan_token(DOTASSIGN)) return true;
6062 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6066 static final private boolean jj_3R_114() {
6067 if (jj_scan_token(ORASSIGN)) return true;
6068 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6072 static final private boolean jj_3R_199() {
6073 if (jj_scan_token(STATICCLASSACCESS)) return true;
6074 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6075 if (jj_3R_189()) return true;
6076 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6080 static final private boolean jj_3R_113() {
6081 if (jj_scan_token(XORASSIGN)) return true;
6082 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6086 static final private boolean jj_3R_198() {
6087 if (jj_3R_39()) return true;
6088 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6092 static final private boolean jj_3R_65() {
6093 if (jj_3R_77()) return true;
6094 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6098 if (jj_3_1()) { jj_scanpos = xsp; break; }
6099 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6104 static final private boolean jj_3R_112() {
6105 if (jj_scan_token(ANDASSIGN)) return true;
6106 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6110 static final private boolean jj_3R_197() {
6111 if (jj_3R_196()) return true;
6112 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6116 static final private boolean jj_3R_191() {
6123 if (jj_3R_199()) return true;
6124 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6125 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6126 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6130 static final private boolean jj_3R_111() {
6131 if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
6132 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6136 static final private boolean jj_3R_96() {
6137 if (jj_scan_token(LIST)) return true;
6138 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6139 if (jj_scan_token(LPAREN)) return true;
6140 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6143 if (jj_3R_121()) jj_scanpos = xsp;
6144 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6147 if (jj_3R_122()) { jj_scanpos = xsp; break; }
6148 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6150 if (jj_scan_token(RPAREN)) return true;
6151 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6153 if (jj_3R_123()) jj_scanpos = xsp;
6154 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6158 static final private boolean jj_3R_110() {
6159 if (jj_scan_token(LSHIFTASSIGN)) return true;
6160 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6164 static final private boolean jj_3R_109() {
6165 if (jj_scan_token(MINUSASSIGN)) return true;
6166 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6170 static final private boolean jj_3R_108() {
6171 if (jj_scan_token(PLUSASSIGN)) return true;
6172 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6176 static final private boolean jj_3R_107() {
6177 if (jj_scan_token(REMASSIGN)) return true;
6178 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6182 static final private boolean jj_3R_106() {
6183 if (jj_scan_token(SLASHASSIGN)) return true;
6184 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6188 static final private boolean jj_3R_105() {
6189 if (jj_scan_token(STARASSIGN)) return true;
6190 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6194 static final private boolean jj_3R_104() {
6195 if (jj_scan_token(ASSIGN)) return true;
6196 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6200 static final private boolean jj_3R_100() {
6227 if (jj_3R_116()) return true;
6228 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6229 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6230 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6231 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6232 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6233 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6234 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6235 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6236 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6237 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6238 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6239 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6240 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6244 static final private boolean jj_3R_190() {
6245 if (jj_3R_196()) return true;
6246 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6250 static final private boolean jj_3R_95() {
6251 if (jj_scan_token(PRINT)) return true;
6252 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6253 if (jj_3R_43()) return true;
6254 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6258 static final private boolean jj_3R_181() {
6259 if (jj_scan_token(NEW)) return true;
6260 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6261 if (jj_3R_189()) return true;
6262 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6265 if (jj_3R_190()) jj_scanpos = xsp;
6266 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6270 static final private boolean jj_3R_180() {
6271 if (jj_3R_182()) return true;
6272 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6276 static final private boolean jj_3R_188() {
6277 if (jj_3R_191()) return true;
6278 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6282 static final private boolean jj_3R_179() {
6283 if (jj_scan_token(IDENTIFIER)) return true;
6284 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6288 if (jj_3R_188()) { jj_scanpos = xsp; break; }
6289 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6294 static final private boolean jj_3R_172() {
6301 if (jj_3R_181()) return true;
6302 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6303 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6304 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6308 static final private boolean jj_3R_187() {
6309 if (jj_scan_token(MINUS_MINUS)) return true;
6310 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6314 static final private boolean jj_3R_186() {
6315 if (jj_scan_token(PLUS_PLUS)) return true;
6316 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6320 static final private boolean jj_3R_185() {
6325 if (jj_3R_187()) return true;
6326 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6327 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6331 static final private boolean jj_3R_97() {
6332 if (jj_3R_100()) return true;
6333 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6334 if (jj_3R_43()) return true;
6335 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6339 static final private boolean jj_3R_89() {
6340 if (jj_3R_65()) return true;
6341 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6344 if (jj_3R_97()) jj_scanpos = xsp;
6345 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6349 static final private boolean jj_3R_170() {
6350 if (jj_3R_172()) return true;
6351 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6354 if (jj_3R_185()) jj_scanpos = xsp;
6355 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6359 static final private boolean jj_3R_88() {
6360 if (jj_3R_96()) return true;
6361 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6365 static final private boolean jj_3R_87() {
6366 if (jj_3R_95()) return true;
6367 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6371 static final private boolean jj_3R_80() {
6378 if (jj_3R_89()) return true;
6379 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6380 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6381 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6385 static final private boolean jj_3R_184() {
6386 if (jj_scan_token(ARRAY)) return true;
6387 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6391 static final private boolean jj_3R_183() {
6392 if (jj_3R_47()) return true;
6393 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6397 static final private boolean jj_3R_42() {
6398 if (jj_scan_token(ARRAY)) return true;
6399 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6403 static final private boolean jj_3R_76() {
6404 if (jj_3R_80()) return true;
6405 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6409 static final private boolean jj_3R_75() {
6410 if (jj_scan_token(BANG)) return true;
6411 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6412 if (jj_3R_64()) return true;
6413 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6417 static final private boolean jj_3R_64() {
6422 if (jj_3R_76()) return true;
6423 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6424 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6428 static final private boolean jj_3R_169() {
6429 if (jj_scan_token(LPAREN)) return true;
6430 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6435 if (jj_3R_184()) return true;
6436 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6437 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6438 if (jj_scan_token(RPAREN)) return true;
6439 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6440 if (jj_3R_143()) return true;
6441 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6445 static final private boolean jj_3R_41() {
6446 if (jj_3R_47()) return true;
6447 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6451 static final private boolean jj_3R_49() {
6452 if (jj_3R_64()) return true;
6453 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6457 static final private boolean jj_3R_48() {
6458 if (jj_3R_63()) return true;
6459 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6463 static final private boolean jj_3R_43() {
6468 if (jj_3R_49()) return true;
6469 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6470 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6474 static final private boolean jj_3_3() {
6475 if (jj_scan_token(LPAREN)) return true;
6476 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6481 if (jj_3R_42()) return true;
6482 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6483 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6484 if (jj_scan_token(RPAREN)) return true;
6485 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6489 static final private boolean jj_3R_62() {
6490 if (jj_scan_token(OBJECT)) return true;
6491 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6495 static final private boolean jj_3R_168() {
6496 if (jj_scan_token(LPAREN)) return true;
6497 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6498 if (jj_3R_43()) return true;
6499 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6500 if (jj_scan_token(RPAREN)) return true;
6501 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6505 static final private boolean jj_3R_61() {
6506 if (jj_scan_token(INTEGER)) return true;
6507 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6511 static final private boolean jj_3R_167() {
6512 if (jj_3R_171()) return true;
6513 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6517 static final private boolean jj_3R_166() {
6518 if (jj_3R_170()) return true;
6519 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6523 static final private boolean jj_3R_60() {
6524 if (jj_scan_token(INT)) return true;
6525 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6529 static final private boolean jj_3R_162() {
6538 if (jj_3R_168()) return true;
6539 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6540 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6541 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6542 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6546 static final private boolean jj_3R_165() {
6547 if (jj_3R_169()) return true;
6548 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6552 static final private boolean jj_3R_59() {
6553 if (jj_scan_token(FLOAT)) return true;
6554 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6558 static final private boolean jj_3R_58() {
6559 if (jj_scan_token(DOUBLE)) return true;
6560 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6564 static final private boolean jj_3R_57() {
6565 if (jj_scan_token(REAL)) return true;
6566 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6570 static final private boolean jj_3R_56() {
6571 if (jj_scan_token(BOOLEAN)) return true;
6572 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6576 static final private boolean jj_3R_164() {
6577 if (jj_scan_token(MINUS_MINUS)) return true;
6578 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6582 static final private boolean jj_3R_55() {
6583 if (jj_scan_token(BOOL)) return true;
6584 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6588 static final private boolean jj_3R_163() {
6589 if (jj_scan_token(PLUS_PLUS)) return true;
6590 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6594 static final private boolean jj_3R_47() {
6613 if (jj_3R_62()) return true;
6614 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6615 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6616 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6617 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6618 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6619 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6620 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6621 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6622 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6626 static final private boolean jj_3R_54() {
6627 if (jj_scan_token(STRING)) return true;
6628 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6632 static final private boolean jj_3R_161() {
6637 if (jj_3R_164()) return true;
6638 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6639 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6640 if (jj_3R_172()) return true;
6641 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6645 static final private boolean jj_3R_66() {
6646 if (jj_scan_token(ASSIGN)) return true;
6647 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6648 if (jj_3R_43()) return true;
6649 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6653 static final private boolean jj_3R_156() {
6654 if (jj_3R_162()) return true;
6655 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6659 static private boolean jj_initialized_once = false;
6660 static public PHPParserTokenManager token_source;
6661 static SimpleCharStream jj_input_stream;
6662 static public Token token, jj_nt;
6663 static private int jj_ntk;
6664 static private Token jj_scanpos, jj_lastpos;
6665 static private int jj_la;
6666 static public boolean lookingAhead = false;
6667 static private boolean jj_semLA;
6668 static private int jj_gen;
6669 static final private int[] jj_la1 = new int[125];
6670 static private int[] jj_la1_0;
6671 static private int[] jj_la1_1;
6672 static private int[] jj_la1_2;
6673 static private int[] jj_la1_3;
6674 static private int[] jj_la1_4;
6682 private static void jj_la1_0() {
6683 jj_la1_0 = new int[] {0xf960001e,0x6,0x6,0xf960001e,0x0,0xf9600000,0x0,0xc00000,0xc00000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x0,0x68000000,0x0,0x0,0x0,0x0,0x0,0x0,0x68000000,0x60000000,0x0,0x60000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x8000000,0x8000000,0x0,0x8000000,0x0,0x8000000,0x8000000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x8000000,0x0,0x68000000,0x68000000,0x0,0x0,0x68000000,0x0,0x0,0x81000000,0xf9000000,0x8,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf9600010,0xf9600010,0xf9600000,0xe9600000,0x0,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0xe9600010,0xe9600010,0x10000000,0x0,0x68000000,0xf9000010,0xf9000010,0x2000000,0x4000000,0xf9000010,0x2000000,0x4000000,0xf9000010,0xf9000010,0xf9000010,0xf9000010,0xf9000010,0xf9000000,0xf9000000,0x8000000,0x68000000,0x8000000,0xf9000000,0xf9000000,0x8000000,0x0,0x68000000,0x68000000,};
6685 private static void jj_la1_1() {
6686 jj_la1_1 = new int[] {0x875d507f,0x0,0x0,0x875d507f,0x0,0x875d507f,0x8000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3080000,0x200,0x30c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x30c0000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x30c0000,0x30c0000,0x0,0x30c0000,0x0,0x30c0000,0x0,0x0,0x0,0x180,0x0,0x40000,0x180,0x40000,0x0,0x30c0000,0x30c0000,0x80,0x3080000,0x30c0000,0x0,0x0,0x8451507f,0x875d507f,0x0,0x0,0xf,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x0,0x0,0x0,0x0,0x40000,0x0,0x2400,0x2400,0x875d507f,0x875d507f,0x0,0x2400,0x30c0000,0x875d507f,0x875d507f,0x0,0x0,0x875d507f,0x0,0x0,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x875d507f,0x40000,0x30c0000,0x40000,0x875d507f,0x875d507f,0x40000,0x0,0x30c0000,0x30c0000,};
6688 private static void jj_la1_2() {
6689 jj_la1_2 = new int[] {0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x13c1c00,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x300000,0x0,0x13c1c00,0x0,0x1000000,0x0,0x1000000,0x1000000,0x3fe,0x13c1c00,0x1800,0x0,0x800,0x0,0x4000,0x80010000,0x80010000,0x20000,0x20000,0x0,0x2000000,0x4000000,0x1000000,0x0,0x0,0x0,0x0,0x70000000,0x70000000,0x300000,0x300000,0x8c00000,0x8c00000,0x13c0400,0x3c0400,0x300000,0x3c0000,0xc0000,0x0,0x3fe,0xc0000,0xc0000,0x0,0x0,0x0,0x0,0x0,0xbfe,0x13c1ffe,0x13c1ffe,0x0,0x0,0x13c1c00,0x0,0x400,0x400,0x13c1c00,0x0,0x0,0x0,0x800,0x0,0x800,0x0,0x0,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0xc0000,0xc0000,0xc0000,0x8000,0x0,0x0,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x13c1c00,0x13c1c00,0x0,0x0,0x13c1c00,0x0,0x0,0x13c9c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c1c00,0x13c9c00,0xc0800,0x13c1c00,0xc0000,0x13c1c00,0x13c9c00,0xc0000,0x0,0x13c1c00,0x13c1c00,};
6691 private static void jj_la1_3() {
6692 jj_la1_3 = new int[] {0x2288a2,0x0,0x0,0x2288a2,0x200000,0x2288a2,0x0,0x0,0x0,0x400000,0x0,0x0,0x20000,0x0,0x20000,0x20800,0x22,0x22,0x8a2,0x0,0x88a2,0x400000,0x0,0x400000,0x0,0x0,0x0,0x88a2,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x800000,0x0,0x0,0x0,0xe4000000,0xe4000000,0x1b000000,0x1b000000,0x0,0x0,0x0,0x0,0x0,0x0,0x88a2,0x88a2,0x0,0x88a2,0x0,0x88a2,0x0,0x0,0x0,0x88000,0x8000,0x800,0x88000,0x800,0x800,0x88a2,0x88a2,0x80000,0xa2,0x88a2,0x400000,0x0,0x220800,0x2288a2,0x0,0x0,0x0,0x0,0x400000,0x0,0x0,0x400000,0x400000,0x400000,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x400000,0x0,0x0,0x0,0x800,0x20000,0x0,0x0,0x2288a2,0x2288a2,0x0,0x0,0x88a2,0x2288a2,0x2288a2,0x0,0x0,0x2288a2,0x0,0x0,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x2288a2,0x800,0x88a2,0x800,0x2288a2,0x2288a2,0x800,0x400000,0x88a2,0x88a2,};
6694 private static void jj_la1_4() {
6695 jj_la1_4 = new int[] {0x4000,0x0,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x2,0x2,0x0,0x4000,0x0,0x4000,0x0,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x3ffe,0x4000,0x3ffe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x0,0x0,0x4000,0x0,0x4000,0x2,0x0,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x0,0x0,0x4000,0x0,0x0,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x4000,0x0,0x4000,0x4000,0x0,0x0,0x4000,0x4000,};
6697 static final private JJCalls[] jj_2_rtns = new JJCalls[5];
6698 static private boolean jj_rescan = false;
6699 static private int jj_gc = 0;
6701 public PHPParser(java.io.InputStream stream) {
6702 if (jj_initialized_once) {
6703 System.out.println("ERROR: Second call to constructor of static parser. You must");
6704 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
6705 System.out.println(" during parser generation.");
6708 jj_initialized_once = true;
6709 jj_input_stream = new SimpleCharStream(stream, 1, 1);
6710 token_source = new PHPParserTokenManager(jj_input_stream);
6711 token = new Token();
6714 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6715 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6718 static public void ReInit(java.io.InputStream stream) {
6719 jj_input_stream.ReInit(stream, 1, 1);
6720 token_source.ReInit(jj_input_stream);
6721 token = new Token();
6724 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6725 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6728 public PHPParser(java.io.Reader stream) {
6729 if (jj_initialized_once) {
6730 System.out.println("ERROR: Second call to constructor of static parser. You must");
6731 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
6732 System.out.println(" during parser generation.");
6735 jj_initialized_once = true;
6736 jj_input_stream = new SimpleCharStream(stream, 1, 1);
6737 token_source = new PHPParserTokenManager(jj_input_stream);
6738 token = new Token();
6741 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6742 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6745 static public void ReInit(java.io.Reader stream) {
6746 jj_input_stream.ReInit(stream, 1, 1);
6747 token_source.ReInit(jj_input_stream);
6748 token = new Token();
6751 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6752 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6755 public PHPParser(PHPParserTokenManager tm) {
6756 if (jj_initialized_once) {
6757 System.out.println("ERROR: Second call to constructor of static parser. You must");
6758 System.out.println(" either use ReInit() or set the JavaCC option STATIC to false");
6759 System.out.println(" during parser generation.");
6762 jj_initialized_once = true;
6764 token = new Token();
6767 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6768 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6771 public void ReInit(PHPParserTokenManager tm) {
6773 token = new Token();
6776 for (int i = 0; i < 125; i++) jj_la1[i] = -1;
6777 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
6780 static final private Token jj_consume_token(int kind) throws ParseException {
6782 if ((oldToken = token).next != null) token = token.next;
6783 else token = token.next = token_source.getNextToken();
6785 if (token.kind == kind) {
6787 if (++jj_gc > 100) {
6789 for (int i = 0; i < jj_2_rtns.length; i++) {
6790 JJCalls c = jj_2_rtns[i];
6792 if (c.gen < jj_gen) c.first = null;
6801 throw generateParseException();
6804 static final private boolean jj_scan_token(int kind) {
6805 if (jj_scanpos == jj_lastpos) {
6807 if (jj_scanpos.next == null) {
6808 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
6810 jj_lastpos = jj_scanpos = jj_scanpos.next;
6813 jj_scanpos = jj_scanpos.next;
6816 int i = 0; Token tok = token;
6817 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
6818 if (tok != null) jj_add_error_token(kind, i);
6820 return (jj_scanpos.kind != kind);
6823 static final public Token getNextToken() {
6824 if (token.next != null) token = token.next;
6825 else token = token.next = token_source.getNextToken();
6831 static final public Token getToken(int index) {
6832 Token t = lookingAhead ? jj_scanpos : token;
6833 for (int i = 0; i < index; i++) {
6834 if (t.next != null) t = t.next;
6835 else t = t.next = token_source.getNextToken();
6840 static final private int jj_ntk() {
6841 if ((jj_nt=token.next) == null)
6842 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
6844 return (jj_ntk = jj_nt.kind);
6847 static private java.util.Vector jj_expentries = new java.util.Vector();
6848 static private int[] jj_expentry;
6849 static private int jj_kind = -1;
6850 static private int[] jj_lasttokens = new int[100];
6851 static private int jj_endpos;
6853 static private void jj_add_error_token(int kind, int pos) {
6854 if (pos >= 100) return;
6855 if (pos == jj_endpos + 1) {
6856 jj_lasttokens[jj_endpos++] = kind;
6857 } else if (jj_endpos != 0) {
6858 jj_expentry = new int[jj_endpos];
6859 for (int i = 0; i < jj_endpos; i++) {
6860 jj_expentry[i] = jj_lasttokens[i];
6862 boolean exists = false;
6863 for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
6864 int[] oldentry = (int[])(enum.nextElement());
6865 if (oldentry.length == jj_expentry.length) {
6867 for (int i = 0; i < jj_expentry.length; i++) {
6868 if (oldentry[i] != jj_expentry[i]) {
6876 if (!exists) jj_expentries.addElement(jj_expentry);
6877 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
6881 static public ParseException generateParseException() {
6882 jj_expentries.removeAllElements();
6883 boolean[] la1tokens = new boolean[143];
6884 for (int i = 0; i < 143; i++) {
6885 la1tokens[i] = false;
6888 la1tokens[jj_kind] = true;
6891 for (int i = 0; i < 125; i++) {
6892 if (jj_la1[i] == jj_gen) {
6893 for (int j = 0; j < 32; j++) {
6894 if ((jj_la1_0[i] & (1<<j)) != 0) {
6895 la1tokens[j] = true;
6897 if ((jj_la1_1[i] & (1<<j)) != 0) {
6898 la1tokens[32+j] = true;
6900 if ((jj_la1_2[i] & (1<<j)) != 0) {
6901 la1tokens[64+j] = true;
6903 if ((jj_la1_3[i] & (1<<j)) != 0) {
6904 la1tokens[96+j] = true;
6906 if ((jj_la1_4[i] & (1<<j)) != 0) {
6907 la1tokens[128+j] = true;
6912 for (int i = 0; i < 143; i++) {
6914 jj_expentry = new int[1];
6916 jj_expentries.addElement(jj_expentry);
6921 jj_add_error_token(0, 0);
6922 int[][] exptokseq = new int[jj_expentries.size()][];
6923 for (int i = 0; i < jj_expentries.size(); i++) {
6924 exptokseq[i] = (int[])jj_expentries.elementAt(i);
6926 return new ParseException(token, exptokseq, tokenImage);
6929 static final public void enable_tracing() {
6932 static final public void disable_tracing() {
6935 static final private void jj_rescan_token() {
6937 for (int i = 0; i < 5; i++) {
6938 JJCalls p = jj_2_rtns[i];
6940 if (p.gen > jj_gen) {
6941 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
6943 case 0: jj_3_1(); break;
6944 case 1: jj_3_2(); break;
6945 case 2: jj_3_3(); break;
6946 case 3: jj_3_4(); break;
6947 case 4: jj_3_5(); break;
6951 } while (p != null);
6956 static final private void jj_save(int index, int xla) {
6957 JJCalls p = jj_2_rtns[index];
6958 while (p.gen > jj_gen) {
6959 if (p.next == null) { p = p.next = new JJCalls(); break; }
6962 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
6965 static final class JJCalls {