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;
22 import net.sourceforge.phpdt.internal.corext.Assert;
26 * This php parser is inspired by the Java 1.2 grammar example
27 * given with JavaCC. You can get JavaCC at http://www.webgain.com
28 * You can test the parser with the PHPParserTestCase2.java
29 * @author Matthieu Casanova
31 public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants {
33 //todo : fix the variables names bug
34 //todo : handle tilde operator
37 /** The current segment. */
38 private static OutlineableWithChildren currentSegment;
40 private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$
41 private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$
42 static PHPOutlineInfo outlineInfo;
44 /** The error level of the current ParseException. */
45 private static int errorLevel = ERROR;
46 /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */
47 private static String errorMessage;
49 private static int errorStart = -1;
50 private static int errorEnd = -1;
51 private static PHPDocument phpDocument;
53 private static final String SYNTAX_ERROR_CHAR = "syntax error";
55 * The point where html starts.
56 * It will be used by the token manager to create HTMLCode objects
58 public static int htmlStart;
61 private final static int AstStackIncrement = 100;
62 /** The stack of node. */
63 private static AstNode[] nodes;
64 /** The cursor in expression stack. */
65 private static int nodePtr;
67 public static final boolean PARSER_DEBUG = false;
69 public final void setFileToParse(final IFile fileToParse) {
70 PHPParser.fileToParse = fileToParse;
76 public PHPParser(final IFile fileToParse) {
77 this(new StringReader(""));
78 PHPParser.fileToParse = fileToParse;
81 public final void phpParserTester(final String strEval) throws ParseException {
82 final StringReader stream = new StringReader(strEval);
83 if (jj_input_stream == null) {
84 jj_input_stream = new SimpleCharStream(stream, 1, 1);
85 token_source = new PHPParserTokenManager(jj_input_stream);
87 ReInit(new StringReader(strEval));
89 phpDocument = new PHPDocument(null,"_root".toCharArray());
90 currentSegment = phpDocument;
91 outlineInfo = new PHPOutlineInfo(null, currentSegment);
92 token_source.SwitchTo(PHPParserTokenManager.PHPPARSING);
96 public final void htmlParserTester(final File fileName) throws FileNotFoundException, ParseException {
97 final Reader stream = new FileReader(fileName);
98 if (jj_input_stream == null) {
99 jj_input_stream = new SimpleCharStream(stream, 1, 1);
100 token_source = new PHPParserTokenManager(jj_input_stream);
104 phpDocument = new PHPDocument(null,"_root".toCharArray());
105 currentSegment = phpDocument;
106 outlineInfo = new PHPOutlineInfo(null, currentSegment);
110 public final void htmlParserTester(final String strEval) throws ParseException {
111 final StringReader stream = new StringReader(strEval);
112 if (jj_input_stream == null) {
113 jj_input_stream = new SimpleCharStream(stream, 1, 1);
114 token_source = new PHPParserTokenManager(jj_input_stream);
118 phpDocument = new PHPDocument(null,"_root".toCharArray());
119 currentSegment = phpDocument;
120 outlineInfo = new PHPOutlineInfo(null, currentSegment);
125 * Reinitialize the parser.
127 private static final void init() {
128 nodes = new AstNode[AstStackIncrement];
134 * Add an php node on the stack.
135 * @param node the node that will be added to the stack
137 private static final void pushOnAstNodes(final AstNode node) {
139 nodes[++nodePtr] = node;
140 } catch (IndexOutOfBoundsException e) {
141 final int oldStackLength = nodes.length;
142 final AstNode[] oldStack = nodes;
143 nodes = new AstNode[oldStackLength + AstStackIncrement];
144 System.arraycopy(oldStack, 0, nodes, 0, oldStackLength);
145 nodePtr = oldStackLength;
146 nodes[nodePtr] = node;
150 public final PHPOutlineInfo parseInfo(final Object parent, final String s) {
151 phpDocument = new PHPDocument(parent,"_root".toCharArray());
152 currentSegment = phpDocument;
153 outlineInfo = new PHPOutlineInfo(parent, currentSegment);
154 final StringReader stream = new StringReader(s);
155 if (jj_input_stream == null) {
156 jj_input_stream = new SimpleCharStream(stream, 1, 1);
157 token_source = new PHPParserTokenManager(jj_input_stream);
163 phpDocument.nodes = new AstNode[nodes.length];
164 System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length);
165 if (PHPeclipsePlugin.DEBUG) {
166 PHPeclipsePlugin.log(1,phpDocument.toString());
168 } catch (ParseException e) {
169 processParseException(e);
175 * This function will throw the exception if we are in debug mode
176 * and process it if we are in production mode.
177 * this should be fast since the PARSER_DEBUG is static final so the difference will be at compile time
178 * @param e the exception
179 * @throws ParseException the thrown exception
181 private static void processParseExceptionDebug(final ParseException e) throws ParseException {
185 processParseException(e);
188 * This method will process the parse exception.
189 * If the error message is null, the parse exception wasn't catched and a trace is written in the log
190 * @param e the ParseException
192 private static void processParseException(final ParseException e) {
193 if (errorMessage == null) {
194 PHPeclipsePlugin.log(e);
195 errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it";
196 errorStart = e.currentToken.sourceStart;
197 errorEnd = e.currentToken.sourceEnd;
201 // if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e);
205 * Create marker for the parse error.
206 * @param e the ParseException
208 private static void setMarker(final ParseException e) {
210 if (errorStart == -1) {
211 setMarker(fileToParse,
213 e.currentToken.sourceStart,
214 e.currentToken.sourceEnd,
216 "Line " + e.currentToken.beginLine+", "+e.currentToken.sourceStart+':'+e.currentToken.sourceEnd);
218 setMarker(fileToParse,
223 "Line " + e.currentToken.beginLine+", "+errorStart+':'+errorEnd);
227 } catch (CoreException e2) {
228 PHPeclipsePlugin.log(e2);
232 private static void scanLine(final String output,
235 final int brIndx) throws CoreException {
237 final StringBuffer lineNumberBuffer = new StringBuffer(10);
239 current = output.substring(indx, brIndx);
241 if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) {
242 final int onLine = current.indexOf("on line <b>");
244 lineNumberBuffer.delete(0, lineNumberBuffer.length());
245 for (int i = onLine; i < current.length(); i++) {
246 ch = current.charAt(i);
247 if ('0' <= ch && '9' >= ch) {
248 lineNumberBuffer.append(ch);
252 final int lineNumber = Integer.parseInt(lineNumberBuffer.toString());
254 final Hashtable attributes = new Hashtable();
256 current = current.replaceAll("\n", "");
257 current = current.replaceAll("<b>", "");
258 current = current.replaceAll("</b>", "");
259 MarkerUtilities.setMessage(attributes, current);
261 if (current.indexOf(PARSE_ERROR_STRING) != -1)
262 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR));
263 else if (current.indexOf(PARSE_WARNING_STRING) != -1)
264 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING));
266 attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO));
267 MarkerUtilities.setLineNumber(attributes, lineNumber);
268 MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM);
273 public final void parse(final String s) {
274 final StringReader stream = new StringReader(s);
275 if (jj_input_stream == null) {
276 jj_input_stream = new SimpleCharStream(stream, 1, 1);
277 token_source = new PHPParserTokenManager(jj_input_stream);
283 } catch (ParseException e) {
284 processParseException(e);
289 * Call the php parse command ( php -l -f <filename> )
290 * and create markers according to the external parser output
292 public static void phpExternalParse(final IFile file) {
293 final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore();
294 final String filename = file.getLocation().toString();
296 final String[] arguments = { filename };
297 final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF));
298 final String command = form.format(arguments);
300 final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: ");
303 // parse the buffer to find the errors and warnings
304 createMarkers(parserResult, file);
305 } catch (CoreException e) {
306 PHPeclipsePlugin.log(e);
311 * Put a new html block in the stack.
313 public final void createNewHTMLCode() {
314 final int currentPosition = token.sourceStart;
315 if (currentPosition == htmlStart ||
316 currentPosition < htmlStart ||
317 currentPosition > jj_input_stream.getCurrentBuffer().length()) {
320 final String html = jj_input_stream.getCurrentBuffer().substring(htmlStart, currentPosition);
321 pushOnAstNodes(new HTMLCode(html, htmlStart,currentPosition));
324 /** Create a new task. */
325 public final void createNewTask(final int todoStart) {
326 final String todo = jj_input_stream.getCurrentBuffer().substring(todoStart,
327 jj_input_stream.getCurrentBuffer().indexOf("\n",
331 setMarker(fileToParse,
333 jj_input_stream.getBeginLine(),
335 "Line "+jj_input_stream.getBeginLine());
336 } catch (CoreException e) {
337 PHPeclipsePlugin.log(e);
342 private final void parse() throws ParseException {
346 final public void todo() throws ParseException {
348 todoToken = jj_consume_token(23);
349 createNewTask(todoToken.sourceStart);
352 final public void phpTest() throws ParseException {
357 final public void phpFile() throws ParseException {
361 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
400 case INTEGER_LITERAL:
401 case FLOATING_POINT_LITERAL:
418 } catch (TokenMgrError e) {
419 PHPeclipsePlugin.log(e);
420 errorStart = jj_input_stream.getBeginOffset();
421 errorEnd = jj_input_stream.getEndOffset();
422 errorMessage = e.getMessage();
424 {if (true) throw generateParseException();}
429 * A php block is a <?= expression [;]?>
430 * or <?php somephpcode ?>
431 * or <? somephpcode ?>
433 final public void PhpBlock() throws ParseException {
434 final PHPEchoBlock phpEchoBlock;
435 final Token token,phpEnd;
436 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
438 phpEchoBlock = phpEchoBlock();
439 pushOnAstNodes(phpEchoBlock);
478 case INTEGER_LITERAL:
479 case FLOATING_POINT_LITERAL:
487 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
490 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
492 jj_consume_token(PHPSTARTLONG);
495 token = jj_consume_token(PHPSTARTSHORT);
497 setMarker(fileToParse,
498 "You should use '<?php' instead of '<?' it will avoid some problems with XML",
502 "Line " + token.beginLine);
503 } catch (CoreException e) {
504 PHPeclipsePlugin.log(e);
509 jj_consume_token(-1);
510 throw new ParseException();
520 phpEnd = jj_consume_token(PHPEND);
521 htmlStart = phpEnd.sourceEnd;
522 } catch (ParseException e) {
523 errorMessage = "'?>' expected";
525 errorStart = e.currentToken.sourceStart;
526 errorEnd = e.currentToken.sourceEnd;
527 processParseExceptionDebug(e);
532 jj_consume_token(-1);
533 throw new ParseException();
537 final public PHPEchoBlock phpEchoBlock() throws ParseException {
538 final Expression expr;
539 final PHPEchoBlock echoBlock;
540 final Token token, token2;
541 token = jj_consume_token(PHPECHOSTART);
544 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
546 jj_consume_token(SEMICOLON);
552 token2 = jj_consume_token(PHPEND);
553 htmlStart = token2.sourceEnd;
555 echoBlock = new PHPEchoBlock(expr,token.sourceStart,token2.sourceEnd);
556 pushOnAstNodes(echoBlock);
557 {if (true) return echoBlock;}
558 throw new Error("Missing return statement in function");
561 final public void Php() throws ParseException {
564 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
599 case INTEGER_LITERAL:
600 case FLOATING_POINT_LITERAL:
618 final public ClassDeclaration ClassDeclaration() throws ParseException {
619 final ClassDeclaration classDeclaration;
620 Token className = null;
621 final Token superclassName, token, extendsToken;
622 String classNameImage = SYNTAX_ERROR_CHAR;
623 String superclassNameImage = null;
625 token = jj_consume_token(CLASS);
627 className = jj_consume_token(IDENTIFIER);
628 classNameImage = className.image;
629 } catch (ParseException e) {
630 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
632 errorStart = token.sourceEnd+1;
633 errorEnd = token.sourceEnd+1;
634 processParseExceptionDebug(e);
636 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
638 extendsToken = jj_consume_token(EXTENDS);
640 superclassName = jj_consume_token(IDENTIFIER);
641 superclassNameImage = superclassName.image;
642 } catch (ParseException e) {
643 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected";
645 errorStart = extendsToken.sourceEnd+1;
646 errorEnd = extendsToken.sourceEnd+1;
647 processParseExceptionDebug(e);
648 superclassNameImage = SYNTAX_ERROR_CHAR;
656 if (className == null) {
657 start = token.sourceStart;
658 end = token.sourceEnd;
660 start = className.sourceStart;
661 end = className.sourceEnd;
663 if (superclassNameImage == null) {
665 classDeclaration = new ClassDeclaration(currentSegment,
670 classDeclaration = new ClassDeclaration(currentSegment,
676 currentSegment.add(classDeclaration);
677 currentSegment = classDeclaration;
678 classEnd = ClassBody(classDeclaration);
679 currentSegment = (OutlineableWithChildren) currentSegment.getParent();
680 classDeclaration.sourceEnd = classEnd;
681 pushOnAstNodes(classDeclaration);
682 {if (true) return classDeclaration;}
683 throw new Error("Missing return statement in function");
686 final public int ClassBody(final ClassDeclaration classDeclaration) throws ParseException {
689 jj_consume_token(LBRACE);
690 } catch (ParseException e) {
691 errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected";
693 errorStart = e.currentToken.sourceStart;
694 errorEnd = e.currentToken.sourceEnd;
695 processParseExceptionDebug(e);
699 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
708 ClassBodyDeclaration(classDeclaration);
711 token = jj_consume_token(RBRACE);
712 {if (true) return token.sourceEnd;}
713 } catch (ParseException e) {
714 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected";
716 errorStart = e.currentToken.sourceStart;
717 errorEnd = e.currentToken.sourceEnd;
718 processParseExceptionDebug(e);
719 {if (true) return this.token.sourceEnd;}
721 throw new Error("Missing return statement in function");
725 * A class can contain only methods and fields.
727 final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException {
728 final MethodDeclaration method;
729 final FieldDeclaration field;
730 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
732 method = MethodDeclaration();
733 method.analyzeCode();
734 classDeclaration.addMethod(method);
737 field = FieldDeclaration();
738 classDeclaration.addField(field);
742 jj_consume_token(-1);
743 throw new ParseException();
748 * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;.
749 * it is only used by ClassBodyDeclaration()
751 final public FieldDeclaration FieldDeclaration() throws ParseException {
752 VariableDeclaration variableDeclaration;
753 final VariableDeclaration[] list;
754 final ArrayList arrayList = new ArrayList();
758 token = jj_consume_token(VAR);
759 variableDeclaration = VariableDeclaratorNoSuffix();
760 arrayList.add(variableDeclaration);
761 pos = variableDeclaration.sourceEnd;
764 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
772 jj_consume_token(COMMA);
773 variableDeclaration = VariableDeclaratorNoSuffix();
774 arrayList.add(variableDeclaration);
775 outlineInfo.addVariable(variableDeclaration.name());
776 pos = variableDeclaration.sourceEnd;
779 token2 = jj_consume_token(SEMICOLON);
780 } catch (ParseException e) {
781 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration";
785 processParseExceptionDebug(e);
787 list = new VariableDeclaration[arrayList.size()];
788 arrayList.toArray(list);
790 if (token2 == null) {
791 end = list[list.length-1].sourceEnd;
793 end = token2.sourceEnd;
795 {if (true) return new FieldDeclaration(list,
799 throw new Error("Missing return statement in function");
803 * a strict variable declarator : there cannot be a suffix here.
804 * It will be used by fields and formal parameters
806 final public VariableDeclaration VariableDeclaratorNoSuffix() throws ParseException {
807 final Token token, lbrace,rbrace;
808 Expression expr, initializer = null;
811 jj_consume_token(DOLLAR);
812 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
814 token = jj_consume_token(IDENTIFIER);
815 variable = new Variable(token.image,token.sourceStart,token.sourceEnd);
818 lbrace = jj_consume_token(LBRACE);
820 rbrace = jj_consume_token(RBRACE);
821 variable = new Variable(expr,lbrace.sourceStart,rbrace.sourceEnd);
825 jj_consume_token(-1);
826 throw new ParseException();
828 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
830 assignToken = jj_consume_token(ASSIGN);
832 initializer = VariableInitializer();
833 } catch (ParseException e) {
834 errorMessage = "Literal expression expected in variable initializer";
836 errorStart = assignToken.sourceEnd +1;
837 errorEnd = assignToken.sourceEnd +1;
838 processParseExceptionDebug(e);
845 if (initializer == null) {
846 {if (true) return new VariableDeclaration(currentSegment,
848 variable.sourceStart,
849 variable.sourceEnd);}
851 {if (true) return new VariableDeclaration(currentSegment,
854 VariableDeclaration.EQUAL,
855 variable.sourceStart);}
856 throw new Error("Missing return statement in function");
860 * this will be used by static statement
862 final public VariableDeclaration VariableDeclarator() throws ParseException {
863 final AbstractVariable variable;
864 Expression initializer = null;
866 variable = VariableDeclaratorId();
867 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
869 token = jj_consume_token(ASSIGN);
871 initializer = VariableInitializer();
872 } catch (ParseException e) {
873 errorMessage = "Literal expression expected in variable initializer";
875 errorStart = token.sourceEnd+1;
876 errorEnd = token.sourceEnd+1;
877 processParseExceptionDebug(e);
884 if (initializer == null) {
885 {if (true) return new VariableDeclaration(currentSegment,
887 variable.sourceStart,
888 variable.sourceEnd);}
890 {if (true) return new VariableDeclaration(currentSegment,
893 VariableDeclaration.EQUAL,
894 variable.sourceStart);}
895 throw new Error("Missing return statement in function");
900 * @return the variable name (with suffix)
902 final public AbstractVariable VariableDeclaratorId() throws ParseException {
904 AbstractVariable expression = null;
914 expression = VariableSuffix(var);
916 if (expression == null) {
917 {if (true) return var;}
919 {if (true) return expression;}
920 } catch (ParseException e) {
921 errorMessage = "'$' expected for variable identifier";
923 errorStart = e.currentToken.sourceStart;
924 errorEnd = e.currentToken.sourceEnd;
927 throw new Error("Missing return statement in function");
930 final public Variable Variable() throws ParseException {
931 Variable variable = null;
933 token = jj_consume_token(DOLLAR);
935 {if (true) return variable;}
936 throw new Error("Missing return statement in function");
939 final public Variable Var() throws ParseException {
940 Variable variable = null;
941 final Token token,token2;
942 ConstantIdentifier constant;
943 Expression expression;
944 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
946 token = jj_consume_token(DOLLAR);
948 {if (true) return new Variable(variable,variable.sourceStart,variable.sourceEnd);}
951 token = jj_consume_token(LBRACE);
952 expression = Expression();
953 token2 = jj_consume_token(RBRACE);
954 {if (true) return new Variable(expression,
959 token = jj_consume_token(IDENTIFIER);
960 outlineInfo.addVariable('$' + token.image);
961 {if (true) return new Variable(token.image,token.sourceStart,token.sourceEnd);}
965 jj_consume_token(-1);
966 throw new ParseException();
968 throw new Error("Missing return statement in function");
971 final public Expression VariableInitializer() throws ParseException {
972 final Expression expr;
973 final Token token, token2;
974 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
978 case INTEGER_LITERAL:
979 case FLOATING_POINT_LITERAL:
983 {if (true) return expr;}
986 token2 = jj_consume_token(MINUS);
987 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
988 case INTEGER_LITERAL:
989 token = jj_consume_token(INTEGER_LITERAL);
991 case FLOATING_POINT_LITERAL:
992 token = jj_consume_token(FLOATING_POINT_LITERAL);
996 jj_consume_token(-1);
997 throw new ParseException();
999 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
1001 token2.sourceStart);}
1004 token2 = jj_consume_token(PLUS);
1005 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1006 case INTEGER_LITERAL:
1007 token = jj_consume_token(INTEGER_LITERAL);
1009 case FLOATING_POINT_LITERAL:
1010 token = jj_consume_token(FLOATING_POINT_LITERAL);
1013 jj_la1[15] = jj_gen;
1014 jj_consume_token(-1);
1015 throw new ParseException();
1017 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
1019 token2.sourceStart);}
1022 expr = ArrayDeclarator();
1023 {if (true) return expr;}
1026 token = jj_consume_token(IDENTIFIER);
1027 {if (true) return new ConstantIdentifier(token);}
1030 jj_la1[16] = jj_gen;
1031 jj_consume_token(-1);
1032 throw new ParseException();
1034 throw new Error("Missing return statement in function");
1037 final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
1038 final Expression expr,expr2;
1039 expr = Expression();
1040 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1042 jj_consume_token(ARRAYASSIGN);
1043 expr2 = Expression();
1044 {if (true) return new ArrayVariableDeclaration(expr,expr2);}
1047 jj_la1[17] = jj_gen;
1050 {if (true) return new ArrayVariableDeclaration(expr,jj_input_stream.getPosition());}
1051 throw new Error("Missing return statement in function");
1054 final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
1055 ArrayVariableDeclaration expr;
1056 final ArrayList list = new ArrayList();
1057 jj_consume_token(LPAREN);
1058 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1074 case INTEGER_LITERAL:
1075 case FLOATING_POINT_LITERAL:
1076 case STRING_LITERAL:
1081 expr = ArrayVariable();
1090 jj_consume_token(COMMA);
1091 expr = ArrayVariable();
1096 jj_la1[18] = jj_gen;
1099 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1101 jj_consume_token(COMMA);
1105 jj_la1[19] = jj_gen;
1108 jj_consume_token(RPAREN);
1109 final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
1111 {if (true) return vars;}
1112 throw new Error("Missing return statement in function");
1116 * A Method Declaration.
1117 * <b>function</b> MetodDeclarator() Block()
1119 final public MethodDeclaration MethodDeclaration() throws ParseException {
1120 final MethodDeclaration functionDeclaration;
1122 final OutlineableWithChildren seg = currentSegment;
1124 token = jj_consume_token(FUNCTION);
1126 functionDeclaration = MethodDeclarator(token.sourceStart);
1127 outlineInfo.addVariable(functionDeclaration.name);
1128 } catch (ParseException e) {
1129 if (errorMessage != null) {if (true) throw e;}
1130 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1132 errorStart = e.currentToken.sourceStart;
1133 errorEnd = e.currentToken.sourceEnd;
1134 {if (true) throw e;}
1136 currentSegment = functionDeclaration;
1138 functionDeclaration.statements = block.statements;
1139 currentSegment = seg;
1140 {if (true) return functionDeclaration;}
1141 throw new Error("Missing return statement in function");
1145 * A MethodDeclarator.
1146 * [&] IDENTIFIER(parameters ...).
1147 * @return a function description for the outline
1149 final public MethodDeclaration MethodDeclarator(final int start) throws ParseException {
1150 Token identifier = null;
1151 Token reference = null;
1152 final ArrayList formalParameters = new ArrayList();
1153 String identifierChar = SYNTAX_ERROR_CHAR;
1155 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1157 reference = jj_consume_token(BIT_AND);
1158 end = reference.sourceEnd;
1161 jj_la1[20] = jj_gen;
1165 identifier = jj_consume_token(IDENTIFIER);
1166 identifierChar = identifier.image;
1167 end = identifier.sourceEnd;
1168 } catch (ParseException e) {
1169 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1171 errorStart = e.currentToken.sourceEnd;
1172 errorEnd = e.currentToken.next.sourceStart;
1173 processParseExceptionDebug(e);
1175 end = FormalParameters(formalParameters);
1176 int nameStart, nameEnd;
1177 if (identifier == null) {
1178 if (reference == null) {
1179 nameStart = start + 9;
1180 nameEnd = start + 10;
1182 nameStart = reference.sourceEnd + 1;
1183 nameEnd = reference.sourceEnd + 2;
1186 nameStart = identifier.sourceStart;
1187 nameEnd = identifier.sourceEnd;
1189 {if (true) return new MethodDeclaration(currentSegment,
1197 throw new Error("Missing return statement in function");
1201 * FormalParameters follows method identifier.
1202 * (FormalParameter())
1204 final public int FormalParameters(final ArrayList parameters) throws ParseException {
1205 VariableDeclaration var;
1207 Token tok = this.token;
1208 int end = tok.sourceEnd;
1210 tok = jj_consume_token(LPAREN);
1211 end = tok.sourceEnd;
1212 } catch (ParseException e) {
1213 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
1215 errorStart = e.currentToken.next.sourceStart;
1216 errorEnd = e.currentToken.next.sourceEnd;
1217 processParseExceptionDebug(e);
1219 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1222 var = FormalParameter();
1223 parameters.add(var);end = var.sourceEnd;
1226 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1231 jj_la1[21] = jj_gen;
1234 jj_consume_token(COMMA);
1235 var = FormalParameter();
1236 parameters.add(var);end = var.sourceEnd;
1240 jj_la1[22] = jj_gen;
1244 token = jj_consume_token(RPAREN);
1245 end = token.sourceEnd;
1246 } catch (ParseException e) {
1247 errorMessage = "')' expected";
1249 errorStart = e.currentToken.next.sourceStart;
1250 errorEnd = e.currentToken.next.sourceEnd;
1251 processParseExceptionDebug(e);
1253 {if (true) return end;}
1254 throw new Error("Missing return statement in function");
1258 * A formal parameter.
1259 * $varname[=value] (,$varname[=value])
1261 final public VariableDeclaration FormalParameter() throws ParseException {
1262 final VariableDeclaration variableDeclaration;
1264 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1266 token = jj_consume_token(BIT_AND);
1269 jj_la1[23] = jj_gen;
1272 variableDeclaration = VariableDeclaratorNoSuffix();
1273 outlineInfo.addVariable('$'+variableDeclaration.name());
1274 if (token != null) {
1275 variableDeclaration.setReference(true);
1277 {if (true) return variableDeclaration;}
1278 throw new Error("Missing return statement in function");
1281 final public ConstantIdentifier Type() throws ParseException {
1283 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1285 token = jj_consume_token(STRING);
1286 {if (true) return new ConstantIdentifier(token);}
1289 token = jj_consume_token(BOOL);
1290 {if (true) return new ConstantIdentifier(token);}
1293 token = jj_consume_token(BOOLEAN);
1294 {if (true) return new ConstantIdentifier(token);}
1297 token = jj_consume_token(REAL);
1298 {if (true) return new ConstantIdentifier(token);}
1301 token = jj_consume_token(DOUBLE);
1302 {if (true) return new ConstantIdentifier(token);}
1305 token = jj_consume_token(FLOAT);
1306 {if (true) return new ConstantIdentifier(token);}
1309 token = jj_consume_token(INT);
1310 {if (true) return new ConstantIdentifier(token);}
1313 token = jj_consume_token(INTEGER);
1314 {if (true) return new ConstantIdentifier(token);}
1317 token = jj_consume_token(OBJECT);
1318 {if (true) return new ConstantIdentifier(token);}
1321 jj_la1[24] = jj_gen;
1322 jj_consume_token(-1);
1323 throw new ParseException();
1325 throw new Error("Missing return statement in function");
1328 final public Expression Expression() throws ParseException {
1329 final Expression expr;
1330 Expression initializer = null;
1331 int assignOperator = -1;
1332 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1346 case INTEGER_LITERAL:
1347 case FLOATING_POINT_LITERAL:
1348 case STRING_LITERAL:
1353 expr = ConditionalExpression();
1354 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1367 case RSIGNEDSHIFTASSIGN:
1368 assignOperator = AssignmentOperator();
1370 initializer = Expression();
1371 } catch (ParseException e) {
1372 if (errorMessage != null) {
1373 {if (true) throw e;}
1375 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1377 errorEnd = jj_input_stream.getPosition();
1378 {if (true) throw e;}
1382 jj_la1[25] = jj_gen;
1385 if (assignOperator != -1) {// todo : change this, very very bad :(
1386 if (expr instanceof AbstractVariable) {
1387 {if (true) return new VariableDeclaration(currentSegment,
1388 (AbstractVariable) expr,
1391 initializer.sourceEnd);}
1393 String varName = expr.toStringExpression().substring(1);
1394 {if (true) return new VariableDeclaration(currentSegment,
1395 new Variable(varName,
1399 initializer.sourceEnd);}
1401 {if (true) return expr;}
1405 expr = ExpressionWBang();
1406 {if (true) return expr;}
1409 jj_la1[26] = jj_gen;
1410 jj_consume_token(-1);
1411 throw new ParseException();
1413 throw new Error("Missing return statement in function");
1416 final public Expression ExpressionWBang() throws ParseException {
1417 final Expression expr;
1419 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1421 token = jj_consume_token(BANG);
1422 expr = ExpressionWBang();
1423 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
1427 expr = ExpressionNoBang();
1428 {if (true) return expr;}
1431 jj_la1[27] = jj_gen;
1432 jj_consume_token(-1);
1433 throw new ParseException();
1435 throw new Error("Missing return statement in function");
1438 final public Expression ExpressionNoBang() throws ParseException {
1440 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1442 expr = ListExpression();
1443 {if (true) return expr;}
1446 expr = PrintExpression();
1447 {if (true) return expr;}
1450 jj_la1[28] = jj_gen;
1451 jj_consume_token(-1);
1452 throw new ParseException();
1454 throw new Error("Missing return statement in function");
1458 * Any assignement operator.
1459 * @return the assignement operator id
1461 final public int AssignmentOperator() throws ParseException {
1462 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1464 jj_consume_token(ASSIGN);
1465 {if (true) return VariableDeclaration.EQUAL;}
1468 jj_consume_token(STARASSIGN);
1469 {if (true) return VariableDeclaration.STAR_EQUAL;}
1472 jj_consume_token(SLASHASSIGN);
1473 {if (true) return VariableDeclaration.SLASH_EQUAL;}
1476 jj_consume_token(REMASSIGN);
1477 {if (true) return VariableDeclaration.REM_EQUAL;}
1480 jj_consume_token(PLUSASSIGN);
1481 {if (true) return VariableDeclaration.PLUS_EQUAL;}
1484 jj_consume_token(MINUSASSIGN);
1485 {if (true) return VariableDeclaration.MINUS_EQUAL;}
1488 jj_consume_token(LSHIFTASSIGN);
1489 {if (true) return VariableDeclaration.LSHIFT_EQUAL;}
1491 case RSIGNEDSHIFTASSIGN:
1492 jj_consume_token(RSIGNEDSHIFTASSIGN);
1493 {if (true) return VariableDeclaration.RSIGNEDSHIFT_EQUAL;}
1496 jj_consume_token(ANDASSIGN);
1497 {if (true) return VariableDeclaration.AND_EQUAL;}
1500 jj_consume_token(XORASSIGN);
1501 {if (true) return VariableDeclaration.XOR_EQUAL;}
1504 jj_consume_token(ORASSIGN);
1505 {if (true) return VariableDeclaration.OR_EQUAL;}
1508 jj_consume_token(DOTASSIGN);
1509 {if (true) return VariableDeclaration.DOT_EQUAL;}
1512 jj_consume_token(TILDEEQUAL);
1513 {if (true) return VariableDeclaration.TILDE_EQUAL;}
1516 jj_la1[29] = jj_gen;
1517 jj_consume_token(-1);
1518 throw new ParseException();
1520 throw new Error("Missing return statement in function");
1523 final public Expression ConditionalExpression() throws ParseException {
1524 final Expression expr;
1525 Expression expr2 = null;
1526 Expression expr3 = null;
1527 expr = ConditionalOrExpression();
1528 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1530 jj_consume_token(HOOK);
1531 expr2 = Expression();
1532 jj_consume_token(COLON);
1533 expr3 = ConditionalExpression();
1536 jj_la1[30] = jj_gen;
1539 if (expr3 == null) {
1540 {if (true) return expr;}
1542 {if (true) return new ConditionalExpression(expr,expr2,expr3);}
1543 throw new Error("Missing return statement in function");
1546 final public Expression ConditionalOrExpression() throws ParseException {
1547 Expression expr,expr2;
1549 expr = ConditionalAndExpression();
1552 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1558 jj_la1[31] = jj_gen;
1561 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1563 jj_consume_token(OR_OR);
1564 operator = OperatorIds.OR_OR;
1567 jj_consume_token(_ORL);
1568 operator = OperatorIds.ORL;
1571 jj_la1[32] = jj_gen;
1572 jj_consume_token(-1);
1573 throw new ParseException();
1575 expr2 = ConditionalAndExpression();
1576 expr = new BinaryExpression(expr,expr2,operator);
1578 {if (true) return expr;}
1579 throw new Error("Missing return statement in function");
1582 final public Expression ConditionalAndExpression() throws ParseException {
1583 Expression expr,expr2;
1585 expr = ConcatExpression();
1588 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1594 jj_la1[33] = jj_gen;
1597 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1599 jj_consume_token(AND_AND);
1600 operator = OperatorIds.AND_AND;
1603 jj_consume_token(_ANDL);
1604 operator = OperatorIds.ANDL;
1607 jj_la1[34] = jj_gen;
1608 jj_consume_token(-1);
1609 throw new ParseException();
1611 expr2 = ConcatExpression();
1612 expr = new BinaryExpression(expr,expr2,operator);
1614 {if (true) return expr;}
1615 throw new Error("Missing return statement in function");
1618 final public Expression ConcatExpression() throws ParseException {
1619 Expression expr,expr2;
1620 expr = InclusiveOrExpression();
1623 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1628 jj_la1[35] = jj_gen;
1631 jj_consume_token(DOT);
1632 expr2 = InclusiveOrExpression();
1633 expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
1635 {if (true) return expr;}
1636 throw new Error("Missing return statement in function");
1639 final public Expression InclusiveOrExpression() throws ParseException {
1640 Expression expr,expr2;
1641 expr = ExclusiveOrExpression();
1644 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1649 jj_la1[36] = jj_gen;
1652 jj_consume_token(BIT_OR);
1653 expr2 = ExclusiveOrExpression();
1654 expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
1656 {if (true) return expr;}
1657 throw new Error("Missing return statement in function");
1660 final public Expression ExclusiveOrExpression() throws ParseException {
1661 Expression expr,expr2;
1662 expr = AndExpression();
1665 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1670 jj_la1[37] = jj_gen;
1673 jj_consume_token(XOR);
1674 expr2 = AndExpression();
1675 expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
1677 {if (true) return expr;}
1678 throw new Error("Missing return statement in function");
1681 final public Expression AndExpression() throws ParseException {
1682 Expression expr,expr2;
1683 expr = EqualityExpression();
1686 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1691 jj_la1[38] = jj_gen;
1694 jj_consume_token(BIT_AND);
1695 expr2 = EqualityExpression();
1696 expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
1698 {if (true) return expr;}
1699 throw new Error("Missing return statement in function");
1702 final public Expression EqualityExpression() throws ParseException {
1703 Expression expr,expr2;
1706 expr = RelationalExpression();
1709 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1713 case BANGDOUBLEEQUAL:
1718 jj_la1[39] = jj_gen;
1721 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1723 token = jj_consume_token(EQUAL_EQUAL);
1724 operator = OperatorIds.EQUAL_EQUAL;
1727 token = jj_consume_token(DIF);
1728 operator = OperatorIds.DIF;
1731 token = jj_consume_token(NOT_EQUAL);
1732 operator = OperatorIds.DIF;
1734 case BANGDOUBLEEQUAL:
1735 token = jj_consume_token(BANGDOUBLEEQUAL);
1736 operator = OperatorIds.BANG_EQUAL_EQUAL;
1739 token = jj_consume_token(TRIPLEEQUAL);
1740 operator = OperatorIds.EQUAL_EQUAL_EQUAL;
1743 jj_la1[40] = jj_gen;
1744 jj_consume_token(-1);
1745 throw new ParseException();
1748 expr2 = RelationalExpression();
1749 } catch (ParseException e) {
1750 if (errorMessage != null) {
1751 {if (true) throw e;}
1753 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1755 errorStart = token.sourceEnd +1;
1756 errorEnd = token.sourceEnd +1;
1757 expr2 = new ConstantIdentifier(SYNTAX_ERROR_CHAR,token.sourceEnd +1,token.sourceEnd +1);
1758 processParseExceptionDebug(e);
1760 expr = new BinaryExpression(expr,expr2,operator);
1762 {if (true) return expr;}
1763 throw new Error("Missing return statement in function");
1766 final public Expression RelationalExpression() throws ParseException {
1767 Expression expr,expr2;
1769 expr = ShiftExpression();
1772 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1780 jj_la1[41] = jj_gen;
1783 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1785 jj_consume_token(LT);
1786 operator = OperatorIds.LESS;
1789 jj_consume_token(GT);
1790 operator = OperatorIds.GREATER;
1793 jj_consume_token(LE);
1794 operator = OperatorIds.LESS_EQUAL;
1797 jj_consume_token(GE);
1798 operator = OperatorIds.GREATER_EQUAL;
1801 jj_la1[42] = jj_gen;
1802 jj_consume_token(-1);
1803 throw new ParseException();
1805 expr2 = ShiftExpression();
1806 expr = new BinaryExpression(expr,expr2,operator);
1808 {if (true) return expr;}
1809 throw new Error("Missing return statement in function");
1812 final public Expression ShiftExpression() throws ParseException {
1813 Expression expr,expr2;
1815 expr = AdditiveExpression();
1818 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1821 case RUNSIGNEDSHIFT:
1825 jj_la1[43] = jj_gen;
1828 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1830 jj_consume_token(LSHIFT);
1831 operator = OperatorIds.LEFT_SHIFT;
1834 jj_consume_token(RSIGNEDSHIFT);
1835 operator = OperatorIds.RIGHT_SHIFT;
1837 case RUNSIGNEDSHIFT:
1838 jj_consume_token(RUNSIGNEDSHIFT);
1839 operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
1842 jj_la1[44] = jj_gen;
1843 jj_consume_token(-1);
1844 throw new ParseException();
1846 expr2 = AdditiveExpression();
1847 expr = new BinaryExpression(expr,expr2,operator);
1849 {if (true) return expr;}
1850 throw new Error("Missing return statement in function");
1853 final public Expression AdditiveExpression() throws ParseException {
1854 Expression expr,expr2;
1856 expr = MultiplicativeExpression();
1859 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1865 jj_la1[45] = jj_gen;
1868 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1870 jj_consume_token(PLUS);
1871 operator = OperatorIds.PLUS;
1874 jj_consume_token(MINUS);
1875 operator = OperatorIds.MINUS;
1878 jj_la1[46] = jj_gen;
1879 jj_consume_token(-1);
1880 throw new ParseException();
1882 expr2 = MultiplicativeExpression();
1883 expr = new BinaryExpression(expr,expr2,operator);
1885 {if (true) return expr;}
1886 throw new Error("Missing return statement in function");
1889 final public Expression MultiplicativeExpression() throws ParseException {
1890 Expression expr,expr2;
1893 expr = UnaryExpression();
1894 } catch (ParseException e) {
1895 if (errorMessage != null) {if (true) throw e;}
1896 errorMessage = "unexpected token '"+e.currentToken.next.image+'\'';
1898 errorStart = this.token.sourceStart;
1899 errorEnd = this.token.sourceEnd;
1900 {if (true) throw e;}
1904 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1911 jj_la1[47] = jj_gen;
1914 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1916 jj_consume_token(STAR);
1917 operator = OperatorIds.MULTIPLY;
1920 jj_consume_token(SLASH);
1921 operator = OperatorIds.DIVIDE;
1924 jj_consume_token(REMAINDER);
1925 operator = OperatorIds.REMAINDER;
1928 jj_la1[48] = jj_gen;
1929 jj_consume_token(-1);
1930 throw new ParseException();
1932 expr2 = UnaryExpression();
1933 expr = new BinaryExpression(expr,expr2,operator);
1935 {if (true) return expr;}
1936 throw new Error("Missing return statement in function");
1940 * An unary expression starting with @, & or nothing
1942 final public Expression UnaryExpression() throws ParseException {
1943 final Expression expr;
1944 /* <BIT_AND> expr = UnaryExpressionNoPrefix() //why did I had that ?
1945 {return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
1947 expr = AtNotTildeUnaryExpression();
1948 {if (true) return expr;}
1949 throw new Error("Missing return statement in function");
1952 final public Expression AtNotTildeUnaryExpression() throws ParseException {
1953 final Expression expr;
1955 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1957 token = jj_consume_token(AT);
1958 expr = AtNotTildeUnaryExpression();
1959 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
1962 token = jj_consume_token(TILDE);
1963 expr = AtNotTildeUnaryExpression();
1964 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.TWIDDLE,token.sourceStart);}
1967 token = jj_consume_token(BANG);
1968 expr = AtNotUnaryExpression();
1969 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
1981 case INTEGER_LITERAL:
1982 case FLOATING_POINT_LITERAL:
1983 case STRING_LITERAL:
1988 expr = UnaryExpressionNoPrefix();
1989 {if (true) return expr;}
1992 jj_la1[49] = jj_gen;
1993 jj_consume_token(-1);
1994 throw new ParseException();
1996 throw new Error("Missing return statement in function");
2000 * An expression prefixed (or not) by one or more @ and !.
2001 * @return the expression
2003 final public Expression AtNotUnaryExpression() throws ParseException {
2004 final Expression expr;
2006 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2008 token = jj_consume_token(AT);
2009 expr = AtNotUnaryExpression();
2010 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
2013 token = jj_consume_token(BANG);
2014 expr = AtNotUnaryExpression();
2015 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
2027 case INTEGER_LITERAL:
2028 case FLOATING_POINT_LITERAL:
2029 case STRING_LITERAL:
2034 expr = UnaryExpressionNoPrefix();
2035 {if (true) return expr;}
2038 jj_la1[50] = jj_gen;
2039 jj_consume_token(-1);
2040 throw new ParseException();
2042 throw new Error("Missing return statement in function");
2045 final public Expression UnaryExpressionNoPrefix() throws ParseException {
2046 final Expression expr;
2048 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2050 token = jj_consume_token(PLUS);
2051 expr = AtNotTildeUnaryExpression();
2052 {if (true) return new PrefixedUnaryExpression(expr,
2054 token.sourceStart);}
2057 token = jj_consume_token(MINUS);
2058 expr = AtNotTildeUnaryExpression();
2059 {if (true) return new PrefixedUnaryExpression(expr,
2061 token.sourceStart);}
2065 expr = PreIncDecExpression();
2066 {if (true) return expr;}
2074 case INTEGER_LITERAL:
2075 case FLOATING_POINT_LITERAL:
2076 case STRING_LITERAL:
2081 expr = UnaryExpressionNotPlusMinus();
2082 {if (true) return expr;}
2085 jj_la1[51] = jj_gen;
2086 jj_consume_token(-1);
2087 throw new ParseException();
2089 throw new Error("Missing return statement in function");
2092 final public Expression PreIncDecExpression() throws ParseException {
2093 final Expression expr;
2096 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2098 token = jj_consume_token(PLUS_PLUS);
2099 operator = OperatorIds.PLUS_PLUS;
2102 token = jj_consume_token(MINUS_MINUS);
2103 operator = OperatorIds.MINUS_MINUS;
2106 jj_la1[52] = jj_gen;
2107 jj_consume_token(-1);
2108 throw new ParseException();
2110 expr = PrimaryExpression();
2111 {if (true) return new PrefixedUnaryExpression(expr,operator,token.sourceStart);}
2112 throw new Error("Missing return statement in function");
2115 final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
2116 final Expression expr;
2117 if (jj_2_3(2147483647)) {
2118 expr = CastExpression();
2119 {if (true) return expr;}
2121 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2127 expr = PostfixExpression();
2128 {if (true) return expr;}
2133 case INTEGER_LITERAL:
2134 case FLOATING_POINT_LITERAL:
2135 case STRING_LITERAL:
2138 {if (true) return expr;}
2141 jj_consume_token(LPAREN);
2142 expr = Expression();
2144 jj_consume_token(RPAREN);
2145 } catch (ParseException e) {
2146 errorMessage = "')' expected";
2148 errorStart = expr.sourceEnd +1;
2149 errorEnd = expr.sourceEnd +1;
2150 processParseExceptionDebug(e);
2152 {if (true) return expr;}
2155 jj_la1[53] = jj_gen;
2156 jj_consume_token(-1);
2157 throw new ParseException();
2160 throw new Error("Missing return statement in function");
2163 final public CastExpression CastExpression() throws ParseException {
2164 final ConstantIdentifier type;
2165 final Expression expr;
2166 final Token token,token1;
2167 token1 = jj_consume_token(LPAREN);
2168 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2181 token = jj_consume_token(ARRAY);
2182 type = new ConstantIdentifier(token);
2185 jj_la1[54] = jj_gen;
2186 jj_consume_token(-1);
2187 throw new ParseException();
2189 jj_consume_token(RPAREN);
2190 expr = UnaryExpression();
2191 {if (true) return new CastExpression(type,expr,token1.sourceStart,expr.sourceEnd);}
2192 throw new Error("Missing return statement in function");
2195 final public Expression PostfixExpression() throws ParseException {
2196 final Expression expr;
2199 expr = PrimaryExpression();
2200 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2203 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2205 token = jj_consume_token(PLUS_PLUS);
2206 operator = OperatorIds.PLUS_PLUS;
2209 token = jj_consume_token(MINUS_MINUS);
2210 operator = OperatorIds.MINUS_MINUS;
2213 jj_la1[55] = jj_gen;
2214 jj_consume_token(-1);
2215 throw new ParseException();
2219 jj_la1[56] = jj_gen;
2222 if (operator == -1) {
2223 {if (true) return expr;}
2225 {if (true) return new PostfixedUnaryExpression(expr,operator,token.sourceEnd);}
2226 throw new Error("Missing return statement in function");
2229 final public Expression PrimaryExpression() throws ParseException {
2232 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2237 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2239 token = jj_consume_token(BIT_AND);
2242 jj_la1[57] = jj_gen;
2245 expr = refPrimaryExpression(token);
2246 {if (true) return expr;}
2249 expr = ArrayDeclarator();
2250 {if (true) return expr;}
2253 jj_la1[58] = jj_gen;
2254 jj_consume_token(-1);
2255 throw new ParseException();
2257 throw new Error("Missing return statement in function");
2260 final public Expression refPrimaryExpression(final Token reference) throws ParseException {
2262 Expression expr2 = null;
2263 final Token identifier;
2264 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2266 identifier = jj_consume_token(IDENTIFIER);
2267 expr = new ConstantIdentifier(identifier);
2270 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2271 case STATICCLASSACCESS:
2275 jj_la1[59] = jj_gen;
2278 jj_consume_token(STATICCLASSACCESS);
2279 expr2 = ClassIdentifier();
2280 expr = new ClassAccess(expr,
2282 ClassAccess.STATIC);
2284 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2286 expr2 = Arguments(expr);
2289 jj_la1[60] = jj_gen;
2292 if (expr2 == null) {
2293 if (reference != null) {
2294 ParseException e = generateParseException();
2295 errorMessage = "you cannot use a constant by reference";
2297 errorStart = reference.sourceStart;
2298 errorEnd = reference.sourceEnd;
2299 processParseExceptionDebug(e);
2301 {if (true) return expr;}
2303 {if (true) return expr2;}
2306 expr = VariableDeclaratorId();
2307 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2309 expr = Arguments(expr);
2312 jj_la1[61] = jj_gen;
2315 {if (true) return expr;}
2318 token = jj_consume_token(NEW);
2319 expr = ClassIdentifier();
2321 if (reference == null) {
2322 start = token.sourceStart;
2324 start = reference.sourceStart;
2326 expr = new ClassInstantiation(expr,
2329 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2331 expr = Arguments(expr);
2334 jj_la1[62] = jj_gen;
2337 {if (true) return expr;}
2340 jj_la1[63] = jj_gen;
2341 jj_consume_token(-1);
2342 throw new ParseException();
2344 throw new Error("Missing return statement in function");
2348 * An array declarator.
2352 final public ArrayInitializer ArrayDeclarator() throws ParseException {
2353 final ArrayVariableDeclaration[] vars;
2355 token = jj_consume_token(ARRAY);
2356 vars = ArrayInitializer();
2357 {if (true) return new ArrayInitializer(vars,
2359 this.token.sourceEnd);}
2360 throw new Error("Missing return statement in function");
2363 final public Expression ClassIdentifier() throws ParseException {
2364 final Expression expr;
2366 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2368 token = jj_consume_token(IDENTIFIER);
2369 {if (true) return new ConstantIdentifier(token);}
2381 {if (true) return expr;}
2384 expr = VariableDeclaratorId();
2385 {if (true) return expr;}
2388 jj_la1[64] = jj_gen;
2389 jj_consume_token(-1);
2390 throw new ParseException();
2392 throw new Error("Missing return statement in function");
2396 * Used by Variabledeclaratorid and primarysuffix
2398 final public AbstractVariable VariableSuffix(final AbstractVariable prefix) throws ParseException {
2399 Expression expression = null;
2400 final Token classAccessToken,lbrace,rbrace;
2403 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2405 classAccessToken = jj_consume_token(CLASSACCESS);
2407 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2409 lbrace = jj_consume_token(LBRACE);
2410 expression = Expression();
2411 rbrace = jj_consume_token(RBRACE);
2412 expression = new Variable(expression,
2417 token = jj_consume_token(IDENTIFIER);
2418 expression = new ConstantIdentifier(token.image,token.sourceStart,token.sourceEnd);
2421 expression = Variable();
2424 jj_la1[65] = jj_gen;
2425 jj_consume_token(-1);
2426 throw new ParseException();
2428 } catch (ParseException e) {
2429 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
2431 errorStart = classAccessToken.sourceEnd +1;
2432 errorEnd = classAccessToken.sourceEnd +1;
2433 processParseExceptionDebug(e);
2435 {if (true) return new ClassAccess(prefix,
2437 ClassAccess.NORMAL);}
2440 token = jj_consume_token(LBRACKET);
2441 pos = token.sourceEnd+1;
2442 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2467 case INTEGER_LITERAL:
2468 case FLOATING_POINT_LITERAL:
2469 case STRING_LITERAL:
2474 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2490 case INTEGER_LITERAL:
2491 case FLOATING_POINT_LITERAL:
2492 case STRING_LITERAL:
2497 expression = Expression();
2498 pos = expression.sourceEnd+1;
2509 expression = Type();
2510 pos = expression.sourceEnd+1;
2513 jj_la1[66] = jj_gen;
2514 jj_consume_token(-1);
2515 throw new ParseException();
2519 jj_la1[67] = jj_gen;
2523 token = jj_consume_token(RBRACKET);
2524 pos = token.sourceEnd;
2525 } catch (ParseException e) {
2526 errorMessage = "']' expected";
2530 processParseExceptionDebug(e);
2532 {if (true) return new ArrayDeclarator(prefix,expression,pos);}
2535 token = jj_consume_token(LBRACE);
2536 pos = token.sourceEnd+1;
2537 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2562 case INTEGER_LITERAL:
2563 case FLOATING_POINT_LITERAL:
2564 case STRING_LITERAL:
2569 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2585 case INTEGER_LITERAL:
2586 case FLOATING_POINT_LITERAL:
2587 case STRING_LITERAL:
2592 expression = Expression();
2593 pos = expression.sourceEnd+1;
2604 expression = Type();
2605 pos = expression.sourceEnd+1;
2608 jj_la1[68] = jj_gen;
2609 jj_consume_token(-1);
2610 throw new ParseException();
2614 jj_la1[69] = jj_gen;
2618 token = jj_consume_token(RBRACE);
2619 pos = token.sourceEnd;
2620 } catch (ParseException e) {
2621 errorMessage = "']' expected";
2625 processParseExceptionDebug(e);
2627 {if (true) return new ArrayDeclarator(prefix,expression,pos);}
2630 jj_la1[70] = jj_gen;
2631 jj_consume_token(-1);
2632 throw new ParseException();
2634 throw new Error("Missing return statement in function");
2637 final public Literal Literal() throws ParseException {
2639 StringLiteral literal;
2640 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2641 case INTEGER_LITERAL:
2642 token = jj_consume_token(INTEGER_LITERAL);
2643 {if (true) return new NumberLiteral(token);}
2645 case FLOATING_POINT_LITERAL:
2646 token = jj_consume_token(FLOATING_POINT_LITERAL);
2647 {if (true) return new NumberLiteral(token);}
2649 case STRING_LITERAL:
2650 token = jj_consume_token(STRING_LITERAL);
2651 {if (true) return new StringLiteral(token);}
2654 token = jj_consume_token(TRUE);
2655 {if (true) return new TrueLiteral(token);}
2658 token = jj_consume_token(FALSE);
2659 {if (true) return new FalseLiteral(token);}
2662 token = jj_consume_token(NULL);
2663 {if (true) return new NullLiteral(token);}
2666 literal = evaluableString();
2667 {if (true) return literal;}
2670 jj_la1[71] = jj_gen;
2671 jj_consume_token(-1);
2672 throw new ParseException();
2674 throw new Error("Missing return statement in function");
2677 final public StringLiteral evaluableString() throws ParseException {
2678 ArrayList list = new ArrayList();
2680 Token token,lbrace,rbrace;
2681 AbstractVariable var;
2683 start = jj_consume_token(DOUBLEQUOTE);
2686 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2691 jj_la1[72] = jj_gen;
2694 jj_consume_token(DOLLARS);
2695 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2697 token = jj_consume_token(IDENTIFIER);
2698 list.add(new Variable(token.image,
2703 lbrace = jj_consume_token(LBRACE1);
2704 token = jj_consume_token(ID);
2705 list.add(new Variable(token.image,
2708 rbrace = jj_consume_token(RBRACE1);
2711 jj_la1[73] = jj_gen;
2712 jj_consume_token(-1);
2713 throw new ParseException();
2716 end = jj_consume_token(DOUBLEQUOTE2);
2717 AbstractVariable[] vars = new AbstractVariable[list.size()];
2719 {if (true) return new StringLiteral(jj_input_stream.getCurrentBuffer().substring(start.sourceEnd,end.sourceStart),
2723 throw new Error("Missing return statement in function");
2726 final public FunctionCall Arguments(final Expression func) throws ParseException {
2727 Expression[] args = null;
2728 final Token token,lparen;
2729 lparen = jj_consume_token(LPAREN);
2730 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2746 case INTEGER_LITERAL:
2747 case FLOATING_POINT_LITERAL:
2748 case STRING_LITERAL:
2753 args = ArgumentList();
2756 jj_la1[74] = jj_gen;
2760 token = jj_consume_token(RPAREN);
2761 {if (true) return new FunctionCall(func,args,token.sourceEnd);}
2762 } catch (ParseException e) {
2763 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
2766 errorStart = lparen.sourceEnd+1;
2767 errorEnd = lparen.sourceEnd+2;
2769 errorStart = args[args.length-1].sourceEnd+1;
2770 errorEnd = args[args.length-1].sourceEnd+2;
2772 processParseExceptionDebug(e);
2774 int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
2775 {if (true) return new FunctionCall(func,args,sourceEnd);}
2776 throw new Error("Missing return statement in function");
2780 * An argument list is a list of arguments separated by comma :
2781 * argumentDeclaration() (, argumentDeclaration)*
2782 * @return an array of arguments
2784 final public Expression[] ArgumentList() throws ParseException {
2786 final ArrayList list = new ArrayList();
2790 list.add(arg);pos = arg.sourceEnd;
2793 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2798 jj_la1[75] = jj_gen;
2801 token = jj_consume_token(COMMA);
2802 pos = token.sourceEnd;
2806 pos = arg.sourceEnd;
2807 } catch (ParseException e) {
2808 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
2812 processParseException(e);
2815 final Expression[] arguments = new Expression[list.size()];
2816 list.toArray(arguments);
2817 {if (true) return arguments;}
2818 throw new Error("Missing return statement in function");
2822 * A Statement without break.
2823 * @return a statement
2825 final public Statement StatementNoBreak() throws ParseException {
2826 final Statement statement;
2829 statement = expressionStatement();
2830 {if (true) return statement;}
2832 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2834 statement = LabeledStatement();
2835 {if (true) return statement;}
2838 statement = Block();
2839 {if (true) return statement;}
2842 statement = EmptyStatement();
2843 {if (true) return statement;}
2846 statement = SwitchStatement();
2847 {if (true) return statement;}
2850 statement = IfStatement();
2851 {if (true) return statement;}
2854 statement = WhileStatement();
2855 {if (true) return statement;}
2858 statement = DoStatement();
2859 {if (true) return statement;}
2862 statement = ForStatement();
2863 {if (true) return statement;}
2866 statement = ForeachStatement();
2867 {if (true) return statement;}
2870 statement = ContinueStatement();
2871 {if (true) return statement;}
2874 statement = ReturnStatement();
2875 {if (true) return statement;}
2878 statement = EchoStatement();
2879 {if (true) return statement;}
2886 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2888 token = jj_consume_token(AT);
2891 jj_la1[76] = jj_gen;
2894 statement = IncludeStatement();
2895 if (token != null) {
2896 ((InclusionStatement)statement).silent = true;
2897 statement.sourceStart = token.sourceStart;
2899 {if (true) return statement;}
2902 statement = StaticStatement();
2903 {if (true) return statement;}
2906 statement = GlobalStatement();
2907 {if (true) return statement;}
2910 statement = defineStatement();
2911 currentSegment.add((Outlineable)statement);{if (true) return statement;}
2914 jj_la1[77] = jj_gen;
2915 jj_consume_token(-1);
2916 throw new ParseException();
2919 throw new Error("Missing return statement in function");
2923 * A statement expression.
2925 * @return an expression
2927 final public Statement expressionStatement() throws ParseException {
2928 final Statement statement;
2930 statement = Expression();
2932 token = jj_consume_token(SEMICOLON);
2933 statement.sourceEnd = token.sourceEnd;
2934 } catch (ParseException e) {
2935 if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
2936 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
2938 errorStart = statement.sourceEnd+1;
2939 errorEnd = statement.sourceEnd+1;
2940 processParseExceptionDebug(e);
2943 {if (true) return statement;}
2944 throw new Error("Missing return statement in function");
2947 final public Define defineStatement() throws ParseException {
2948 Expression defineName,defineValue;
2949 final Token defineToken;
2952 defineToken = jj_consume_token(DEFINE);
2953 pos = defineToken.sourceEnd+1;
2955 token = jj_consume_token(LPAREN);
2956 pos = token.sourceEnd+1;
2957 } catch (ParseException e) {
2958 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
2962 processParseExceptionDebug(e);
2965 defineName = Expression();
2966 pos = defineName.sourceEnd+1;
2967 } catch (ParseException e) {
2968 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2972 processParseExceptionDebug(e);
2973 defineName = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
2976 token = jj_consume_token(COMMA);
2977 pos = defineName.sourceEnd+1;
2978 } catch (ParseException e) {
2979 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
2983 processParseExceptionDebug(e);
2986 defineValue = Expression();
2987 pos = defineValue.sourceEnd+1;
2988 } catch (ParseException e) {
2989 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2993 processParseExceptionDebug(e);
2994 defineValue = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
2997 token = jj_consume_token(RPAREN);
2998 pos = token.sourceEnd+1;
2999 } catch (ParseException e) {
3000 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
3004 processParseExceptionDebug(e);
3006 {if (true) return new Define(currentSegment,
3009 defineToken.sourceStart,
3011 throw new Error("Missing return statement in function");
3015 * A Normal statement.
3017 final public Statement Statement() throws ParseException {
3018 final Statement statement;
3019 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3051 case INTEGER_LITERAL:
3052 case FLOATING_POINT_LITERAL:
3053 case STRING_LITERAL:
3060 statement = StatementNoBreak();
3061 {if (true) return statement;}
3064 statement = BreakStatement();
3065 {if (true) return statement;}
3068 jj_la1[78] = jj_gen;
3069 jj_consume_token(-1);
3070 throw new ParseException();
3072 throw new Error("Missing return statement in function");
3076 * An html block inside a php syntax.
3078 final public HTMLBlock htmlBlock() throws ParseException {
3079 final int startIndex = nodePtr;
3080 final AstNode[] blockNodes;
3083 phpEnd = jj_consume_token(PHPEND);
3084 htmlStart = phpEnd.sourceEnd;
3087 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3092 jj_la1[79] = jj_gen;
3098 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3100 jj_consume_token(PHPSTARTLONG);
3103 jj_consume_token(PHPSTARTSHORT);
3106 jj_la1[80] = jj_gen;
3107 jj_consume_token(-1);
3108 throw new ParseException();
3110 createNewHTMLCode();
3111 } catch (ParseException e) {
3112 errorMessage = "unexpected end of file , '<?php' expected";
3114 errorStart = e.currentToken.sourceStart;
3115 errorEnd = e.currentToken.sourceEnd;
3116 {if (true) throw e;}
3118 nbNodes = nodePtr - startIndex;
3120 {if (true) return null;}
3122 blockNodes = new AstNode[nbNodes];
3123 System.arraycopy(nodes,startIndex+1,blockNodes,0,nbNodes);
3124 nodePtr = startIndex;
3125 {if (true) return new HTMLBlock(blockNodes);}
3126 throw new Error("Missing return statement in function");
3130 * An include statement. It's "include" an expression;
3132 final public InclusionStatement IncludeStatement() throws ParseException {
3135 final InclusionStatement inclusionStatement;
3136 final Token token, token2;
3138 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3140 token = jj_consume_token(REQUIRE);
3141 keyword = InclusionStatement.REQUIRE;pos=token.sourceEnd;
3144 token = jj_consume_token(REQUIRE_ONCE);
3145 keyword = InclusionStatement.REQUIRE_ONCE;pos=token.sourceEnd;
3148 token = jj_consume_token(INCLUDE);
3149 keyword = InclusionStatement.INCLUDE;pos=token.sourceEnd;
3152 token = jj_consume_token(INCLUDE_ONCE);
3153 keyword = InclusionStatement.INCLUDE_ONCE;pos=token.sourceEnd;
3156 jj_la1[81] = jj_gen;
3157 jj_consume_token(-1);
3158 throw new ParseException();
3161 expr = Expression();
3162 pos = expr.sourceEnd;
3163 } catch (ParseException e) {
3164 if (errorMessage != null) {
3165 {if (true) throw e;}
3167 errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
3169 errorStart = e.currentToken.next.sourceStart;
3170 errorEnd = e.currentToken.next.sourceEnd;
3171 expr = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
3172 processParseExceptionDebug(e);
3175 token2 = jj_consume_token(SEMICOLON);
3176 pos=token2.sourceEnd;
3177 } catch (ParseException e) {
3178 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
3180 errorStart = e.currentToken.next.sourceStart;
3181 errorEnd = e.currentToken.next.sourceEnd;
3182 processParseExceptionDebug(e);
3184 inclusionStatement = new InclusionStatement(currentSegment,
3189 currentSegment.add(inclusionStatement);
3190 {if (true) return inclusionStatement;}
3191 throw new Error("Missing return statement in function");
3194 final public PrintExpression PrintExpression() throws ParseException {
3195 final Expression expr;
3196 final Token printToken;
3197 token = jj_consume_token(PRINT);
3198 expr = Expression();
3199 {if (true) return new PrintExpression(expr,token.sourceStart,expr.sourceEnd);}
3200 throw new Error("Missing return statement in function");
3203 final public ListExpression ListExpression() throws ParseException {
3204 Expression expr = null;
3205 final Expression expression;
3206 final ArrayList list = new ArrayList();
3208 final Token listToken, rParen;
3210 listToken = jj_consume_token(LIST);
3211 pos = listToken.sourceEnd;
3213 token = jj_consume_token(LPAREN);
3214 pos = token.sourceEnd;
3215 } catch (ParseException e) {
3216 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
3218 errorStart = listToken.sourceEnd+1;
3219 errorEnd = listToken.sourceEnd+1;
3220 processParseExceptionDebug(e);
3222 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3224 expr = VariableDeclaratorId();
3225 list.add(expr);pos = expr.sourceEnd;
3228 jj_la1[82] = jj_gen;
3231 if (expr == null) list.add(null);
3234 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3239 jj_la1[83] = jj_gen;
3243 token = jj_consume_token(COMMA);
3244 pos = token.sourceEnd;
3245 } catch (ParseException e) {
3246 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
3250 processParseExceptionDebug(e);
3252 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3254 expr = VariableDeclaratorId();
3255 list.add(expr);pos = expr.sourceEnd;
3258 jj_la1[84] = jj_gen;
3263 rParen = jj_consume_token(RPAREN);
3264 pos = rParen.sourceEnd;
3265 } catch (ParseException e) {
3266 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
3270 processParseExceptionDebug(e);
3272 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3274 jj_consume_token(ASSIGN);
3275 expression = Expression();
3276 final AbstractVariable[] vars = new AbstractVariable[list.size()];
3278 {if (true) return new ListExpression(vars,
3280 listToken.sourceStart,
3281 expression.sourceEnd);}
3284 jj_la1[85] = jj_gen;
3287 final AbstractVariable[] vars = new AbstractVariable[list.size()];
3289 {if (true) return new ListExpression(vars,listToken.sourceStart,pos);}
3290 throw new Error("Missing return statement in function");
3294 * An echo statement.
3295 * echo anyexpression (, otherexpression)*
3297 final public EchoStatement EchoStatement() throws ParseException {
3298 final ArrayList expressions = new ArrayList();
3301 Token token2 = null;
3302 token = jj_consume_token(ECHO);
3303 expr = Expression();
3304 expressions.add(expr);
3307 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3312 jj_la1[86] = jj_gen;
3315 jj_consume_token(COMMA);
3316 expr = Expression();
3317 expressions.add(expr);
3320 token2 = jj_consume_token(SEMICOLON);
3321 } catch (ParseException e) {
3322 if (e.currentToken.next.kind != 4) {
3323 errorMessage = "';' expected after 'echo' statement";
3325 errorStart = e.currentToken.sourceEnd;
3326 errorEnd = e.currentToken.sourceEnd;
3327 processParseExceptionDebug(e);
3330 final Expression[] exprs = new Expression[expressions.size()];
3331 expressions.toArray(exprs);
3332 if (token2 == null) {
3333 {if (true) return new EchoStatement(exprs,token.sourceStart, exprs[exprs.length-1].sourceEnd);}
3335 {if (true) return new EchoStatement(exprs,token.sourceStart, token2.sourceEnd);}
3336 throw new Error("Missing return statement in function");
3339 final public GlobalStatement GlobalStatement() throws ParseException {
3341 final ArrayList vars = new ArrayList();
3342 final GlobalStatement global;
3343 final Token token, token2;
3345 token = jj_consume_token(GLOBAL);
3347 vars.add(expr);pos = expr.sourceEnd+1;
3350 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3355 jj_la1[87] = jj_gen;
3358 jj_consume_token(COMMA);
3360 vars.add(expr);pos = expr.sourceEnd+1;
3363 token2 = jj_consume_token(SEMICOLON);
3364 pos = token2.sourceEnd+1;
3365 } catch (ParseException e) {
3366 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3370 processParseExceptionDebug(e);
3372 final Variable[] variables = new Variable[vars.size()];
3373 vars.toArray(variables);
3374 global = new GlobalStatement(currentSegment,
3378 currentSegment.add(global);
3379 {if (true) return global;}
3380 throw new Error("Missing return statement in function");
3383 final public StaticStatement StaticStatement() throws ParseException {
3384 final ArrayList vars = new ArrayList();
3385 VariableDeclaration expr;
3386 final Token token, token2;
3388 token = jj_consume_token(STATIC);
3389 expr = VariableDeclarator();
3390 vars.add(expr);pos = expr.sourceEnd+1;
3393 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3398 jj_la1[88] = jj_gen;
3401 jj_consume_token(COMMA);
3402 expr = VariableDeclarator();
3403 vars.add(expr);pos = expr.sourceEnd+1;
3406 token2 = jj_consume_token(SEMICOLON);
3407 pos = token2.sourceEnd+1;
3408 } catch (ParseException e) {
3409 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3413 processParseException(e);
3415 final VariableDeclaration[] variables = new VariableDeclaration[vars.size()];
3416 vars.toArray(variables);
3417 {if (true) return new StaticStatement(variables,
3420 throw new Error("Missing return statement in function");
3423 final public LabeledStatement LabeledStatement() throws ParseException {
3425 final Statement statement;
3426 label = jj_consume_token(IDENTIFIER);
3427 jj_consume_token(COLON);
3428 statement = Statement();
3429 {if (true) return new LabeledStatement(label.image,statement,label.sourceStart,statement.sourceEnd);}
3430 throw new Error("Missing return statement in function");
3440 final public Block Block() throws ParseException {
3441 final ArrayList list = new ArrayList();
3442 Statement statement;
3443 final Token token, token2;
3446 token = jj_consume_token(LBRACE);
3447 pos = token.sourceEnd+1;start=token.sourceStart;
3448 } catch (ParseException e) {
3449 errorMessage = "'{' expected";
3451 pos = this.token.sourceEnd+1;
3455 processParseExceptionDebug(e);
3459 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3495 case INTEGER_LITERAL:
3496 case FLOATING_POINT_LITERAL:
3497 case STRING_LITERAL:
3507 jj_la1[89] = jj_gen;
3510 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3545 case INTEGER_LITERAL:
3546 case FLOATING_POINT_LITERAL:
3547 case STRING_LITERAL:
3554 statement = BlockStatement();
3555 list.add(statement);pos = statement.sourceEnd+1;
3558 statement = htmlBlock();
3559 if (statement != null) {
3560 list.add(statement);
3561 pos = statement.sourceEnd+1;
3563 pos = this.token.sourceEnd+1;
3566 jj_la1[90] = jj_gen;
3567 jj_consume_token(-1);
3568 throw new ParseException();
3572 token2 = jj_consume_token(RBRACE);
3573 pos = token2.sourceEnd+1;
3574 } catch (ParseException e) {
3575 errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
3579 processParseExceptionDebug(e);
3581 final Statement[] statements = new Statement[list.size()];
3582 list.toArray(statements);
3583 {if (true) return new Block(statements,start,pos);}
3584 throw new Error("Missing return statement in function");
3587 final public Statement BlockStatement() throws ParseException {
3588 final Statement statement;
3589 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3622 case INTEGER_LITERAL:
3623 case FLOATING_POINT_LITERAL:
3624 case STRING_LITERAL:
3632 statement = Statement();
3633 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3634 {if (true) return statement;}
3635 } catch (ParseException e) {
3636 errorMessage = "unexpected token : '"+ e.currentToken.image +"', a statement was expected";
3638 errorStart = e.currentToken.sourceStart;
3639 errorEnd = e.currentToken.sourceEnd;
3640 {if (true) throw e;}
3644 statement = ClassDeclaration();
3645 {if (true) return statement;}
3648 statement = MethodDeclaration();
3649 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3650 currentSegment.add((MethodDeclaration) statement);
3651 ((MethodDeclaration) statement).analyzeCode();
3652 {if (true) return statement;}
3655 jj_la1[91] = jj_gen;
3656 jj_consume_token(-1);
3657 throw new ParseException();
3659 throw new Error("Missing return statement in function");
3663 * A Block statement that will not contain any 'break'
3665 final public Statement BlockStatementNoBreak() throws ParseException {
3666 final Statement statement;
3667 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3699 case INTEGER_LITERAL:
3700 case FLOATING_POINT_LITERAL:
3701 case STRING_LITERAL:
3708 statement = StatementNoBreak();
3709 {if (true) return statement;}
3712 statement = ClassDeclaration();
3713 {if (true) return statement;}
3716 statement = MethodDeclaration();
3717 currentSegment.add((MethodDeclaration) statement);
3718 ((MethodDeclaration) statement).analyzeCode();
3719 {if (true) return statement;}
3722 jj_la1[92] = jj_gen;
3723 jj_consume_token(-1);
3724 throw new ParseException();
3726 throw new Error("Missing return statement in function");
3730 * used only by ForInit()
3732 final public Expression[] LocalVariableDeclaration() throws ParseException {
3733 final ArrayList list = new ArrayList();
3739 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3744 jj_la1[93] = jj_gen;
3747 jj_consume_token(COMMA);
3751 final Expression[] vars = new Expression[list.size()];
3753 {if (true) return vars;}
3754 throw new Error("Missing return statement in function");
3758 * used only by LocalVariableDeclaration().
3760 final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
3761 final Variable varName;
3762 Expression initializer = null;
3763 varName = Variable();
3764 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3766 jj_consume_token(ASSIGN);
3767 initializer = Expression();
3770 jj_la1[94] = jj_gen;
3773 if (initializer == null) {
3774 {if (true) return new VariableDeclaration(currentSegment,
3776 varName.sourceStart,
3777 varName.sourceEnd);}
3779 {if (true) return new VariableDeclaration(currentSegment,
3782 VariableDeclaration.EQUAL,
3783 varName.sourceStart);}
3784 throw new Error("Missing return statement in function");
3787 final public EmptyStatement EmptyStatement() throws ParseException {
3789 token = jj_consume_token(SEMICOLON);
3790 {if (true) return new EmptyStatement(token.sourceStart,token.sourceEnd);}
3791 throw new Error("Missing return statement in function");
3795 * used only by StatementExpressionList() which is used only by ForInit() and ForStatement()
3797 final public Expression StatementExpression() throws ParseException {
3798 final Expression expr;
3799 final Token operator;
3800 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3803 expr = PreIncDecExpression();
3804 {if (true) return expr;}
3811 expr = PrimaryExpression();
3812 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3815 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3817 operator = jj_consume_token(PLUS_PLUS);
3818 {if (true) return new PostfixedUnaryExpression(expr,
3819 OperatorIds.PLUS_PLUS,
3820 operator.sourceEnd);}
3823 operator = jj_consume_token(MINUS_MINUS);
3824 {if (true) return new PostfixedUnaryExpression(expr,
3825 OperatorIds.MINUS_MINUS,
3826 operator.sourceEnd);}
3829 jj_la1[95] = jj_gen;
3830 jj_consume_token(-1);
3831 throw new ParseException();
3835 jj_la1[96] = jj_gen;
3838 {if (true) return expr;}
3841 jj_la1[97] = jj_gen;
3842 jj_consume_token(-1);
3843 throw new ParseException();
3845 throw new Error("Missing return statement in function");
3848 final public SwitchStatement SwitchStatement() throws ParseException {
3849 Expression variable;
3850 final AbstractCase[] cases;
3851 final Token switchToken,lparenToken,rparenToken;
3853 switchToken = jj_consume_token(SWITCH);
3854 pos = switchToken.sourceEnd+1;
3856 lparenToken = jj_consume_token(LPAREN);
3857 pos = lparenToken.sourceEnd+1;
3858 } catch (ParseException e) {
3859 errorMessage = "'(' expected after 'switch'";
3863 processParseExceptionDebug(e);
3866 variable = Expression();
3867 pos = variable.sourceEnd+1;
3868 } catch (ParseException e) {
3869 if (errorMessage != null) {
3870 {if (true) throw e;}
3872 errorMessage = "expression expected";
3876 processParseExceptionDebug(e);
3877 variable = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
3880 rparenToken = jj_consume_token(RPAREN);
3881 pos = rparenToken.sourceEnd+1;
3882 } catch (ParseException e) {
3883 errorMessage = "')' expected";
3887 processParseExceptionDebug(e);
3889 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3891 cases = switchStatementBrace();
3894 cases = switchStatementColon(switchToken.sourceStart, switchToken.sourceEnd);
3897 jj_la1[98] = jj_gen;
3898 jj_consume_token(-1);
3899 throw new ParseException();
3901 {if (true) return new SwitchStatement(variable,
3903 switchToken.sourceStart,
3904 this.token.sourceEnd);}
3905 throw new Error("Missing return statement in function");
3908 final public AbstractCase[] switchStatementBrace() throws ParseException {
3910 final ArrayList cases = new ArrayList();
3913 token = jj_consume_token(LBRACE);
3914 pos = token.sourceEnd;
3917 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3923 jj_la1[99] = jj_gen;
3926 cas = switchLabel0();
3927 cases.add(cas);pos = cas.sourceEnd;
3930 token = jj_consume_token(RBRACE);
3931 pos = token.sourceEnd;
3932 } catch (ParseException e) {
3933 errorMessage = "'}' expected";
3937 processParseExceptionDebug(e);
3939 final AbstractCase[] abcase = new AbstractCase[cases.size()];
3940 cases.toArray(abcase);
3941 {if (true) return abcase;}
3942 throw new Error("Missing return statement in function");
3946 * A Switch statement with : ... endswitch;
3947 * @param start the begin offset of the switch
3948 * @param end the end offset of the switch
3950 final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
3952 final ArrayList cases = new ArrayList();
3955 token = jj_consume_token(COLON);
3956 pos = token.sourceEnd;
3958 setMarker(fileToParse,
3959 "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
3963 "Line " + token.beginLine);
3964 } catch (CoreException e) {
3965 PHPeclipsePlugin.log(e);
3969 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3975 jj_la1[100] = jj_gen;
3978 cas = switchLabel0();
3979 cases.add(cas);pos = cas.sourceEnd;
3982 token = jj_consume_token(ENDSWITCH);
3983 pos = token.sourceEnd;
3984 } catch (ParseException e) {
3985 errorMessage = "'endswitch' expected";
3989 processParseExceptionDebug(e);
3992 token = jj_consume_token(SEMICOLON);
3993 pos = token.sourceEnd;
3994 } catch (ParseException e) {
3995 errorMessage = "';' expected after 'endswitch' keyword";
3999 processParseExceptionDebug(e);
4001 final AbstractCase[] abcase = new AbstractCase[cases.size()];
4002 cases.toArray(abcase);
4003 {if (true) return abcase;}
4004 throw new Error("Missing return statement in function");
4007 final public AbstractCase switchLabel0() throws ParseException {
4008 final Expression expr;
4009 Statement statement;
4010 final ArrayList stmts = new ArrayList();
4011 final Token token = this.token;
4012 final int start = this.token.next.sourceStart;
4013 expr = SwitchLabel();
4016 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4052 case INTEGER_LITERAL:
4053 case FLOATING_POINT_LITERAL:
4054 case STRING_LITERAL:
4064 jj_la1[101] = jj_gen;
4067 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4101 case INTEGER_LITERAL:
4102 case FLOATING_POINT_LITERAL:
4103 case STRING_LITERAL:
4110 statement = BlockStatementNoBreak();
4111 stmts.add(statement);
4114 statement = htmlBlock();
4115 if (statement != null) {stmts.add(statement);}
4118 statement = BreakStatement();
4119 stmts.add(statement);
4122 jj_la1[102] = jj_gen;
4123 jj_consume_token(-1);
4124 throw new ParseException();
4127 final int listSize = stmts.size();
4128 final Statement[] stmtsArray = new Statement[listSize];
4129 stmts.toArray(stmtsArray);
4130 if (expr == null) {//it's a default
4131 final int end = this.token.next.sourceStart;
4132 {if (true) return new DefaultCase(stmtsArray,start,end);}
4134 if (listSize != 0) {
4135 {if (true) return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);}
4137 {if (true) return new Case(expr,stmtsArray,expr.sourceStart,expr.sourceEnd);}
4139 throw new Error("Missing return statement in function");
4144 * case Expression() :
4146 * @return the if it was a case and null if not
4148 final public Expression SwitchLabel() throws ParseException {
4149 final Expression expr;
4150 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4152 token = jj_consume_token(CASE);
4154 expr = Expression();
4155 } catch (ParseException e) {
4156 if (errorMessage != null) {if (true) throw e;}
4157 errorMessage = "expression expected after 'case' keyword";
4159 errorStart = token.sourceEnd +1;
4160 errorEnd = token.sourceEnd +1;
4161 {if (true) throw e;}
4164 token = jj_consume_token(COLON);
4165 } catch (ParseException e) {
4166 errorMessage = "':' expected after case expression";
4168 errorStart = expr.sourceEnd+1;
4169 errorEnd = expr.sourceEnd+1;
4170 processParseExceptionDebug(e);
4172 {if (true) return expr;}
4175 token = jj_consume_token(_DEFAULT);
4177 jj_consume_token(COLON);
4178 } catch (ParseException e) {
4179 errorMessage = "':' expected after 'default' keyword";
4181 errorStart = token.sourceEnd+1;
4182 errorEnd = token.sourceEnd+1;
4183 processParseExceptionDebug(e);
4185 {if (true) return null;}
4188 jj_la1[103] = jj_gen;
4189 jj_consume_token(-1);
4190 throw new ParseException();
4192 throw new Error("Missing return statement in function");
4195 final public Break BreakStatement() throws ParseException {
4196 Expression expression = null;
4197 final Token token, token2;
4199 token = jj_consume_token(BREAK);
4200 pos = token.sourceEnd+1;
4201 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4217 case INTEGER_LITERAL:
4218 case FLOATING_POINT_LITERAL:
4219 case STRING_LITERAL:
4224 expression = Expression();
4225 pos = expression.sourceEnd+1;
4228 jj_la1[104] = jj_gen;
4232 token2 = jj_consume_token(SEMICOLON);
4233 pos = token2.sourceEnd;
4234 } catch (ParseException e) {
4235 errorMessage = "';' expected after 'break' keyword";
4239 processParseExceptionDebug(e);
4241 {if (true) return new Break(expression, token.sourceStart, pos);}
4242 throw new Error("Missing return statement in function");
4245 final public IfStatement IfStatement() throws ParseException {
4246 final Expression condition;
4247 final IfStatement ifStatement;
4249 token = jj_consume_token(IF);
4250 condition = Condition("if");
4251 ifStatement = IfStatement0(condition,token.sourceStart,token.sourceEnd);
4252 {if (true) return ifStatement;}
4253 throw new Error("Missing return statement in function");
4256 final public Expression Condition(final String keyword) throws ParseException {
4257 final Expression condition;
4259 jj_consume_token(LPAREN);
4260 } catch (ParseException e) {
4261 errorMessage = "'(' expected after " + keyword + " keyword";
4263 errorStart = this.token.sourceEnd + 1;
4264 errorEnd = this.token.sourceEnd + 1;
4265 processParseExceptionDebug(e);
4267 condition = Expression();
4269 jj_consume_token(RPAREN);
4270 } catch (ParseException e) {
4271 errorMessage = "')' expected after " + keyword + " keyword";
4273 errorStart = condition.sourceEnd+1;
4274 errorEnd = condition.sourceEnd+1;
4275 processParseExceptionDebug(e);
4277 {if (true) return condition;}
4278 throw new Error("Missing return statement in function");
4281 final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
4282 Statement statement;
4283 final Statement stmt;
4284 final Statement[] statementsArray;
4285 ElseIf elseifStatement;
4286 Else elseStatement = null;
4287 final ArrayList stmts;
4288 final ArrayList elseIfList = new ArrayList();
4289 final ElseIf[] elseIfs;
4290 int pos = jj_input_stream.getPosition();
4291 final int endStatements;
4292 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4294 jj_consume_token(COLON);
4295 stmts = new ArrayList();
4298 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4332 case INTEGER_LITERAL:
4333 case FLOATING_POINT_LITERAL:
4334 case STRING_LITERAL:
4344 jj_la1[105] = jj_gen;
4347 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4380 case INTEGER_LITERAL:
4381 case FLOATING_POINT_LITERAL:
4382 case STRING_LITERAL:
4389 statement = Statement();
4390 stmts.add(statement);
4393 statement = htmlBlock();
4394 if (statement != null) {stmts.add(statement);}
4397 jj_la1[106] = jj_gen;
4398 jj_consume_token(-1);
4399 throw new ParseException();
4402 endStatements = jj_input_stream.getPosition();
4405 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4410 jj_la1[107] = jj_gen;
4413 elseifStatement = ElseIfStatementColon();
4414 elseIfList.add(elseifStatement);
4416 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4418 elseStatement = ElseStatementColon();
4421 jj_la1[108] = jj_gen;
4425 setMarker(fileToParse,
4426 "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
4430 "Line " + token.beginLine);
4431 } catch (CoreException e) {
4432 PHPeclipsePlugin.log(e);
4435 jj_consume_token(ENDIF);
4436 } catch (ParseException e) {
4437 errorMessage = "'endif' expected";
4439 errorStart = e.currentToken.sourceStart;
4440 errorEnd = e.currentToken.sourceEnd;
4441 {if (true) throw e;}
4444 jj_consume_token(SEMICOLON);
4445 } catch (ParseException e) {
4446 errorMessage = "';' expected after 'endif' keyword";
4448 errorStart = e.currentToken.sourceStart;
4449 errorEnd = e.currentToken.sourceEnd;
4450 {if (true) throw e;}
4452 elseIfs = new ElseIf[elseIfList.size()];
4453 elseIfList.toArray(elseIfs);
4454 if (stmts.size() == 1) {
4455 {if (true) return new IfStatement(condition,
4456 (Statement) stmts.get(0),
4460 jj_input_stream.getPosition());}
4462 statementsArray = new Statement[stmts.size()];
4463 stmts.toArray(statementsArray);
4464 {if (true) return new IfStatement(condition,
4465 new Block(statementsArray,pos,endStatements),
4469 jj_input_stream.getPosition());}
4505 case INTEGER_LITERAL:
4506 case FLOATING_POINT_LITERAL:
4507 case STRING_LITERAL:
4514 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4547 case INTEGER_LITERAL:
4548 case FLOATING_POINT_LITERAL:
4549 case STRING_LITERAL:
4562 jj_la1[109] = jj_gen;
4563 jj_consume_token(-1);
4564 throw new ParseException();
4568 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4573 jj_la1[110] = jj_gen;
4576 elseifStatement = ElseIfStatement();
4577 elseIfList.add(elseifStatement);
4579 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4581 jj_consume_token(ELSE);
4583 pos = jj_input_stream.getPosition();
4584 statement = Statement();
4585 elseStatement = new Else(statement,pos,jj_input_stream.getPosition());
4586 } catch (ParseException e) {
4587 if (errorMessage != null) {
4588 {if (true) throw e;}
4590 errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
4592 errorStart = e.currentToken.sourceStart;
4593 errorEnd = e.currentToken.sourceEnd;
4594 {if (true) throw e;}
4598 jj_la1[111] = jj_gen;
4601 elseIfs = new ElseIf[elseIfList.size()];
4602 elseIfList.toArray(elseIfs);
4603 {if (true) return new IfStatement(condition,
4608 jj_input_stream.getPosition());}
4611 jj_la1[112] = jj_gen;
4612 jj_consume_token(-1);
4613 throw new ParseException();
4615 throw new Error("Missing return statement in function");
4618 final public ElseIf ElseIfStatementColon() throws ParseException {
4619 final Expression condition;
4620 Statement statement;
4621 final ArrayList list = new ArrayList();
4622 final Token elseifToken;
4623 elseifToken = jj_consume_token(ELSEIF);
4624 condition = Condition("elseif");
4625 jj_consume_token(COLON);
4628 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4662 case INTEGER_LITERAL:
4663 case FLOATING_POINT_LITERAL:
4664 case STRING_LITERAL:
4674 jj_la1[113] = jj_gen;
4677 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4710 case INTEGER_LITERAL:
4711 case FLOATING_POINT_LITERAL:
4712 case STRING_LITERAL:
4719 statement = Statement();
4720 list.add(statement);
4723 statement = htmlBlock();
4724 if (statement != null) {list.add(statement);}
4727 jj_la1[114] = jj_gen;
4728 jj_consume_token(-1);
4729 throw new ParseException();
4732 final int sizeList = list.size();
4733 final Statement[] stmtsArray = new Statement[sizeList];
4734 list.toArray(stmtsArray);
4735 {if (true) return new ElseIf(condition,stmtsArray ,
4736 elseifToken.sourceStart,
4737 stmtsArray[sizeList-1].sourceEnd);}
4738 throw new Error("Missing return statement in function");
4741 final public Else ElseStatementColon() throws ParseException {
4742 Statement statement;
4743 final ArrayList list = new ArrayList();
4744 final Token elseToken;
4745 elseToken = jj_consume_token(ELSE);
4746 jj_consume_token(COLON);
4749 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4783 case INTEGER_LITERAL:
4784 case FLOATING_POINT_LITERAL:
4785 case STRING_LITERAL:
4795 jj_la1[115] = jj_gen;
4798 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4831 case INTEGER_LITERAL:
4832 case FLOATING_POINT_LITERAL:
4833 case STRING_LITERAL:
4840 statement = Statement();
4841 list.add(statement);
4844 statement = htmlBlock();
4845 if (statement != null) {list.add(statement);}
4848 jj_la1[116] = jj_gen;
4849 jj_consume_token(-1);
4850 throw new ParseException();
4853 final int sizeList = list.size();
4854 final Statement[] stmtsArray = new Statement[sizeList];
4855 list.toArray(stmtsArray);
4856 {if (true) return new Else(stmtsArray,elseToken.sourceStart,stmtsArray[sizeList-1].sourceEnd);}
4857 throw new Error("Missing return statement in function");
4860 final public ElseIf ElseIfStatement() throws ParseException {
4861 final Expression condition;
4862 //final Statement statement;
4863 final Token elseifToken;
4864 final Statement[] statement = new Statement[1];
4865 elseifToken = jj_consume_token(ELSEIF);
4866 condition = Condition("elseif");
4867 statement[0] = Statement();
4868 {if (true) return new ElseIf(condition,statement,elseifToken.sourceStart,statement[0].sourceEnd);}
4869 throw new Error("Missing return statement in function");
4872 final public WhileStatement WhileStatement() throws ParseException {
4873 final Expression condition;
4874 final Statement action;
4875 final Token whileToken;
4876 whileToken = jj_consume_token(WHILE);
4877 condition = Condition("while");
4878 action = WhileStatement0(whileToken.sourceStart,whileToken.sourceEnd);
4879 {if (true) return new WhileStatement(condition,action,whileToken.sourceStart,action.sourceEnd);}
4880 throw new Error("Missing return statement in function");
4883 final public Statement WhileStatement0(final int start, final int end) throws ParseException {
4884 Statement statement;
4885 final ArrayList stmts = new ArrayList();
4886 final int pos = jj_input_stream.getPosition();
4887 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4889 jj_consume_token(COLON);
4892 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4925 case INTEGER_LITERAL:
4926 case FLOATING_POINT_LITERAL:
4927 case STRING_LITERAL:
4937 jj_la1[117] = jj_gen;
4940 statement = Statement();
4941 stmts.add(statement);
4944 setMarker(fileToParse,
4945 "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
4949 "Line " + token.beginLine);
4950 } catch (CoreException e) {
4951 PHPeclipsePlugin.log(e);
4954 jj_consume_token(ENDWHILE);
4955 } catch (ParseException e) {
4956 errorMessage = "'endwhile' expected";
4958 errorStart = e.currentToken.sourceStart;
4959 errorEnd = e.currentToken.sourceEnd;
4960 {if (true) throw e;}
4963 jj_consume_token(SEMICOLON);
4964 final Statement[] stmtsArray = new Statement[stmts.size()];
4965 stmts.toArray(stmtsArray);
4966 {if (true) return new Block(stmtsArray,pos,jj_input_stream.getPosition());}
4967 } catch (ParseException e) {
4968 errorMessage = "';' expected after 'endwhile' keyword";
4970 errorStart = e.currentToken.sourceStart;
4971 errorEnd = e.currentToken.sourceEnd;
4972 {if (true) throw e;}
5007 case INTEGER_LITERAL:
5008 case FLOATING_POINT_LITERAL:
5009 case STRING_LITERAL:
5016 statement = Statement();
5017 {if (true) return statement;}
5020 jj_la1[118] = jj_gen;
5021 jj_consume_token(-1);
5022 throw new ParseException();
5024 throw new Error("Missing return statement in function");
5027 final public DoStatement DoStatement() throws ParseException {
5028 final Statement action;
5029 final Expression condition;
5031 Token token2 = null;
5032 token = jj_consume_token(DO);
5033 action = Statement();
5034 jj_consume_token(WHILE);
5035 condition = Condition("while");
5037 token2 = jj_consume_token(SEMICOLON);
5038 } catch (ParseException e) {
5039 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
5041 errorStart = condition.sourceEnd+1;
5042 errorEnd = condition.sourceEnd+1;
5043 processParseExceptionDebug(e);
5045 if (token2 == null) {
5046 {if (true) return new DoStatement(condition,action,token.sourceStart,condition.sourceEnd);}
5048 {if (true) return new DoStatement(condition,action,token.sourceStart,token2.sourceEnd);}
5049 throw new Error("Missing return statement in function");
5052 final public ForeachStatement ForeachStatement() throws ParseException {
5053 Statement statement = null;
5054 Expression expression = null;
5055 ArrayVariableDeclaration variable = null;
5057 Token lparenToken = null;
5058 Token asToken = null;
5059 Token rparenToken = null;
5061 foreachToken = jj_consume_token(FOREACH);
5063 lparenToken = jj_consume_token(LPAREN);
5064 pos = lparenToken.sourceEnd+1;
5065 } catch (ParseException e) {
5066 errorMessage = "'(' expected after 'foreach' keyword";
5068 errorStart = e.currentToken.sourceStart;
5069 errorEnd = e.currentToken.sourceEnd;
5070 processParseExceptionDebug(e);
5071 {pos = foreachToken.sourceEnd+1;}
5074 expression = Expression();
5075 pos = expression.sourceEnd+1;
5076 } catch (ParseException e) {
5077 errorMessage = "variable expected";
5079 errorStart = e.currentToken.sourceStart;
5080 errorEnd = e.currentToken.sourceEnd;
5081 processParseExceptionDebug(e);
5084 asToken = jj_consume_token(AS);
5085 pos = asToken.sourceEnd+1;
5086 } catch (ParseException e) {
5087 errorMessage = "'as' expected";
5089 errorStart = e.currentToken.sourceStart;
5090 errorEnd = e.currentToken.sourceEnd;
5091 processParseExceptionDebug(e);
5094 variable = ArrayVariable();
5095 pos = variable.sourceEnd+1;
5096 } catch (ParseException e) {
5097 if (errorMessage != null) {if (true) throw e;}
5098 errorMessage = "variable expected";
5100 errorStart = e.currentToken.sourceStart;
5101 errorEnd = e.currentToken.sourceEnd;
5102 processParseExceptionDebug(e);
5105 rparenToken = jj_consume_token(RPAREN);
5106 pos = rparenToken.sourceEnd+1;
5107 } catch (ParseException e) {
5108 errorMessage = "')' expected after 'foreach' keyword";
5110 errorStart = e.currentToken.sourceStart;
5111 errorEnd = e.currentToken.sourceEnd;
5112 processParseExceptionDebug(e);
5115 statement = Statement();
5116 pos = statement.sourceEnd+1;
5117 } catch (ParseException e) {
5118 if (errorMessage != null) {if (true) throw e;}
5119 errorMessage = "statement expected";
5121 errorStart = e.currentToken.sourceStart;
5122 errorEnd = e.currentToken.sourceEnd;
5123 processParseExceptionDebug(e);
5125 {if (true) return new ForeachStatement(expression,
5128 foreachToken.sourceStart,
5130 throw new Error("Missing return statement in function");
5134 * a for declaration.
5135 * @return a node representing the for statement
5137 final public ForStatement ForStatement() throws ParseException {
5138 final Token token,tokenEndFor,token2,tokenColon;
5140 Expression[] initializations = null;
5141 Expression condition = null;
5142 Expression[] increments = null;
5144 final ArrayList list = new ArrayList();
5145 token = jj_consume_token(FOR);
5147 jj_consume_token(LPAREN);
5148 } catch (ParseException e) {
5149 errorMessage = "'(' expected after 'for' keyword";
5151 errorStart = token.sourceEnd;
5152 errorEnd = token.sourceEnd +1;
5153 processParseExceptionDebug(e);
5155 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5171 case INTEGER_LITERAL:
5172 case FLOATING_POINT_LITERAL:
5173 case STRING_LITERAL:
5178 initializations = ForInit();
5181 jj_la1[119] = jj_gen;
5184 jj_consume_token(SEMICOLON);
5185 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5201 case INTEGER_LITERAL:
5202 case FLOATING_POINT_LITERAL:
5203 case STRING_LITERAL:
5208 condition = Expression();
5211 jj_la1[120] = jj_gen;
5214 jj_consume_token(SEMICOLON);
5215 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5231 case INTEGER_LITERAL:
5232 case FLOATING_POINT_LITERAL:
5233 case STRING_LITERAL:
5238 increments = StatementExpressionList();
5241 jj_la1[121] = jj_gen;
5244 jj_consume_token(RPAREN);
5245 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5278 case INTEGER_LITERAL:
5279 case FLOATING_POINT_LITERAL:
5280 case STRING_LITERAL:
5287 action = Statement();
5288 {if (true) return new ForStatement(initializations,
5296 tokenColon = jj_consume_token(COLON);
5297 pos = tokenColon.sourceEnd+1;
5300 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5333 case INTEGER_LITERAL:
5334 case FLOATING_POINT_LITERAL:
5335 case STRING_LITERAL:
5345 jj_la1[122] = jj_gen;
5348 action = Statement();
5349 list.add(action);pos = action.sourceEnd+1;
5352 setMarker(fileToParse,
5353 "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
5357 "Line " + token.beginLine);
5358 } catch (CoreException e) {
5359 PHPeclipsePlugin.log(e);
5362 tokenEndFor = jj_consume_token(ENDFOR);
5363 pos = tokenEndFor.sourceEnd+1;
5364 } catch (ParseException e) {
5365 errorMessage = "'endfor' expected";
5369 processParseExceptionDebug(e);
5372 token2 = jj_consume_token(SEMICOLON);
5373 pos = token2.sourceEnd+1;
5374 } catch (ParseException e) {
5375 errorMessage = "';' expected after 'endfor' keyword";
5379 processParseExceptionDebug(e);
5381 final Statement[] stmtsArray = new Statement[list.size()];
5382 list.toArray(stmtsArray);
5383 {if (true) return new ForStatement(initializations,
5386 new Block(stmtsArray,
5387 stmtsArray[0].sourceStart,
5388 stmtsArray[stmtsArray.length-1].sourceEnd),
5393 jj_la1[123] = jj_gen;
5394 jj_consume_token(-1);
5395 throw new ParseException();
5397 throw new Error("Missing return statement in function");
5400 final public Expression[] ForInit() throws ParseException {
5401 final Expression[] exprs;
5402 if (jj_2_5(2147483647)) {
5403 exprs = LocalVariableDeclaration();
5404 {if (true) return exprs;}
5406 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5422 case INTEGER_LITERAL:
5423 case FLOATING_POINT_LITERAL:
5424 case STRING_LITERAL:
5429 exprs = StatementExpressionList();
5430 {if (true) return exprs;}
5433 jj_la1[124] = jj_gen;
5434 jj_consume_token(-1);
5435 throw new ParseException();
5438 throw new Error("Missing return statement in function");
5441 final public Expression[] StatementExpressionList() throws ParseException {
5442 final ArrayList list = new ArrayList();
5443 final Expression expr;
5444 expr = Expression();
5448 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5453 jj_la1[125] = jj_gen;
5456 jj_consume_token(COMMA);
5460 final Expression[] exprsArray = new Expression[list.size()];
5461 list.toArray(exprsArray);
5462 {if (true) return exprsArray;}
5463 throw new Error("Missing return statement in function");
5466 final public Continue ContinueStatement() throws ParseException {
5467 Expression expr = null;
5469 Token token2 = null;
5470 token = jj_consume_token(CONTINUE);
5471 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5487 case INTEGER_LITERAL:
5488 case FLOATING_POINT_LITERAL:
5489 case STRING_LITERAL:
5494 expr = Expression();
5497 jj_la1[126] = jj_gen;
5501 token2 = jj_consume_token(SEMICOLON);
5502 } catch (ParseException e) {
5503 errorMessage = "';' expected after 'continue' statement";
5506 errorStart = token.sourceEnd+1;
5507 errorEnd = token.sourceEnd+1;
5509 errorStart = expr.sourceEnd+1;
5510 errorEnd = expr.sourceEnd+1;
5512 processParseExceptionDebug(e);
5514 if (token2 == null) {
5516 {if (true) return new Continue(expr,token.sourceStart,token.sourceEnd);}
5518 {if (true) return new Continue(expr,token.sourceStart,expr.sourceEnd);}
5520 {if (true) return new Continue(expr,token.sourceStart,token2.sourceEnd);}
5521 throw new Error("Missing return statement in function");
5524 final public ReturnStatement ReturnStatement() throws ParseException {
5525 Expression expr = null;
5527 Token token2 = null;
5528 token = jj_consume_token(RETURN);
5529 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5545 case INTEGER_LITERAL:
5546 case FLOATING_POINT_LITERAL:
5547 case STRING_LITERAL:
5552 expr = Expression();
5555 jj_la1[127] = jj_gen;
5559 token2 = jj_consume_token(SEMICOLON);
5560 } catch (ParseException e) {
5561 errorMessage = "';' expected after 'return' statement";
5564 errorStart = token.sourceEnd+1;
5565 errorEnd = token.sourceEnd+1;
5567 errorStart = expr.sourceEnd+1;
5568 errorEnd = expr.sourceEnd+1;
5570 processParseExceptionDebug(e);
5572 if (token2 == null) {
5574 {if (true) return new ReturnStatement(expr,token.sourceStart,token.sourceEnd);}
5576 {if (true) return new ReturnStatement(expr,token.sourceStart,expr.sourceEnd);}
5578 {if (true) return new ReturnStatement(expr,token.sourceStart,token2.sourceEnd);}
5579 throw new Error("Missing return statement in function");
5582 final private boolean jj_2_1(int xla) {
5583 jj_la = xla; jj_lastpos = jj_scanpos = token;
5584 boolean retval = !jj_3_1();
5589 final private boolean jj_2_2(int xla) {
5590 jj_la = xla; jj_lastpos = jj_scanpos = token;
5591 boolean retval = !jj_3_2();
5596 final private boolean jj_2_3(int xla) {
5597 jj_la = xla; jj_lastpos = jj_scanpos = token;
5598 boolean retval = !jj_3_3();
5603 final private boolean jj_2_4(int xla) {
5604 jj_la = xla; jj_lastpos = jj_scanpos = token;
5605 boolean retval = !jj_3_4();
5610 final private boolean jj_2_5(int xla) {
5611 jj_la = xla; jj_lastpos = jj_scanpos = token;
5612 boolean retval = !jj_3_5();
5617 final private boolean jj_3R_110() {
5618 if (jj_scan_token(BIT_OR)) return true;
5619 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5620 if (jj_3R_109()) return true;
5621 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5625 final private boolean jj_3R_103() {
5626 if (jj_3R_109()) return true;
5627 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5631 if (jj_3R_110()) { jj_scanpos = xsp; break; }
5632 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5637 final private boolean jj_3R_188() {
5638 if (jj_scan_token(ARRAY)) return true;
5639 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5640 if (jj_3R_198()) return true;
5641 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5645 final private boolean jj_3R_132() {
5646 if (jj_scan_token(IDENTIFIER)) return true;
5647 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5651 final private boolean jj_3R_106() {
5652 if (jj_scan_token(DOT)) return true;
5653 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5654 if (jj_3R_103()) return true;
5655 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5659 final private boolean jj_3R_131() {
5660 if (jj_scan_token(LBRACE)) return true;
5661 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5662 if (jj_3R_49()) return true;
5663 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5664 if (jj_scan_token(RBRACE)) return true;
5665 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5669 final private boolean jj_3R_97() {
5670 if (jj_3R_103()) return true;
5671 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5675 if (jj_3R_106()) { jj_scanpos = xsp; break; }
5676 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5681 final private boolean jj_3R_204() {
5682 if (jj_3R_207()) return true;
5683 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5687 final private boolean jj_3R_122() {
5694 if (jj_3R_132()) return true;
5695 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5696 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5697 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5701 final private boolean jj_3R_130() {
5702 if (jj_scan_token(DOLLAR)) return true;
5703 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5704 if (jj_3R_122()) return true;
5705 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5709 final private boolean jj_3R_108() {
5710 if (jj_scan_token(_ANDL)) return true;
5711 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5715 final private boolean jj_3R_107() {
5716 if (jj_scan_token(AND_AND)) return true;
5717 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5721 final private boolean jj_3R_100() {
5726 if (jj_3R_108()) return true;
5727 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5728 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5729 if (jj_3R_97()) return true;
5730 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5734 final private boolean jj_3R_81() {
5735 if (jj_3R_97()) return true;
5736 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5740 if (jj_3R_100()) { jj_scanpos = xsp; break; }
5741 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5746 final private boolean jj_3R_79() {
5747 if (jj_scan_token(HOOK)) return true;
5748 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5749 if (jj_3R_49()) return true;
5750 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5751 if (jj_scan_token(COLON)) return true;
5752 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5753 if (jj_3R_73()) return true;
5754 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5758 final private boolean jj_3R_195() {
5759 if (jj_scan_token(NEW)) return true;
5760 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5761 if (jj_3R_203()) return true;
5762 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5765 if (jj_3R_204()) jj_scanpos = xsp;
5766 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5770 final private boolean jj_3R_68() {
5771 if (jj_scan_token(DOLLAR)) return true;
5772 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5773 if (jj_3R_122()) return true;
5774 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5778 final private boolean jj_3R_202() {
5779 if (jj_3R_207()) return true;
5780 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5784 final private boolean jj_3R_194() {
5785 if (jj_3R_116()) return true;
5786 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5789 if (jj_3R_202()) jj_scanpos = xsp;
5790 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5794 final private boolean jj_3R_102() {
5795 if (jj_scan_token(_ORL)) return true;
5796 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5800 final private boolean jj_3R_101() {
5801 if (jj_scan_token(OR_OR)) return true;
5802 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5806 final private boolean jj_3R_83() {
5811 if (jj_3R_102()) return true;
5812 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5813 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5814 if (jj_3R_81()) return true;
5815 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5819 final private boolean jj_3R_201() {
5820 if (jj_3R_207()) return true;
5821 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5825 final private boolean jj_3R_76() {
5826 if (jj_3R_81()) return true;
5827 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5831 if (jj_3R_83()) { jj_scanpos = xsp; break; }
5832 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5837 final private boolean jj_3_1() {
5838 if (jj_3R_40()) return true;
5839 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5843 final private boolean jj_3R_51() {
5844 if (jj_scan_token(COMMA)) return true;
5845 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5846 if (jj_3R_49()) return true;
5847 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5851 final private boolean jj_3R_200() {
5852 if (jj_scan_token(STATICCLASSACCESS)) return true;
5853 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5854 if (jj_3R_203()) return true;
5855 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5859 final private boolean jj_3R_45() {
5860 if (jj_3R_49()) return true;
5861 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5865 if (jj_3R_51()) { jj_scanpos = xsp; break; }
5866 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5871 final private boolean jj_3R_116() {
5872 if (jj_3R_68()) return true;
5873 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5877 if (jj_3_1()) { jj_scanpos = xsp; break; }
5878 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5883 final private boolean jj_3R_193() {
5884 if (jj_scan_token(IDENTIFIER)) return true;
5885 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5889 if (jj_3R_200()) { jj_scanpos = xsp; break; }
5890 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5893 if (jj_3R_201()) jj_scanpos = xsp;
5894 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5898 final private boolean jj_3R_187() {
5905 if (jj_3R_195()) return true;
5906 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5907 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5908 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5912 final private boolean jj_3R_73() {
5913 if (jj_3R_76()) return true;
5914 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5917 if (jj_3R_79()) jj_scanpos = xsp;
5918 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5922 final private boolean jj_3R_178() {
5923 if (jj_3R_188()) return true;
5924 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5928 final private boolean jj_3_5() {
5929 if (jj_3R_45()) return true;
5930 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5934 final private boolean jj_3R_186() {
5935 if (jj_scan_token(BIT_AND)) return true;
5936 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5940 final private boolean jj_3R_96() {
5941 if (jj_scan_token(TILDEEQUAL)) return true;
5942 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5946 final private boolean jj_3R_95() {
5947 if (jj_scan_token(DOTASSIGN)) return true;
5948 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5952 final private boolean jj_3R_173() {
5957 if (jj_3R_178()) return true;
5958 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5959 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5963 final private boolean jj_3R_177() {
5966 if (jj_3R_186()) jj_scanpos = xsp;
5967 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5968 if (jj_3R_187()) return true;
5969 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5973 final private boolean jj_3R_94() {
5974 if (jj_scan_token(ORASSIGN)) return true;
5975 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5979 final private boolean jj_3R_93() {
5980 if (jj_scan_token(XORASSIGN)) return true;
5981 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5985 final private boolean jj_3R_92() {
5986 if (jj_scan_token(ANDASSIGN)) return true;
5987 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5991 final private boolean jj_3R_91() {
5992 if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
5993 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5997 final private boolean jj_3R_90() {
5998 if (jj_scan_token(LSHIFTASSIGN)) return true;
5999 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6003 final private boolean jj_3R_89() {
6004 if (jj_scan_token(MINUSASSIGN)) return true;
6005 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6009 final private boolean jj_3R_88() {
6010 if (jj_scan_token(PLUSASSIGN)) return true;
6011 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6015 final private boolean jj_3R_87() {
6016 if (jj_scan_token(REMASSIGN)) return true;
6017 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6021 final private boolean jj_3R_86() {
6022 if (jj_scan_token(SLASHASSIGN)) return true;
6023 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6027 final private boolean jj_3R_85() {
6028 if (jj_scan_token(STARASSIGN)) return true;
6029 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6033 final private boolean jj_3R_84() {
6034 if (jj_scan_token(ASSIGN)) return true;
6035 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6039 final private boolean jj_3R_80() {
6066 if (jj_3R_96()) return true;
6067 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6068 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6069 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6070 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6071 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6072 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6073 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6074 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6075 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6076 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6077 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6078 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6079 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6083 final private boolean jj_3R_197() {
6084 if (jj_scan_token(MINUS_MINUS)) return true;
6085 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6089 final private boolean jj_3R_196() {
6090 if (jj_scan_token(PLUS_PLUS)) return true;
6091 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6095 final private boolean jj_3R_191() {
6100 if (jj_3R_197()) return true;
6101 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6102 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6106 final private boolean jj_3R_175() {
6107 if (jj_3R_173()) return true;
6108 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6111 if (jj_3R_191()) jj_scanpos = xsp;
6112 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6116 final private boolean jj_3R_99() {
6117 if (jj_3R_105()) return true;
6118 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6122 final private boolean jj_3R_98() {
6123 if (jj_3R_104()) return true;
6124 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6128 final private boolean jj_3R_82() {
6133 if (jj_3R_99()) return true;
6134 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6135 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6139 final private boolean jj_3R_190() {
6140 if (jj_scan_token(ARRAY)) return true;
6141 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6145 final private boolean jj_3R_189() {
6146 if (jj_3R_50()) return true;
6147 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6151 final private boolean jj_3R_78() {
6152 if (jj_3R_82()) return true;
6153 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6157 final private boolean jj_3R_43() {
6158 if (jj_scan_token(ARRAY)) return true;
6159 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6163 final private boolean jj_3R_77() {
6164 if (jj_scan_token(BANG)) return true;
6165 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6166 if (jj_3R_74()) return true;
6167 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6171 final private boolean jj_3R_74() {
6176 if (jj_3R_78()) return true;
6177 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6178 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6182 final private boolean jj_3R_174() {
6183 if (jj_scan_token(LPAREN)) return true;
6184 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6189 if (jj_3R_190()) return true;
6190 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6191 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6192 if (jj_scan_token(RPAREN)) return true;
6193 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6194 if (jj_3R_144()) return true;
6195 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6199 final private boolean jj_3R_42() {
6200 if (jj_3R_50()) return true;
6201 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6205 final private boolean jj_3R_58() {
6206 if (jj_3R_74()) return true;
6207 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6211 final private boolean jj_3_3() {
6212 if (jj_scan_token(LPAREN)) return true;
6213 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6218 if (jj_3R_43()) return true;
6219 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6220 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6221 if (jj_scan_token(RPAREN)) return true;
6222 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6226 final private boolean jj_3R_172() {
6227 if (jj_scan_token(LPAREN)) return true;
6228 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6229 if (jj_3R_49()) return true;
6230 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6231 if (jj_scan_token(RPAREN)) return true;
6232 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6236 final private boolean jj_3R_171() {
6237 if (jj_3R_176()) return true;
6238 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6242 final private boolean jj_3R_170() {
6243 if (jj_3R_175()) return true;
6244 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6248 final private boolean jj_3R_166() {
6257 if (jj_3R_172()) return true;
6258 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6259 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6260 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6261 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6265 final private boolean jj_3R_169() {
6266 if (jj_3R_174()) return true;
6267 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6271 final private boolean jj_3R_44() {
6272 if (jj_3R_49()) return true;
6273 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6274 if (jj_scan_token(SEMICOLON)) return true;
6275 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6279 final private boolean jj_3R_168() {
6280 if (jj_scan_token(MINUS_MINUS)) return true;
6281 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6285 final private boolean jj_3R_167() {
6286 if (jj_scan_token(PLUS_PLUS)) return true;
6287 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6291 final private boolean jj_3R_75() {
6292 if (jj_3R_80()) return true;
6293 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6294 if (jj_3R_49()) return true;
6295 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6299 final private boolean jj_3R_165() {
6304 if (jj_3R_168()) return true;
6305 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6306 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6307 if (jj_3R_173()) return true;
6308 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6312 final private boolean jj_3R_49() {
6317 if (jj_3R_58()) return true;
6318 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6319 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6323 final private boolean jj_3R_57() {
6324 if (jj_3R_73()) return true;
6325 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6328 if (jj_3R_75()) jj_scanpos = xsp;
6329 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6333 final private boolean jj_3R_67() {
6334 if (jj_scan_token(OBJECT)) return true;
6335 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6339 final private boolean jj_3R_161() {
6340 if (jj_3R_166()) return true;
6341 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6345 final private boolean jj_3R_66() {
6346 if (jj_scan_token(INTEGER)) return true;
6347 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6351 final private boolean jj_3R_65() {
6352 if (jj_scan_token(INT)) return true;
6353 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6357 final private boolean jj_3R_64() {
6358 if (jj_scan_token(FLOAT)) return true;
6359 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6363 final private boolean jj_3R_160() {
6364 if (jj_3R_165()) return true;
6365 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6369 final private boolean jj_3R_63() {
6370 if (jj_scan_token(DOUBLE)) return true;
6371 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6375 final private boolean jj_3R_62() {
6376 if (jj_scan_token(REAL)) return true;
6377 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6381 final private boolean jj_3R_61() {
6382 if (jj_scan_token(BOOLEAN)) return true;
6383 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6387 final private boolean jj_3R_60() {
6388 if (jj_scan_token(BOOL)) return true;
6389 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6393 final private boolean jj_3R_159() {
6394 if (jj_scan_token(MINUS)) return true;
6395 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6396 if (jj_3R_148()) return true;
6397 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6401 final private boolean jj_3R_50() {
6420 if (jj_3R_67()) return true;
6421 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6422 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6423 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6424 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6425 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6426 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6427 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6428 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6429 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6433 final private boolean jj_3R_59() {
6434 if (jj_scan_token(STRING)) return true;
6435 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6439 final private boolean jj_3R_156() {
6448 if (jj_3R_161()) return true;
6449 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6450 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6451 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6452 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6456 final private boolean jj_3R_158() {
6457 if (jj_scan_token(PLUS)) return true;
6458 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6459 if (jj_3R_148()) return true;
6460 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6464 final private boolean jj_3_4() {
6465 if (jj_3R_44()) return true;
6466 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6470 final private boolean jj_3R_164() {
6471 if (jj_3R_156()) return true;
6472 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6476 final private boolean jj_3R_163() {
6477 if (jj_scan_token(BANG)) return true;
6478 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6479 if (jj_3R_157()) return true;
6480 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6484 final private boolean jj_3R_157() {
6491 if (jj_3R_164()) return true;
6492 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6493 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6494 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6498 final private boolean jj_3R_162() {
6499 if (jj_scan_token(AT)) return true;
6500 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6501 if (jj_3R_157()) return true;
6502 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6506 final private boolean jj_3R_155() {
6507 if (jj_3R_156()) return true;
6508 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6512 final private boolean jj_3R_216() {
6513 if (jj_scan_token(COMMA)) return true;
6514 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6515 if (jj_3R_49()) return true;
6516 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6520 final private boolean jj_3R_154() {
6521 if (jj_scan_token(BANG)) return true;
6522 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6523 if (jj_3R_157()) return true;
6524 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6528 final private boolean jj_3R_215() {
6529 if (jj_3R_49()) return true;
6530 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6534 if (jj_3R_216()) { jj_scanpos = xsp; break; }
6535 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6540 final private boolean jj_3R_153() {
6541 if (jj_scan_token(TILDE)) return true;
6542 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6543 if (jj_3R_148()) return true;
6544 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6548 final private boolean jj_3R_148() {
6557 if (jj_3R_155()) return true;
6558 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6559 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6560 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6561 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6565 final private boolean jj_3R_152() {
6566 if (jj_scan_token(AT)) return true;
6567 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6568 if (jj_3R_148()) return true;
6569 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6573 final private boolean jj_3R_213() {
6574 if (jj_3R_215()) return true;
6575 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6579 final private boolean jj_3R_144() {
6580 if (jj_3R_148()) return true;
6581 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6585 final private boolean jj_3R_151() {
6586 if (jj_scan_token(REMAINDER)) return true;
6587 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6591 final private boolean jj_3R_150() {
6592 if (jj_scan_token(SLASH)) return true;
6593 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6597 final private boolean jj_3R_149() {
6598 if (jj_scan_token(STAR)) return true;
6599 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6603 final private boolean jj_3R_207() {
6604 if (jj_scan_token(LPAREN)) return true;
6605 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6608 if (jj_3R_213()) jj_scanpos = xsp;
6609 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6610 if (jj_scan_token(RPAREN)) return true;
6611 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6615 final private boolean jj_3R_145() {
6622 if (jj_3R_151()) return true;
6623 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6624 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6625 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6626 if (jj_3R_144()) return true;
6627 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6631 final private boolean jj_3R_139() {
6632 if (jj_3R_144()) return true;
6633 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6637 if (jj_3R_145()) { jj_scanpos = xsp; break; }
6638 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6643 final private boolean jj_3R_212() {
6644 if (jj_scan_token(LBRACE1)) return true;
6645 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6646 if (jj_scan_token(ID)) return true;
6647 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6648 if (jj_scan_token(RBRACE1)) return true;
6649 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6653 final private boolean jj_3R_147() {
6654 if (jj_scan_token(MINUS)) return true;
6655 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6659 final private boolean jj_3R_211() {
6660 if (jj_scan_token(IDENTIFIER)) return true;
6661 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6665 final private boolean jj_3R_146() {
6666 if (jj_scan_token(PLUS)) return true;
6667 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6671 final private boolean jj_3R_140() {
6676 if (jj_3R_147()) return true;
6677 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6678 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6679 if (jj_3R_139()) return true;
6680 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6684 final private boolean jj_3R_199() {
6685 if (jj_scan_token(DOLLARS)) return true;
6686 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6691 if (jj_3R_212()) return true;
6692 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6693 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6697 final private boolean jj_3R_133() {
6698 if (jj_3R_139()) return true;
6699 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6703 if (jj_3R_140()) { jj_scanpos = xsp; break; }
6704 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6709 final private boolean jj_3R_192() {
6710 if (jj_scan_token(DOUBLEQUOTE)) return true;
6711 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6715 if (jj_3R_199()) { jj_scanpos = xsp; break; }
6716 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6718 if (jj_scan_token(DOUBLEQUOTE2)) return true;
6719 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6723 final private boolean jj_3R_113() {
6724 if (jj_scan_token(ASSIGN)) return true;
6725 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6726 if (jj_3R_49()) return true;
6727 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6731 final private boolean jj_3R_143() {
6732 if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
6733 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6737 final private boolean jj_3R_142() {
6738 if (jj_scan_token(RSIGNEDSHIFT)) return true;
6739 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6743 final private boolean jj_3R_141() {
6744 if (jj_scan_token(LSHIFT)) return true;
6745 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6749 final private boolean jj_3R_185() {
6750 if (jj_3R_192()) return true;
6751 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6755 final private boolean jj_3R_184() {
6756 if (jj_scan_token(NULL)) return true;
6757 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6761 final private boolean jj_3R_134() {
6768 if (jj_3R_143()) return true;
6769 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6770 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6771 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6772 if (jj_3R_133()) return true;
6773 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6777 final private boolean jj_3R_183() {
6778 if (jj_scan_token(FALSE)) return true;
6779 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6783 final private boolean jj_3R_182() {
6784 if (jj_scan_token(TRUE)) return true;
6785 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6789 final private boolean jj_3R_123() {
6790 if (jj_3R_133()) return true;
6791 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6795 if (jj_3R_134()) { jj_scanpos = xsp; break; }
6796 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6801 final private boolean jj_3R_181() {
6802 if (jj_scan_token(STRING_LITERAL)) return true;
6803 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6807 final private boolean jj_3R_180() {
6808 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
6809 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6813 final private boolean jj_3R_117() {
6814 if (jj_3R_116()) return true;
6815 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6819 final private boolean jj_3R_179() {
6820 if (jj_scan_token(INTEGER_LITERAL)) return true;
6821 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6825 final private boolean jj_3R_176() {
6840 if (jj_3R_185()) return true;
6841 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6842 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6843 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6844 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6845 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6846 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6847 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6851 final private boolean jj_3R_138() {
6852 if (jj_scan_token(GE)) return true;
6853 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6857 final private boolean jj_3R_137() {
6858 if (jj_scan_token(LE)) return true;
6859 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6863 final private boolean jj_3R_136() {
6864 if (jj_scan_token(GT)) return true;
6865 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6869 final private boolean jj_3R_112() {
6870 if (jj_scan_token(COMMA)) return true;
6871 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6874 if (jj_3R_117()) jj_scanpos = xsp;
6875 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6879 final private boolean jj_3R_135() {
6880 if (jj_scan_token(LT)) return true;
6881 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6885 final private boolean jj_3R_124() {
6894 if (jj_3R_138()) return true;
6895 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6896 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6897 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6898 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6899 if (jj_3R_123()) return true;
6900 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6904 final private boolean jj_3R_120() {
6905 if (jj_3R_123()) return true;
6906 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6910 if (jj_3R_124()) { jj_scanpos = xsp; break; }
6911 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6916 final private boolean jj_3R_111() {
6917 if (jj_3R_116()) return true;
6918 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6922 final private boolean jj_3R_72() {
6923 if (jj_3R_50()) return true;
6924 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6928 final private boolean jj_3R_71() {
6929 if (jj_3R_49()) return true;
6930 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6934 final private boolean jj_3R_56() {
6939 if (jj_3R_72()) return true;
6940 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6941 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6945 final private boolean jj_3R_48() {
6946 if (jj_scan_token(LBRACE)) return true;
6947 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6950 if (jj_3R_56()) jj_scanpos = xsp;
6951 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6952 if (jj_scan_token(RBRACE)) return true;
6953 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6957 final private boolean jj_3R_104() {
6958 if (jj_scan_token(LIST)) return true;
6959 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6960 if (jj_scan_token(LPAREN)) return true;
6961 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6964 if (jj_3R_111()) jj_scanpos = xsp;
6965 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6968 if (jj_3R_112()) { jj_scanpos = xsp; break; }
6969 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6971 if (jj_scan_token(RPAREN)) return true;
6972 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6974 if (jj_3R_113()) jj_scanpos = xsp;
6975 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6979 final private boolean jj_3R_206() {
6980 if (jj_scan_token(COMMA)) return true;
6981 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6985 final private boolean jj_3R_70() {
6986 if (jj_3R_50()) return true;
6987 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6991 final private boolean jj_3_2() {
6992 if (jj_scan_token(COMMA)) return true;
6993 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6994 if (jj_3R_41()) return true;
6995 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6999 final private boolean jj_3R_55() {
7004 if (jj_3R_70()) return true;
7005 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7006 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7010 final private boolean jj_3R_69() {
7011 if (jj_3R_49()) return true;
7012 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7016 final private boolean jj_3R_205() {
7017 if (jj_3R_41()) return true;
7018 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7022 if (jj_3_2()) { jj_scanpos = xsp; break; }
7023 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7028 final private boolean jj_3R_47() {
7029 if (jj_scan_token(LBRACKET)) return true;
7030 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7033 if (jj_3R_55()) jj_scanpos = xsp;
7034 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7035 if (jj_scan_token(RBRACKET)) return true;
7036 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7040 final private boolean jj_3R_129() {
7041 if (jj_scan_token(TRIPLEEQUAL)) return true;
7042 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7046 final private boolean jj_3R_128() {
7047 if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
7048 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7052 final private boolean jj_3R_127() {
7053 if (jj_scan_token(NOT_EQUAL)) return true;
7054 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7058 final private boolean jj_3R_126() {
7059 if (jj_scan_token(DIF)) return true;
7060 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7064 final private boolean jj_3R_105() {
7065 if (jj_scan_token(PRINT)) return true;
7066 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7067 if (jj_3R_49()) return true;
7068 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7072 final private boolean jj_3R_198() {
7073 if (jj_scan_token(LPAREN)) return true;
7074 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7077 if (jj_3R_205()) jj_scanpos = xsp;
7078 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7080 if (jj_3R_206()) jj_scanpos = xsp;
7081 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7082 if (jj_scan_token(RPAREN)) return true;
7083 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7087 final private boolean jj_3R_125() {
7088 if (jj_scan_token(EQUAL_EQUAL)) return true;
7089 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7093 final private boolean jj_3R_54() {
7094 if (jj_3R_68()) return true;
7095 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7099 final private boolean jj_3R_121() {
7110 if (jj_3R_129()) return true;
7111 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7112 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7113 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7114 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7115 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7116 if (jj_3R_120()) return true;
7117 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7121 final private boolean jj_3R_53() {
7122 if (jj_scan_token(IDENTIFIER)) return true;
7123 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7127 final private boolean jj_3R_118() {
7128 if (jj_3R_120()) return true;
7129 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7133 if (jj_3R_121()) { jj_scanpos = xsp; break; }
7134 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7139 final private boolean jj_3R_214() {
7140 if (jj_scan_token(ARRAYASSIGN)) return true;
7141 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7142 if (jj_3R_49()) return true;
7143 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7147 final private boolean jj_3R_52() {
7148 if (jj_scan_token(LBRACE)) return true;
7149 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7150 if (jj_3R_49()) return true;
7151 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7152 if (jj_scan_token(RBRACE)) return true;
7153 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7157 final private boolean jj_3R_41() {
7158 if (jj_3R_49()) return true;
7159 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7162 if (jj_3R_214()) jj_scanpos = xsp;
7163 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7167 final private boolean jj_3R_119() {
7168 if (jj_scan_token(BIT_AND)) return true;
7169 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7170 if (jj_3R_118()) return true;
7171 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7175 final private boolean jj_3R_46() {
7176 if (jj_scan_token(CLASSACCESS)) return true;
7177 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7184 if (jj_3R_54()) return true;
7185 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7186 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7187 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7191 final private boolean jj_3R_40() {
7198 if (jj_3R_48()) return true;
7199 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7200 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7201 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7205 final private boolean jj_3R_114() {
7206 if (jj_3R_118()) return true;
7207 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7211 if (jj_3R_119()) { jj_scanpos = xsp; break; }
7212 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7217 final private boolean jj_3R_115() {
7218 if (jj_scan_token(XOR)) return true;
7219 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7220 if (jj_3R_114()) return true;
7221 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7225 final private boolean jj_3R_210() {
7226 if (jj_3R_116()) return true;
7227 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7231 final private boolean jj_3R_209() {
7232 if (jj_3R_50()) return true;
7233 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7237 final private boolean jj_3R_109() {
7238 if (jj_3R_114()) return true;
7239 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7243 if (jj_3R_115()) { jj_scanpos = xsp; break; }
7244 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7249 final private boolean jj_3R_208() {
7250 if (jj_scan_token(IDENTIFIER)) return true;
7251 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7255 final private boolean jj_3R_203() {
7262 if (jj_3R_210()) return true;
7263 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7264 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7265 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7269 public PHPParserTokenManager token_source;
7270 SimpleCharStream jj_input_stream;
7271 public Token token, jj_nt;
7273 private Token jj_scanpos, jj_lastpos;
7275 public boolean lookingAhead = false;
7276 private boolean jj_semLA;
7278 final private int[] jj_la1 = new int[128];
7279 static private int[] jj_la1_0;
7280 static private int[] jj_la1_1;
7281 static private int[] jj_la1_2;
7282 static private int[] jj_la1_3;
7283 static private int[] jj_la1_4;
7291 private static void jj_la1_0() {
7292 jj_la1_0 = new int[] {0x5800001e,0x6,0x6,0x5800001e,0x0,0x58000000,0x0,0x30000000,0x30000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x40000000,0x40000000,0x8,0x6,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x58000010,0x58000010,0x58000000,0x58000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x58000010,0x58000010,0x0,0x0,0x40000010,0x40000010,0x80000000,0x0,0x40000010,0x80000000,0x0,0x40000010,0x40000010,0x40000010,0x40000010,0x40000010,0x40000000,0x40000000,0x0,0x0,0x0,0x40000000,0x40000000,0x0,0x0,0x0,0x0,};
7294 private static void jj_la1_1() {
7295 jj_la1_1 = new int[] {0xd7541ffe,0x0,0x0,0xd7541ffe,0x0,0xd7541ffe,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc2000002,0x8000,0xc300001a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc300001a,0x18,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc3000002,0xc3000002,0xc3000002,0x0,0xc3000002,0x2,0x0,0x0,0x0,0x1000002,0x4000,0x0,0x0,0x0,0x1000000,0x0,0x0,0xc300001a,0xc300001a,0xc300001a,0xc300001a,0x2000,0xc2000000,0x0,0x0,0xc300001a,0x0,0x0,0x14541fe0,0xd7541ffe,0x0,0x0,0x3c0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffa,0x0,0x0,0x0,0x0,0x1000002,0x0,0x90000,0x90000,0xd7541ffe,0xd7541ffe,0x90000,0xc300001a,0xd7541ffe,0xd7541ffe,0x0,0x1,0xd7541ffe,0x0,0x1,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xd7541ffe,0xc300001a,0xc300001a,0xc300001a,0xd7541ffe,0xd7541ffe,0xc300001a,0x0,0xc300001a,0xc300001a,};
7297 private static void jj_la1_2() {
7298 jj_la1_2 = new int[] {0x27870021,0x0,0x0,0x27870021,0x0,0x27870021,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x0,0x27870000,0x0,0x20000000,0x0,0x20000000,0x20000000,0xff80,0x0,0x27870000,0x20000,0x0,0x0,0x80000,0x200000,0x200000,0x400000,0x400000,0x0,0x40000000,0x80000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0x0,0x6000000,0x6000000,0x18000000,0x18000000,0x27870000,0x27830000,0x27800000,0x1800000,0x20000000,0xff80,0x1800000,0x1800000,0x20000000,0x20000000,0x0,0x0,0x0,0x0,0x0,0xff80,0x0,0x2787ff80,0x2787ff80,0x2787ff80,0x2787ff80,0x0,0x0,0x0,0x0,0x27870000,0x0,0x10000,0x10021,0x27870021,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x27870021,0x27870021,0x27870021,0x27870021,0x0,0x0,0x1800000,0x1800000,0x21800000,0x100000,0x0,0x0,0x27870021,0x27870021,0x0,0x27870000,0x27870021,0x27870021,0x0,0x0,0x27870021,0x0,0x0,0x27970021,0x27870021,0x27870021,0x27870021,0x27870021,0x27870021,0x27970021,0x27870000,0x27870000,0x27870000,0x27870021,0x27970021,0x27870000,0x0,0x27870000,0x27870000,};
7300 private static void jj_la1_3() {
7301 jj_la1_3 = new int[] {0x18011440,0x0,0x0,0x18011440,0x0,0x18011440,0x0,0x0,0x0,0x0,0x10000000,0x0,0x0,0x18000000,0x440,0x440,0x10011440,0x0,0x18011440,0x0,0x0,0x0,0x8000000,0x0,0x0,0x0,0x18011440,0x0,0x0,0x0,0x0,0x10,0x10,0x20,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xe,0x0,0x0,0x1,0x1,0x18011440,0x18011440,0x18011440,0x0,0x18011440,0x0,0x0,0x0,0x0,0x18000000,0x0,0x0,0x0,0x0,0x18000000,0x18000000,0x18000000,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x11440,0x20000,0x10080000,0x18011440,0x0,0x0,0x10000000,0x18011440,0x0,0x0,0x0,0x8000000,0x0,0x8000000,0x0,0x0,0x0,0x0,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x0,0x0,0x0,0x18000000,0x0,0x0,0x0,0x18011440,0x18011440,0x0,0x18011440,0x18011440,0x18011440,0x0,0x0,0x18011440,0x0,0x0,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x18011440,0x0,0x18011440,0x18011440,};
7303 private static void jj_la1_4() {
7304 jj_la1_4 = new int[] {0x8a,0x0,0x0,0x8a,0x80,0x8a,0x0,0x0,0x0,0x100,0x8,0x80000,0x80000,0x8,0x0,0x0,0x0,0x0,0x2,0x100,0x0,0x100,0x0,0x0,0x0,0xfff80000,0x2,0x0,0x0,0xfff80000,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x79000,0x79000,0x6c00,0x6c00,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x0,0x2,0x2,0x2,0x0,0x0,0x8,0x2,0x2,0x2,0x2,0x28,0x0,0x0,0x0,0x2,0x100,0x0,0x88,0x8a,0x0,0x0,0x0,0x0,0x100,0x0,0x80000,0x100,0x100,0x100,0x8a,0x8a,0x8a,0x8a,0x100,0x80000,0x0,0x0,0x0,0x8,0x0,0x0,0x8a,0x8a,0x0,0x2,0x8a,0x8a,0x0,0x0,0x8a,0x0,0x0,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x8a,0x2,0x2,0x2,0x8a,0x8a,0x2,0x100,0x2,0x2,};
7306 final private JJCalls[] jj_2_rtns = new JJCalls[5];
7307 private boolean jj_rescan = false;
7308 private int jj_gc = 0;
7310 public PHPParser(java.io.InputStream stream) {
7311 jj_input_stream = new SimpleCharStream(stream, 1, 1);
7312 token_source = new PHPParserTokenManager(jj_input_stream);
7313 token = new Token();
7316 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7317 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7320 public void ReInit(java.io.InputStream stream) {
7321 jj_input_stream.ReInit(stream, 1, 1);
7322 token_source.ReInit(jj_input_stream);
7323 token = new Token();
7326 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7327 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7330 public PHPParser(java.io.Reader stream) {
7331 jj_input_stream = new SimpleCharStream(stream, 1, 1);
7332 token_source = new PHPParserTokenManager(jj_input_stream);
7333 token = new Token();
7336 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7337 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7340 public void ReInit(java.io.Reader stream) {
7341 jj_input_stream.ReInit(stream, 1, 1);
7342 token_source.ReInit(jj_input_stream);
7343 token = new Token();
7346 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7347 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7350 public PHPParser(PHPParserTokenManager tm) {
7352 token = new Token();
7355 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7356 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7359 public void ReInit(PHPParserTokenManager tm) {
7361 token = new Token();
7364 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7365 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7368 final private Token jj_consume_token(int kind) throws ParseException {
7370 if ((oldToken = token).next != null) token = token.next;
7371 else token = token.next = token_source.getNextToken();
7373 if (token.kind == kind) {
7375 if (++jj_gc > 100) {
7377 for (int i = 0; i < jj_2_rtns.length; i++) {
7378 JJCalls c = jj_2_rtns[i];
7380 if (c.gen < jj_gen) c.first = null;
7389 throw generateParseException();
7392 final private boolean jj_scan_token(int kind) {
7393 if (jj_scanpos == jj_lastpos) {
7395 if (jj_scanpos.next == null) {
7396 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
7398 jj_lastpos = jj_scanpos = jj_scanpos.next;
7401 jj_scanpos = jj_scanpos.next;
7404 int i = 0; Token tok = token;
7405 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
7406 if (tok != null) jj_add_error_token(kind, i);
7408 return (jj_scanpos.kind != kind);
7411 final public Token getNextToken() {
7412 if (token.next != null) token = token.next;
7413 else token = token.next = token_source.getNextToken();
7419 final public Token getToken(int index) {
7420 Token t = lookingAhead ? jj_scanpos : token;
7421 for (int i = 0; i < index; i++) {
7422 if (t.next != null) t = t.next;
7423 else t = t.next = token_source.getNextToken();
7428 final private int jj_ntk() {
7429 if ((jj_nt=token.next) == null)
7430 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
7432 return (jj_ntk = jj_nt.kind);
7435 private java.util.Vector jj_expentries = new java.util.Vector();
7436 private int[] jj_expentry;
7437 private int jj_kind = -1;
7438 private int[] jj_lasttokens = new int[100];
7439 private int jj_endpos;
7441 private void jj_add_error_token(int kind, int pos) {
7442 if (pos >= 100) return;
7443 if (pos == jj_endpos + 1) {
7444 jj_lasttokens[jj_endpos++] = kind;
7445 } else if (jj_endpos != 0) {
7446 jj_expentry = new int[jj_endpos];
7447 for (int i = 0; i < jj_endpos; i++) {
7448 jj_expentry[i] = jj_lasttokens[i];
7450 boolean exists = false;
7451 for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
7452 int[] oldentry = (int[])(enum.nextElement());
7453 if (oldentry.length == jj_expentry.length) {
7455 for (int i = 0; i < jj_expentry.length; i++) {
7456 if (oldentry[i] != jj_expentry[i]) {
7464 if (!exists) jj_expentries.addElement(jj_expentry);
7465 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
7469 public ParseException generateParseException() {
7470 jj_expentries.removeAllElements();
7471 boolean[] la1tokens = new boolean[160];
7472 for (int i = 0; i < 160; i++) {
7473 la1tokens[i] = false;
7476 la1tokens[jj_kind] = true;
7479 for (int i = 0; i < 128; i++) {
7480 if (jj_la1[i] == jj_gen) {
7481 for (int j = 0; j < 32; j++) {
7482 if ((jj_la1_0[i] & (1<<j)) != 0) {
7483 la1tokens[j] = true;
7485 if ((jj_la1_1[i] & (1<<j)) != 0) {
7486 la1tokens[32+j] = true;
7488 if ((jj_la1_2[i] & (1<<j)) != 0) {
7489 la1tokens[64+j] = true;
7491 if ((jj_la1_3[i] & (1<<j)) != 0) {
7492 la1tokens[96+j] = true;
7494 if ((jj_la1_4[i] & (1<<j)) != 0) {
7495 la1tokens[128+j] = true;
7500 for (int i = 0; i < 160; i++) {
7502 jj_expentry = new int[1];
7504 jj_expentries.addElement(jj_expentry);
7509 jj_add_error_token(0, 0);
7510 int[][] exptokseq = new int[jj_expentries.size()][];
7511 for (int i = 0; i < jj_expentries.size(); i++) {
7512 exptokseq[i] = (int[])jj_expentries.elementAt(i);
7514 return new ParseException(token, exptokseq, tokenImage);
7517 final public void enable_tracing() {
7520 final public void disable_tracing() {
7523 final private void jj_rescan_token() {
7525 for (int i = 0; i < 5; i++) {
7526 JJCalls p = jj_2_rtns[i];
7528 if (p.gen > jj_gen) {
7529 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
7531 case 0: jj_3_1(); break;
7532 case 1: jj_3_2(); break;
7533 case 2: jj_3_3(); break;
7534 case 3: jj_3_4(); break;
7535 case 4: jj_3_5(); break;
7539 } while (p != null);
7544 final private void jj_save(int index, int xla) {
7545 JJCalls p = jj_2_rtns[index];
7546 while (p.gen > jj_gen) {
7547 if (p.next == null) { p = p.next = new JJCalls(); break; }
7550 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
7553 static final class JJCalls {