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 {
903 AbstractVariable var;
913 var = VariableSuffix(var);
915 {if (true) return var;}
916 } catch (ParseException e) {
917 errorMessage = "'$' expected for variable identifier";
919 errorStart = e.currentToken.sourceStart;
920 errorEnd = e.currentToken.sourceEnd;
923 throw new Error("Missing return statement in function");
926 final public Variable Variable() throws ParseException {
927 Variable variable = null;
929 token = jj_consume_token(DOLLAR);
931 {if (true) return variable;}
932 throw new Error("Missing return statement in function");
935 final public Variable Var() throws ParseException {
936 Variable variable = null;
937 final Token token,token2;
938 ConstantIdentifier constant;
939 Expression expression;
940 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
942 token = jj_consume_token(DOLLAR);
944 {if (true) return new Variable(variable,variable.sourceStart,variable.sourceEnd);}
947 token = jj_consume_token(LBRACE);
948 expression = Expression();
949 token2 = jj_consume_token(RBRACE);
950 {if (true) return new Variable(expression,
955 token = jj_consume_token(IDENTIFIER);
956 outlineInfo.addVariable('$' + token.image);
957 {if (true) return new Variable(token.image,token.sourceStart,token.sourceEnd);}
961 jj_consume_token(-1);
962 throw new ParseException();
964 throw new Error("Missing return statement in function");
967 final public Expression VariableInitializer() throws ParseException {
968 final Expression expr;
969 final Token token, token2;
970 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
974 case INTEGER_LITERAL:
975 case FLOATING_POINT_LITERAL:
979 {if (true) return expr;}
982 token2 = jj_consume_token(MINUS);
983 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
984 case INTEGER_LITERAL:
985 token = jj_consume_token(INTEGER_LITERAL);
987 case FLOATING_POINT_LITERAL:
988 token = jj_consume_token(FLOATING_POINT_LITERAL);
992 jj_consume_token(-1);
993 throw new ParseException();
995 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
997 token2.sourceStart);}
1000 token2 = jj_consume_token(PLUS);
1001 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1002 case INTEGER_LITERAL:
1003 token = jj_consume_token(INTEGER_LITERAL);
1005 case FLOATING_POINT_LITERAL:
1006 token = jj_consume_token(FLOATING_POINT_LITERAL);
1009 jj_la1[15] = jj_gen;
1010 jj_consume_token(-1);
1011 throw new ParseException();
1013 {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token),
1015 token2.sourceStart);}
1018 expr = ArrayDeclarator();
1019 {if (true) return expr;}
1022 token = jj_consume_token(IDENTIFIER);
1023 {if (true) return new ConstantIdentifier(token);}
1026 jj_la1[16] = jj_gen;
1027 jj_consume_token(-1);
1028 throw new ParseException();
1030 throw new Error("Missing return statement in function");
1033 final public ArrayVariableDeclaration ArrayVariable() throws ParseException {
1034 final Expression expr,expr2;
1035 expr = Expression();
1036 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1038 jj_consume_token(ARRAYASSIGN);
1039 expr2 = Expression();
1040 {if (true) return new ArrayVariableDeclaration(expr,expr2);}
1043 jj_la1[17] = jj_gen;
1046 {if (true) return new ArrayVariableDeclaration(expr,jj_input_stream.getPosition());}
1047 throw new Error("Missing return statement in function");
1050 final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException {
1051 ArrayVariableDeclaration expr;
1052 final ArrayList list = new ArrayList();
1053 jj_consume_token(LPAREN);
1054 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1070 case INTEGER_LITERAL:
1071 case FLOATING_POINT_LITERAL:
1072 case STRING_LITERAL:
1077 expr = ArrayVariable();
1086 jj_consume_token(COMMA);
1087 expr = ArrayVariable();
1092 jj_la1[18] = jj_gen;
1095 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1097 jj_consume_token(COMMA);
1101 jj_la1[19] = jj_gen;
1104 jj_consume_token(RPAREN);
1105 final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()];
1107 {if (true) return vars;}
1108 throw new Error("Missing return statement in function");
1112 * A Method Declaration.
1113 * <b>function</b> MetodDeclarator() Block()
1115 final public MethodDeclaration MethodDeclaration() throws ParseException {
1116 final MethodDeclaration functionDeclaration;
1118 final OutlineableWithChildren seg = currentSegment;
1120 token = jj_consume_token(FUNCTION);
1122 functionDeclaration = MethodDeclarator(token.sourceStart);
1123 outlineInfo.addVariable(functionDeclaration.name);
1124 } catch (ParseException e) {
1125 if (errorMessage != null) {if (true) throw e;}
1126 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1128 errorStart = e.currentToken.sourceStart;
1129 errorEnd = e.currentToken.sourceEnd;
1130 {if (true) throw e;}
1132 currentSegment = functionDeclaration;
1134 functionDeclaration.statements = block.statements;
1135 currentSegment = seg;
1136 {if (true) return functionDeclaration;}
1137 throw new Error("Missing return statement in function");
1141 * A MethodDeclarator.
1142 * [&] IDENTIFIER(parameters ...).
1143 * @return a function description for the outline
1145 final public MethodDeclaration MethodDeclarator(final int start) throws ParseException {
1146 Token identifier = null;
1147 Token reference = null;
1148 final ArrayList formalParameters = new ArrayList();
1149 String identifierChar = SYNTAX_ERROR_CHAR;
1151 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1153 reference = jj_consume_token(BIT_AND);
1154 end = reference.sourceEnd;
1157 jj_la1[20] = jj_gen;
1161 identifier = jj_consume_token(IDENTIFIER);
1162 identifierChar = identifier.image;
1163 end = identifier.sourceEnd;
1164 } catch (ParseException e) {
1165 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected";
1167 errorStart = e.currentToken.sourceEnd;
1168 errorEnd = e.currentToken.next.sourceStart;
1169 processParseExceptionDebug(e);
1171 end = FormalParameters(formalParameters);
1172 int nameStart, nameEnd;
1173 if (identifier == null) {
1174 if (reference == null) {
1175 nameStart = start + 9;
1176 nameEnd = start + 10;
1178 nameStart = reference.sourceEnd + 1;
1179 nameEnd = reference.sourceEnd + 2;
1182 nameStart = identifier.sourceStart;
1183 nameEnd = identifier.sourceEnd;
1185 {if (true) return new MethodDeclaration(currentSegment,
1193 throw new Error("Missing return statement in function");
1197 * FormalParameters follows method identifier.
1198 * (FormalParameter())
1200 final public int FormalParameters(final ArrayList parameters) throws ParseException {
1201 VariableDeclaration var;
1203 Token tok = this.token;
1204 int end = tok.sourceEnd;
1206 tok = jj_consume_token(LPAREN);
1207 end = tok.sourceEnd;
1208 } catch (ParseException e) {
1209 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier";
1211 errorStart = e.currentToken.next.sourceStart;
1212 errorEnd = e.currentToken.next.sourceEnd;
1213 processParseExceptionDebug(e);
1215 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1218 var = FormalParameter();
1219 parameters.add(var);end = var.sourceEnd;
1222 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1227 jj_la1[21] = jj_gen;
1230 jj_consume_token(COMMA);
1231 var = FormalParameter();
1232 parameters.add(var);end = var.sourceEnd;
1236 jj_la1[22] = jj_gen;
1240 token = jj_consume_token(RPAREN);
1241 end = token.sourceEnd;
1242 } catch (ParseException e) {
1243 errorMessage = "')' expected";
1245 errorStart = e.currentToken.next.sourceStart;
1246 errorEnd = e.currentToken.next.sourceEnd;
1247 processParseExceptionDebug(e);
1249 {if (true) return end;}
1250 throw new Error("Missing return statement in function");
1254 * A formal parameter.
1255 * $varname[=value] (,$varname[=value])
1257 final public VariableDeclaration FormalParameter() throws ParseException {
1258 final VariableDeclaration variableDeclaration;
1260 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1262 token = jj_consume_token(BIT_AND);
1265 jj_la1[23] = jj_gen;
1268 variableDeclaration = VariableDeclaratorNoSuffix();
1269 outlineInfo.addVariable('$'+variableDeclaration.name());
1270 if (token != null) {
1271 variableDeclaration.setReference(true);
1273 {if (true) return variableDeclaration;}
1274 throw new Error("Missing return statement in function");
1277 final public ConstantIdentifier Type() throws ParseException {
1279 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1281 token = jj_consume_token(STRING);
1282 {if (true) return new ConstantIdentifier(token);}
1285 token = jj_consume_token(BOOL);
1286 {if (true) return new ConstantIdentifier(token);}
1289 token = jj_consume_token(BOOLEAN);
1290 {if (true) return new ConstantIdentifier(token);}
1293 token = jj_consume_token(REAL);
1294 {if (true) return new ConstantIdentifier(token);}
1297 token = jj_consume_token(DOUBLE);
1298 {if (true) return new ConstantIdentifier(token);}
1301 token = jj_consume_token(FLOAT);
1302 {if (true) return new ConstantIdentifier(token);}
1305 token = jj_consume_token(INT);
1306 {if (true) return new ConstantIdentifier(token);}
1309 token = jj_consume_token(INTEGER);
1310 {if (true) return new ConstantIdentifier(token);}
1313 token = jj_consume_token(OBJECT);
1314 {if (true) return new ConstantIdentifier(token);}
1317 jj_la1[24] = jj_gen;
1318 jj_consume_token(-1);
1319 throw new ParseException();
1321 throw new Error("Missing return statement in function");
1324 final public Expression Expression() throws ParseException {
1325 final Expression expr;
1326 Expression initializer = null;
1327 int assignOperator = -1;
1328 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1342 case INTEGER_LITERAL:
1343 case FLOATING_POINT_LITERAL:
1344 case STRING_LITERAL:
1349 expr = ConditionalExpression();
1350 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1363 case RSIGNEDSHIFTASSIGN:
1364 assignOperator = AssignmentOperator();
1366 initializer = Expression();
1367 } catch (ParseException e) {
1368 if (errorMessage != null) {
1369 {if (true) throw e;}
1371 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1373 errorEnd = jj_input_stream.getPosition();
1374 {if (true) throw e;}
1378 jj_la1[25] = jj_gen;
1381 if (assignOperator != -1) {// todo : change this, very very bad :(
1382 if (expr instanceof AbstractVariable) {
1383 {if (true) return new VariableDeclaration(currentSegment,
1384 (AbstractVariable) expr,
1387 initializer.sourceEnd);}
1389 String varName = expr.toStringExpression().substring(1);
1390 {if (true) return new VariableDeclaration(currentSegment,
1391 new Variable(varName,
1395 initializer.sourceEnd);}
1397 {if (true) return expr;}
1401 expr = ExpressionWBang();
1402 {if (true) return expr;}
1405 jj_la1[26] = jj_gen;
1406 jj_consume_token(-1);
1407 throw new ParseException();
1409 throw new Error("Missing return statement in function");
1412 final public Expression ExpressionWBang() throws ParseException {
1413 final Expression expr;
1415 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1417 token = jj_consume_token(BANG);
1418 expr = ExpressionWBang();
1419 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
1423 expr = ExpressionNoBang();
1424 {if (true) return expr;}
1427 jj_la1[27] = jj_gen;
1428 jj_consume_token(-1);
1429 throw new ParseException();
1431 throw new Error("Missing return statement in function");
1434 final public Expression ExpressionNoBang() throws ParseException {
1436 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1438 expr = ListExpression();
1439 {if (true) return expr;}
1442 expr = PrintExpression();
1443 {if (true) return expr;}
1446 jj_la1[28] = jj_gen;
1447 jj_consume_token(-1);
1448 throw new ParseException();
1450 throw new Error("Missing return statement in function");
1454 * Any assignement operator.
1455 * @return the assignement operator id
1457 final public int AssignmentOperator() throws ParseException {
1458 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1460 jj_consume_token(ASSIGN);
1461 {if (true) return VariableDeclaration.EQUAL;}
1464 jj_consume_token(STARASSIGN);
1465 {if (true) return VariableDeclaration.STAR_EQUAL;}
1468 jj_consume_token(SLASHASSIGN);
1469 {if (true) return VariableDeclaration.SLASH_EQUAL;}
1472 jj_consume_token(REMASSIGN);
1473 {if (true) return VariableDeclaration.REM_EQUAL;}
1476 jj_consume_token(PLUSASSIGN);
1477 {if (true) return VariableDeclaration.PLUS_EQUAL;}
1480 jj_consume_token(MINUSASSIGN);
1481 {if (true) return VariableDeclaration.MINUS_EQUAL;}
1484 jj_consume_token(LSHIFTASSIGN);
1485 {if (true) return VariableDeclaration.LSHIFT_EQUAL;}
1487 case RSIGNEDSHIFTASSIGN:
1488 jj_consume_token(RSIGNEDSHIFTASSIGN);
1489 {if (true) return VariableDeclaration.RSIGNEDSHIFT_EQUAL;}
1492 jj_consume_token(ANDASSIGN);
1493 {if (true) return VariableDeclaration.AND_EQUAL;}
1496 jj_consume_token(XORASSIGN);
1497 {if (true) return VariableDeclaration.XOR_EQUAL;}
1500 jj_consume_token(ORASSIGN);
1501 {if (true) return VariableDeclaration.OR_EQUAL;}
1504 jj_consume_token(DOTASSIGN);
1505 {if (true) return VariableDeclaration.DOT_EQUAL;}
1508 jj_consume_token(TILDEEQUAL);
1509 {if (true) return VariableDeclaration.TILDE_EQUAL;}
1512 jj_la1[29] = jj_gen;
1513 jj_consume_token(-1);
1514 throw new ParseException();
1516 throw new Error("Missing return statement in function");
1519 final public Expression ConditionalExpression() throws ParseException {
1520 final Expression expr;
1521 Expression expr2 = null;
1522 Expression expr3 = null;
1523 expr = ConditionalOrExpression();
1524 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1526 jj_consume_token(HOOK);
1527 expr2 = Expression();
1528 jj_consume_token(COLON);
1529 expr3 = ConditionalExpression();
1532 jj_la1[30] = jj_gen;
1535 if (expr3 == null) {
1536 {if (true) return expr;}
1538 {if (true) return new ConditionalExpression(expr,expr2,expr3);}
1539 throw new Error("Missing return statement in function");
1542 final public Expression ConditionalOrExpression() throws ParseException {
1543 Expression expr,expr2;
1545 expr = ConditionalAndExpression();
1548 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1554 jj_la1[31] = jj_gen;
1557 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1559 jj_consume_token(OR_OR);
1560 operator = OperatorIds.OR_OR;
1563 jj_consume_token(_ORL);
1564 operator = OperatorIds.ORL;
1567 jj_la1[32] = jj_gen;
1568 jj_consume_token(-1);
1569 throw new ParseException();
1571 expr2 = ConditionalAndExpression();
1572 expr = new BinaryExpression(expr,expr2,operator);
1574 {if (true) return expr;}
1575 throw new Error("Missing return statement in function");
1578 final public Expression ConditionalAndExpression() throws ParseException {
1579 Expression expr,expr2;
1581 expr = ConcatExpression();
1584 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1590 jj_la1[33] = jj_gen;
1593 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1595 jj_consume_token(AND_AND);
1596 operator = OperatorIds.AND_AND;
1599 jj_consume_token(_ANDL);
1600 operator = OperatorIds.ANDL;
1603 jj_la1[34] = jj_gen;
1604 jj_consume_token(-1);
1605 throw new ParseException();
1607 expr2 = ConcatExpression();
1608 expr = new BinaryExpression(expr,expr2,operator);
1610 {if (true) return expr;}
1611 throw new Error("Missing return statement in function");
1614 final public Expression ConcatExpression() throws ParseException {
1615 Expression expr,expr2;
1616 expr = InclusiveOrExpression();
1619 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1624 jj_la1[35] = jj_gen;
1627 jj_consume_token(DOT);
1628 expr2 = InclusiveOrExpression();
1629 expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);
1631 {if (true) return expr;}
1632 throw new Error("Missing return statement in function");
1635 final public Expression InclusiveOrExpression() throws ParseException {
1636 Expression expr,expr2;
1637 expr = ExclusiveOrExpression();
1640 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1645 jj_la1[36] = jj_gen;
1648 jj_consume_token(BIT_OR);
1649 expr2 = ExclusiveOrExpression();
1650 expr = new BinaryExpression(expr,expr2,OperatorIds.OR);
1652 {if (true) return expr;}
1653 throw new Error("Missing return statement in function");
1656 final public Expression ExclusiveOrExpression() throws ParseException {
1657 Expression expr,expr2;
1658 expr = AndExpression();
1661 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1666 jj_la1[37] = jj_gen;
1669 jj_consume_token(XOR);
1670 expr2 = AndExpression();
1671 expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);
1673 {if (true) return expr;}
1674 throw new Error("Missing return statement in function");
1677 final public Expression AndExpression() throws ParseException {
1678 Expression expr,expr2;
1679 expr = EqualityExpression();
1682 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1687 jj_la1[38] = jj_gen;
1690 jj_consume_token(BIT_AND);
1691 expr2 = EqualityExpression();
1692 expr = new BinaryExpression(expr,expr2,OperatorIds.AND);
1694 {if (true) return expr;}
1695 throw new Error("Missing return statement in function");
1698 final public Expression EqualityExpression() throws ParseException {
1699 Expression expr,expr2;
1702 expr = RelationalExpression();
1705 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1709 case BANGDOUBLEEQUAL:
1714 jj_la1[39] = jj_gen;
1717 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1719 token = jj_consume_token(EQUAL_EQUAL);
1720 operator = OperatorIds.EQUAL_EQUAL;
1723 token = jj_consume_token(DIF);
1724 operator = OperatorIds.DIF;
1727 token = jj_consume_token(NOT_EQUAL);
1728 operator = OperatorIds.DIF;
1730 case BANGDOUBLEEQUAL:
1731 token = jj_consume_token(BANGDOUBLEEQUAL);
1732 operator = OperatorIds.BANG_EQUAL_EQUAL;
1735 token = jj_consume_token(TRIPLEEQUAL);
1736 operator = OperatorIds.EQUAL_EQUAL_EQUAL;
1739 jj_la1[40] = jj_gen;
1740 jj_consume_token(-1);
1741 throw new ParseException();
1744 expr2 = RelationalExpression();
1745 } catch (ParseException e) {
1746 if (errorMessage != null) {
1747 {if (true) throw e;}
1749 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
1751 errorStart = token.sourceEnd +1;
1752 errorEnd = token.sourceEnd +1;
1753 expr2 = new ConstantIdentifier(SYNTAX_ERROR_CHAR,token.sourceEnd +1,token.sourceEnd +1);
1754 processParseExceptionDebug(e);
1756 expr = new BinaryExpression(expr,expr2,operator);
1758 {if (true) return expr;}
1759 throw new Error("Missing return statement in function");
1762 final public Expression RelationalExpression() throws ParseException {
1763 Expression expr,expr2;
1765 expr = ShiftExpression();
1768 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1776 jj_la1[41] = jj_gen;
1779 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1781 jj_consume_token(LT);
1782 operator = OperatorIds.LESS;
1785 jj_consume_token(GT);
1786 operator = OperatorIds.GREATER;
1789 jj_consume_token(LE);
1790 operator = OperatorIds.LESS_EQUAL;
1793 jj_consume_token(GE);
1794 operator = OperatorIds.GREATER_EQUAL;
1797 jj_la1[42] = jj_gen;
1798 jj_consume_token(-1);
1799 throw new ParseException();
1801 expr2 = ShiftExpression();
1802 expr = new BinaryExpression(expr,expr2,operator);
1804 {if (true) return expr;}
1805 throw new Error("Missing return statement in function");
1808 final public Expression ShiftExpression() throws ParseException {
1809 Expression expr,expr2;
1811 expr = AdditiveExpression();
1814 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1817 case RUNSIGNEDSHIFT:
1821 jj_la1[43] = jj_gen;
1824 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1826 jj_consume_token(LSHIFT);
1827 operator = OperatorIds.LEFT_SHIFT;
1830 jj_consume_token(RSIGNEDSHIFT);
1831 operator = OperatorIds.RIGHT_SHIFT;
1833 case RUNSIGNEDSHIFT:
1834 jj_consume_token(RUNSIGNEDSHIFT);
1835 operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;
1838 jj_la1[44] = jj_gen;
1839 jj_consume_token(-1);
1840 throw new ParseException();
1842 expr2 = AdditiveExpression();
1843 expr = new BinaryExpression(expr,expr2,operator);
1845 {if (true) return expr;}
1846 throw new Error("Missing return statement in function");
1849 final public Expression AdditiveExpression() throws ParseException {
1850 Expression expr,expr2;
1852 expr = MultiplicativeExpression();
1855 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1861 jj_la1[45] = jj_gen;
1864 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1866 jj_consume_token(PLUS);
1867 operator = OperatorIds.PLUS;
1870 jj_consume_token(MINUS);
1871 operator = OperatorIds.MINUS;
1874 jj_la1[46] = jj_gen;
1875 jj_consume_token(-1);
1876 throw new ParseException();
1878 expr2 = MultiplicativeExpression();
1879 expr = new BinaryExpression(expr,expr2,operator);
1881 {if (true) return expr;}
1882 throw new Error("Missing return statement in function");
1885 final public Expression MultiplicativeExpression() throws ParseException {
1886 Expression expr,expr2;
1889 expr = UnaryExpression();
1890 } catch (ParseException e) {
1891 if (errorMessage != null) {if (true) throw e;}
1892 errorMessage = "unexpected token '"+e.currentToken.next.image+'\'';
1894 errorStart = this.token.sourceStart;
1895 errorEnd = this.token.sourceEnd;
1896 {if (true) throw e;}
1900 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1907 jj_la1[47] = jj_gen;
1910 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1912 jj_consume_token(STAR);
1913 operator = OperatorIds.MULTIPLY;
1916 jj_consume_token(SLASH);
1917 operator = OperatorIds.DIVIDE;
1920 jj_consume_token(REMAINDER);
1921 operator = OperatorIds.REMAINDER;
1924 jj_la1[48] = jj_gen;
1925 jj_consume_token(-1);
1926 throw new ParseException();
1928 expr2 = UnaryExpression();
1929 expr = new BinaryExpression(expr,expr2,operator);
1931 {if (true) return expr;}
1932 throw new Error("Missing return statement in function");
1936 * An unary expression starting with @, & or nothing
1938 final public Expression UnaryExpression() throws ParseException {
1939 final Expression expr;
1940 /* <BIT_AND> expr = UnaryExpressionNoPrefix() //why did I had that ?
1941 {return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);}
1943 expr = AtNotTildeUnaryExpression();
1944 {if (true) return expr;}
1945 throw new Error("Missing return statement in function");
1948 final public Expression AtNotTildeUnaryExpression() throws ParseException {
1949 final Expression expr;
1951 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
1953 token = jj_consume_token(AT);
1954 expr = AtNotTildeUnaryExpression();
1955 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
1958 token = jj_consume_token(TILDE);
1959 expr = AtNotTildeUnaryExpression();
1960 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.TWIDDLE,token.sourceStart);}
1963 token = jj_consume_token(BANG);
1964 expr = AtNotUnaryExpression();
1965 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
1977 case INTEGER_LITERAL:
1978 case FLOATING_POINT_LITERAL:
1979 case STRING_LITERAL:
1984 expr = UnaryExpressionNoPrefix();
1985 {if (true) return expr;}
1988 jj_la1[49] = jj_gen;
1989 jj_consume_token(-1);
1990 throw new ParseException();
1992 throw new Error("Missing return statement in function");
1996 * An expression prefixed (or not) by one or more @ and !.
1997 * @return the expression
1999 final public Expression AtNotUnaryExpression() throws ParseException {
2000 final Expression expr;
2002 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2004 token = jj_consume_token(AT);
2005 expr = AtNotUnaryExpression();
2006 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,token.sourceStart);}
2009 token = jj_consume_token(BANG);
2010 expr = AtNotUnaryExpression();
2011 {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,token.sourceStart);}
2023 case INTEGER_LITERAL:
2024 case FLOATING_POINT_LITERAL:
2025 case STRING_LITERAL:
2030 expr = UnaryExpressionNoPrefix();
2031 {if (true) return expr;}
2034 jj_la1[50] = jj_gen;
2035 jj_consume_token(-1);
2036 throw new ParseException();
2038 throw new Error("Missing return statement in function");
2041 final public Expression UnaryExpressionNoPrefix() throws ParseException {
2042 final Expression expr;
2044 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2046 token = jj_consume_token(PLUS);
2047 expr = AtNotTildeUnaryExpression();
2048 {if (true) return new PrefixedUnaryExpression(expr,
2050 token.sourceStart);}
2053 token = jj_consume_token(MINUS);
2054 expr = AtNotTildeUnaryExpression();
2055 {if (true) return new PrefixedUnaryExpression(expr,
2057 token.sourceStart);}
2061 expr = PreIncDecExpression();
2062 {if (true) return expr;}
2070 case INTEGER_LITERAL:
2071 case FLOATING_POINT_LITERAL:
2072 case STRING_LITERAL:
2077 expr = UnaryExpressionNotPlusMinus();
2078 {if (true) return expr;}
2081 jj_la1[51] = jj_gen;
2082 jj_consume_token(-1);
2083 throw new ParseException();
2085 throw new Error("Missing return statement in function");
2088 final public Expression PreIncDecExpression() throws ParseException {
2089 final Expression expr;
2092 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2094 token = jj_consume_token(PLUS_PLUS);
2095 operator = OperatorIds.PLUS_PLUS;
2098 token = jj_consume_token(MINUS_MINUS);
2099 operator = OperatorIds.MINUS_MINUS;
2102 jj_la1[52] = jj_gen;
2103 jj_consume_token(-1);
2104 throw new ParseException();
2106 expr = PrimaryExpression();
2107 {if (true) return new PrefixedUnaryExpression(expr,operator,token.sourceStart);}
2108 throw new Error("Missing return statement in function");
2111 final public Expression UnaryExpressionNotPlusMinus() throws ParseException {
2112 final Expression expr;
2113 if (jj_2_3(2147483647)) {
2114 expr = CastExpression();
2115 {if (true) return expr;}
2117 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2123 expr = PostfixExpression();
2124 {if (true) return expr;}
2129 case INTEGER_LITERAL:
2130 case FLOATING_POINT_LITERAL:
2131 case STRING_LITERAL:
2134 {if (true) return expr;}
2137 jj_consume_token(LPAREN);
2138 expr = Expression();
2140 jj_consume_token(RPAREN);
2141 } catch (ParseException e) {
2142 errorMessage = "')' expected";
2144 errorStart = expr.sourceEnd +1;
2145 errorEnd = expr.sourceEnd +1;
2146 processParseExceptionDebug(e);
2148 {if (true) return expr;}
2151 jj_la1[53] = jj_gen;
2152 jj_consume_token(-1);
2153 throw new ParseException();
2156 throw new Error("Missing return statement in function");
2159 final public CastExpression CastExpression() throws ParseException {
2160 final ConstantIdentifier type;
2161 final Expression expr;
2162 final Token token,token1;
2163 token1 = jj_consume_token(LPAREN);
2164 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2177 token = jj_consume_token(ARRAY);
2178 type = new ConstantIdentifier(token);
2181 jj_la1[54] = jj_gen;
2182 jj_consume_token(-1);
2183 throw new ParseException();
2185 jj_consume_token(RPAREN);
2186 expr = UnaryExpression();
2187 {if (true) return new CastExpression(type,expr,token1.sourceStart,expr.sourceEnd);}
2188 throw new Error("Missing return statement in function");
2191 final public Expression PostfixExpression() throws ParseException {
2192 final Expression expr;
2195 expr = PrimaryExpression();
2196 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2199 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2201 token = jj_consume_token(PLUS_PLUS);
2202 operator = OperatorIds.PLUS_PLUS;
2205 token = jj_consume_token(MINUS_MINUS);
2206 operator = OperatorIds.MINUS_MINUS;
2209 jj_la1[55] = jj_gen;
2210 jj_consume_token(-1);
2211 throw new ParseException();
2215 jj_la1[56] = jj_gen;
2218 if (operator == -1) {
2219 {if (true) return expr;}
2221 {if (true) return new PostfixedUnaryExpression(expr,operator,token.sourceEnd);}
2222 throw new Error("Missing return statement in function");
2225 final public Expression PrimaryExpression() throws ParseException {
2228 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2233 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2235 token = jj_consume_token(BIT_AND);
2238 jj_la1[57] = jj_gen;
2241 expr = refPrimaryExpression(token);
2242 {if (true) return expr;}
2245 expr = ArrayDeclarator();
2246 {if (true) return expr;}
2249 jj_la1[58] = jj_gen;
2250 jj_consume_token(-1);
2251 throw new ParseException();
2253 throw new Error("Missing return statement in function");
2256 final public Expression refPrimaryExpression(final Token reference) throws ParseException {
2258 Expression expr2 = null;
2259 final Token identifier;
2260 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2262 identifier = jj_consume_token(IDENTIFIER);
2263 expr = new ConstantIdentifier(identifier);
2266 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2267 case STATICCLASSACCESS:
2271 jj_la1[59] = jj_gen;
2274 jj_consume_token(STATICCLASSACCESS);
2275 expr2 = ClassIdentifier();
2276 expr = new ClassAccess(expr,
2278 ClassAccess.STATIC);
2280 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2282 expr2 = Arguments(expr);
2285 jj_la1[60] = jj_gen;
2288 if (expr2 == null) {
2289 if (reference != null) {
2290 ParseException e = generateParseException();
2291 errorMessage = "you cannot use a constant by reference";
2293 errorStart = reference.sourceStart;
2294 errorEnd = reference.sourceEnd;
2295 processParseExceptionDebug(e);
2297 {if (true) return expr;}
2299 {if (true) return expr2;}
2302 expr = VariableDeclaratorId();
2303 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2305 expr = Arguments(expr);
2308 jj_la1[61] = jj_gen;
2311 {if (true) return expr;}
2314 token = jj_consume_token(NEW);
2315 expr = ClassIdentifier();
2317 if (reference == null) {
2318 start = token.sourceStart;
2320 start = reference.sourceStart;
2322 expr = new ClassInstantiation(expr,
2325 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2327 expr = Arguments(expr);
2330 jj_la1[62] = jj_gen;
2333 {if (true) return expr;}
2336 jj_la1[63] = jj_gen;
2337 jj_consume_token(-1);
2338 throw new ParseException();
2340 throw new Error("Missing return statement in function");
2344 * An array declarator.
2348 final public ArrayInitializer ArrayDeclarator() throws ParseException {
2349 final ArrayVariableDeclaration[] vars;
2351 token = jj_consume_token(ARRAY);
2352 vars = ArrayInitializer();
2353 {if (true) return new ArrayInitializer(vars,
2355 this.token.sourceEnd);}
2356 throw new Error("Missing return statement in function");
2359 final public Expression ClassIdentifier() throws ParseException {
2360 final Expression expr;
2362 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2364 token = jj_consume_token(IDENTIFIER);
2365 {if (true) return new ConstantIdentifier(token);}
2377 {if (true) return expr;}
2380 expr = VariableDeclaratorId();
2381 {if (true) return expr;}
2384 jj_la1[64] = jj_gen;
2385 jj_consume_token(-1);
2386 throw new ParseException();
2388 throw new Error("Missing return statement in function");
2392 * Used by Variabledeclaratorid and primarysuffix
2394 final public AbstractVariable VariableSuffix(final AbstractVariable prefix) throws ParseException {
2395 Expression expression = null;
2396 final Token classAccessToken,lbrace,rbrace;
2399 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2401 classAccessToken = jj_consume_token(CLASSACCESS);
2403 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2405 lbrace = jj_consume_token(LBRACE);
2406 expression = Expression();
2407 rbrace = jj_consume_token(RBRACE);
2408 expression = new Variable(expression,
2413 token = jj_consume_token(IDENTIFIER);
2414 expression = new ConstantIdentifier(token.image,token.sourceStart,token.sourceEnd);
2417 expression = Variable();
2420 jj_la1[65] = jj_gen;
2421 jj_consume_token(-1);
2422 throw new ParseException();
2424 } catch (ParseException e) {
2425 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected";
2427 errorStart = classAccessToken.sourceEnd +1;
2428 errorEnd = classAccessToken.sourceEnd +1;
2429 processParseExceptionDebug(e);
2431 {if (true) return new ClassAccess(prefix,
2433 ClassAccess.NORMAL);}
2436 token = jj_consume_token(LBRACKET);
2437 pos = token.sourceEnd+1;
2438 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2463 case INTEGER_LITERAL:
2464 case FLOATING_POINT_LITERAL:
2465 case STRING_LITERAL:
2470 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2486 case INTEGER_LITERAL:
2487 case FLOATING_POINT_LITERAL:
2488 case STRING_LITERAL:
2493 expression = Expression();
2494 pos = expression.sourceEnd+1;
2505 expression = Type();
2506 pos = expression.sourceEnd+1;
2509 jj_la1[66] = jj_gen;
2510 jj_consume_token(-1);
2511 throw new ParseException();
2515 jj_la1[67] = jj_gen;
2519 token = jj_consume_token(RBRACKET);
2520 pos = token.sourceEnd;
2521 } catch (ParseException e) {
2522 errorMessage = "']' expected";
2526 processParseExceptionDebug(e);
2528 {if (true) return new ArrayDeclarator(prefix,expression,pos);}
2531 token = jj_consume_token(LBRACE);
2532 pos = token.sourceEnd+1;
2533 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2558 case INTEGER_LITERAL:
2559 case FLOATING_POINT_LITERAL:
2560 case STRING_LITERAL:
2565 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2581 case INTEGER_LITERAL:
2582 case FLOATING_POINT_LITERAL:
2583 case STRING_LITERAL:
2588 expression = Expression();
2589 pos = expression.sourceEnd+1;
2600 expression = Type();
2601 pos = expression.sourceEnd+1;
2604 jj_la1[68] = jj_gen;
2605 jj_consume_token(-1);
2606 throw new ParseException();
2610 jj_la1[69] = jj_gen;
2614 token = jj_consume_token(RBRACE);
2615 pos = token.sourceEnd;
2616 } catch (ParseException e) {
2617 errorMessage = "']' expected";
2621 processParseExceptionDebug(e);
2623 {if (true) return new ArrayDeclarator(prefix,expression,pos);}
2626 jj_la1[70] = jj_gen;
2627 jj_consume_token(-1);
2628 throw new ParseException();
2630 throw new Error("Missing return statement in function");
2633 final public Literal Literal() throws ParseException {
2635 StringLiteral literal;
2636 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2637 case INTEGER_LITERAL:
2638 token = jj_consume_token(INTEGER_LITERAL);
2639 {if (true) return new NumberLiteral(token);}
2641 case FLOATING_POINT_LITERAL:
2642 token = jj_consume_token(FLOATING_POINT_LITERAL);
2643 {if (true) return new NumberLiteral(token);}
2645 case STRING_LITERAL:
2646 token = jj_consume_token(STRING_LITERAL);
2647 {if (true) return new StringLiteral(token);}
2650 token = jj_consume_token(TRUE);
2651 {if (true) return new TrueLiteral(token);}
2654 token = jj_consume_token(FALSE);
2655 {if (true) return new FalseLiteral(token);}
2658 token = jj_consume_token(NULL);
2659 {if (true) return new NullLiteral(token);}
2662 literal = evaluableString();
2663 {if (true) return literal;}
2666 jj_la1[71] = jj_gen;
2667 jj_consume_token(-1);
2668 throw new ParseException();
2670 throw new Error("Missing return statement in function");
2673 final public StringLiteral evaluableString() throws ParseException {
2674 ArrayList list = new ArrayList();
2676 Token token,lbrace,rbrace;
2677 AbstractVariable var;
2679 start = jj_consume_token(DOUBLEQUOTE);
2682 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2687 jj_la1[72] = jj_gen;
2690 jj_consume_token(DOLLARS);
2691 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2693 token = jj_consume_token(IDENTIFIER);
2694 list.add(new Variable(token.image,
2699 lbrace = jj_consume_token(LBRACE1);
2700 token = jj_consume_token(ID);
2701 list.add(new Variable(token.image,
2704 rbrace = jj_consume_token(RBRACE1);
2707 jj_la1[73] = jj_gen;
2708 jj_consume_token(-1);
2709 throw new ParseException();
2712 end = jj_consume_token(DOUBLEQUOTE2);
2713 AbstractVariable[] vars = new AbstractVariable[list.size()];
2715 {if (true) return new StringLiteral(jj_input_stream.getCurrentBuffer().substring(start.sourceEnd,end.sourceStart),
2719 throw new Error("Missing return statement in function");
2722 final public FunctionCall Arguments(final Expression func) throws ParseException {
2723 Expression[] args = null;
2724 final Token token,lparen;
2725 lparen = jj_consume_token(LPAREN);
2726 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2742 case INTEGER_LITERAL:
2743 case FLOATING_POINT_LITERAL:
2744 case STRING_LITERAL:
2749 args = ArgumentList();
2752 jj_la1[74] = jj_gen;
2756 token = jj_consume_token(RPAREN);
2757 {if (true) return new FunctionCall(func,args,token.sourceEnd);}
2758 } catch (ParseException e) {
2759 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list";
2762 errorStart = lparen.sourceEnd+1;
2763 errorEnd = lparen.sourceEnd+2;
2765 errorStart = args[args.length-1].sourceEnd+1;
2766 errorEnd = args[args.length-1].sourceEnd+2;
2768 processParseExceptionDebug(e);
2770 int sourceEnd = (args == null && args.length != 0) ? lparen.sourceEnd+1 : args[args.length-1].sourceEnd;
2771 {if (true) return new FunctionCall(func,args,sourceEnd);}
2772 throw new Error("Missing return statement in function");
2776 * An argument list is a list of arguments separated by comma :
2777 * argumentDeclaration() (, argumentDeclaration)*
2778 * @return an array of arguments
2780 final public Expression[] ArgumentList() throws ParseException {
2782 final ArrayList list = new ArrayList();
2786 list.add(arg);pos = arg.sourceEnd;
2789 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2794 jj_la1[75] = jj_gen;
2797 token = jj_consume_token(COMMA);
2798 pos = token.sourceEnd;
2802 pos = arg.sourceEnd;
2803 } catch (ParseException e) {
2804 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list";
2808 processParseException(e);
2811 final Expression[] arguments = new Expression[list.size()];
2812 list.toArray(arguments);
2813 {if (true) return arguments;}
2814 throw new Error("Missing return statement in function");
2818 * A Statement without break.
2819 * @return a statement
2821 final public Statement StatementNoBreak() throws ParseException {
2822 final Statement statement;
2825 statement = expressionStatement();
2826 {if (true) return statement;}
2828 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2830 statement = LabeledStatement();
2831 {if (true) return statement;}
2834 statement = Block();
2835 {if (true) return statement;}
2838 statement = EmptyStatement();
2839 {if (true) return statement;}
2842 statement = SwitchStatement();
2843 {if (true) return statement;}
2846 statement = IfStatement();
2847 {if (true) return statement;}
2850 statement = WhileStatement();
2851 {if (true) return statement;}
2854 statement = DoStatement();
2855 {if (true) return statement;}
2858 statement = ForStatement();
2859 {if (true) return statement;}
2862 statement = ForeachStatement();
2863 {if (true) return statement;}
2866 statement = ContinueStatement();
2867 {if (true) return statement;}
2870 statement = ReturnStatement();
2871 {if (true) return statement;}
2874 statement = EchoStatement();
2875 {if (true) return statement;}
2882 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
2884 token = jj_consume_token(AT);
2887 jj_la1[76] = jj_gen;
2890 statement = IncludeStatement();
2891 if (token != null) {
2892 ((InclusionStatement)statement).silent = true;
2893 statement.sourceStart = token.sourceStart;
2895 {if (true) return statement;}
2898 statement = StaticStatement();
2899 {if (true) return statement;}
2902 statement = GlobalStatement();
2903 {if (true) return statement;}
2906 statement = defineStatement();
2907 currentSegment.add((Outlineable)statement);{if (true) return statement;}
2910 jj_la1[77] = jj_gen;
2911 jj_consume_token(-1);
2912 throw new ParseException();
2915 throw new Error("Missing return statement in function");
2919 * A statement expression.
2921 * @return an expression
2923 final public Statement expressionStatement() throws ParseException {
2924 final Statement statement;
2926 statement = Expression();
2928 token = jj_consume_token(SEMICOLON);
2929 statement.sourceEnd = token.sourceEnd;
2930 } catch (ParseException e) {
2931 if (e.currentToken.next.kind != PHPParserConstants.PHPEND) {
2932 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
2934 errorStart = statement.sourceEnd+1;
2935 errorEnd = statement.sourceEnd+1;
2936 processParseExceptionDebug(e);
2939 {if (true) return statement;}
2940 throw new Error("Missing return statement in function");
2943 final public Define defineStatement() throws ParseException {
2944 Expression defineName,defineValue;
2945 final Token defineToken;
2948 defineToken = jj_consume_token(DEFINE);
2949 pos = defineToken.sourceEnd+1;
2951 token = jj_consume_token(LPAREN);
2952 pos = token.sourceEnd+1;
2953 } catch (ParseException e) {
2954 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
2958 processParseExceptionDebug(e);
2961 defineName = Expression();
2962 pos = defineName.sourceEnd+1;
2963 } catch (ParseException e) {
2964 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2968 processParseExceptionDebug(e);
2969 defineName = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
2972 token = jj_consume_token(COMMA);
2973 pos = defineName.sourceEnd+1;
2974 } catch (ParseException e) {
2975 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
2979 processParseExceptionDebug(e);
2982 defineValue = Expression();
2983 pos = defineValue.sourceEnd+1;
2984 } catch (ParseException e) {
2985 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected";
2989 processParseExceptionDebug(e);
2990 defineValue = new StringLiteral(SYNTAX_ERROR_CHAR,pos,pos);
2993 token = jj_consume_token(RPAREN);
2994 pos = token.sourceEnd+1;
2995 } catch (ParseException e) {
2996 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
3000 processParseExceptionDebug(e);
3002 {if (true) return new Define(currentSegment,
3005 defineToken.sourceStart,
3007 throw new Error("Missing return statement in function");
3011 * A Normal statement.
3013 final public Statement Statement() throws ParseException {
3014 final Statement statement;
3015 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3047 case INTEGER_LITERAL:
3048 case FLOATING_POINT_LITERAL:
3049 case STRING_LITERAL:
3056 statement = StatementNoBreak();
3057 {if (true) return statement;}
3060 statement = BreakStatement();
3061 {if (true) return statement;}
3064 jj_la1[78] = jj_gen;
3065 jj_consume_token(-1);
3066 throw new ParseException();
3068 throw new Error("Missing return statement in function");
3072 * An html block inside a php syntax.
3074 final public HTMLBlock htmlBlock() throws ParseException {
3075 final int startIndex = nodePtr;
3076 final AstNode[] blockNodes;
3079 phpEnd = jj_consume_token(PHPEND);
3080 htmlStart = phpEnd.sourceEnd;
3083 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3088 jj_la1[79] = jj_gen;
3094 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3096 jj_consume_token(PHPSTARTLONG);
3099 jj_consume_token(PHPSTARTSHORT);
3102 jj_la1[80] = jj_gen;
3103 jj_consume_token(-1);
3104 throw new ParseException();
3106 createNewHTMLCode();
3107 } catch (ParseException e) {
3108 errorMessage = "unexpected end of file , '<?php' expected";
3110 errorStart = e.currentToken.sourceStart;
3111 errorEnd = e.currentToken.sourceEnd;
3112 {if (true) throw e;}
3114 nbNodes = nodePtr - startIndex;
3116 {if (true) return null;}
3118 blockNodes = new AstNode[nbNodes];
3119 System.arraycopy(nodes,startIndex+1,blockNodes,0,nbNodes);
3120 nodePtr = startIndex;
3121 {if (true) return new HTMLBlock(blockNodes);}
3122 throw new Error("Missing return statement in function");
3126 * An include statement. It's "include" an expression;
3128 final public InclusionStatement IncludeStatement() throws ParseException {
3131 final InclusionStatement inclusionStatement;
3132 final Token token, token2;
3134 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3136 token = jj_consume_token(REQUIRE);
3137 keyword = InclusionStatement.REQUIRE;pos=token.sourceEnd;
3140 token = jj_consume_token(REQUIRE_ONCE);
3141 keyword = InclusionStatement.REQUIRE_ONCE;pos=token.sourceEnd;
3144 token = jj_consume_token(INCLUDE);
3145 keyword = InclusionStatement.INCLUDE;pos=token.sourceEnd;
3148 token = jj_consume_token(INCLUDE_ONCE);
3149 keyword = InclusionStatement.INCLUDE_ONCE;pos=token.sourceEnd;
3152 jj_la1[81] = jj_gen;
3153 jj_consume_token(-1);
3154 throw new ParseException();
3157 expr = Expression();
3158 pos = expr.sourceEnd;
3159 } catch (ParseException e) {
3160 if (errorMessage != null) {
3161 {if (true) throw e;}
3163 errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected";
3165 errorStart = e.currentToken.next.sourceStart;
3166 errorEnd = e.currentToken.next.sourceEnd;
3167 expr = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
3168 processParseExceptionDebug(e);
3171 token2 = jj_consume_token(SEMICOLON);
3172 pos=token2.sourceEnd;
3173 } catch (ParseException e) {
3174 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
3176 errorStart = e.currentToken.next.sourceStart;
3177 errorEnd = e.currentToken.next.sourceEnd;
3178 processParseExceptionDebug(e);
3180 inclusionStatement = new InclusionStatement(currentSegment,
3185 currentSegment.add(inclusionStatement);
3186 {if (true) return inclusionStatement;}
3187 throw new Error("Missing return statement in function");
3190 final public PrintExpression PrintExpression() throws ParseException {
3191 final Expression expr;
3192 final Token printToken;
3193 token = jj_consume_token(PRINT);
3194 expr = Expression();
3195 {if (true) return new PrintExpression(expr,token.sourceStart,expr.sourceEnd);}
3196 throw new Error("Missing return statement in function");
3199 final public ListExpression ListExpression() throws ParseException {
3200 Expression expr = null;
3201 final Expression expression;
3202 final ArrayList list = new ArrayList();
3204 final Token listToken, rParen;
3206 listToken = jj_consume_token(LIST);
3207 pos = listToken.sourceEnd;
3209 token = jj_consume_token(LPAREN);
3210 pos = token.sourceEnd;
3211 } catch (ParseException e) {
3212 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected";
3214 errorStart = listToken.sourceEnd+1;
3215 errorEnd = listToken.sourceEnd+1;
3216 processParseExceptionDebug(e);
3218 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3220 expr = VariableDeclaratorId();
3221 list.add(expr);pos = expr.sourceEnd;
3224 jj_la1[82] = jj_gen;
3227 if (expr == null) list.add(null);
3230 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3235 jj_la1[83] = jj_gen;
3239 token = jj_consume_token(COMMA);
3240 pos = token.sourceEnd;
3241 } catch (ParseException e) {
3242 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected";
3246 processParseExceptionDebug(e);
3248 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3250 expr = VariableDeclaratorId();
3251 list.add(expr);pos = expr.sourceEnd;
3254 jj_la1[84] = jj_gen;
3259 rParen = jj_consume_token(RPAREN);
3260 pos = rParen.sourceEnd;
3261 } catch (ParseException e) {
3262 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected";
3266 processParseExceptionDebug(e);
3268 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3270 jj_consume_token(ASSIGN);
3271 expression = Expression();
3272 final AbstractVariable[] vars = new AbstractVariable[list.size()];
3274 {if (true) return new ListExpression(vars,
3276 listToken.sourceStart,
3277 expression.sourceEnd);}
3280 jj_la1[85] = jj_gen;
3283 final AbstractVariable[] vars = new AbstractVariable[list.size()];
3285 {if (true) return new ListExpression(vars,listToken.sourceStart,pos);}
3286 throw new Error("Missing return statement in function");
3290 * An echo statement.
3291 * echo anyexpression (, otherexpression)*
3293 final public EchoStatement EchoStatement() throws ParseException {
3294 final ArrayList expressions = new ArrayList();
3297 Token token2 = null;
3298 token = jj_consume_token(ECHO);
3299 expr = Expression();
3300 expressions.add(expr);
3303 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3308 jj_la1[86] = jj_gen;
3311 jj_consume_token(COMMA);
3312 expr = Expression();
3313 expressions.add(expr);
3316 token2 = jj_consume_token(SEMICOLON);
3317 } catch (ParseException e) {
3318 if (e.currentToken.next.kind != 4) {
3319 errorMessage = "';' expected after 'echo' statement";
3321 errorStart = e.currentToken.sourceEnd;
3322 errorEnd = e.currentToken.sourceEnd;
3323 processParseExceptionDebug(e);
3326 final Expression[] exprs = new Expression[expressions.size()];
3327 expressions.toArray(exprs);
3328 if (token2 == null) {
3329 {if (true) return new EchoStatement(exprs,token.sourceStart, exprs[exprs.length-1].sourceEnd);}
3331 {if (true) return new EchoStatement(exprs,token.sourceStart, token2.sourceEnd);}
3332 throw new Error("Missing return statement in function");
3335 final public GlobalStatement GlobalStatement() throws ParseException {
3337 final ArrayList vars = new ArrayList();
3338 final GlobalStatement global;
3339 final Token token, token2;
3341 token = jj_consume_token(GLOBAL);
3343 vars.add(expr);pos = expr.sourceEnd+1;
3346 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3351 jj_la1[87] = jj_gen;
3354 jj_consume_token(COMMA);
3356 vars.add(expr);pos = expr.sourceEnd+1;
3359 token2 = jj_consume_token(SEMICOLON);
3360 pos = token2.sourceEnd+1;
3361 } catch (ParseException e) {
3362 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3366 processParseExceptionDebug(e);
3368 final Variable[] variables = new Variable[vars.size()];
3369 vars.toArray(variables);
3370 global = new GlobalStatement(currentSegment,
3374 currentSegment.add(global);
3375 {if (true) return global;}
3376 throw new Error("Missing return statement in function");
3379 final public StaticStatement StaticStatement() throws ParseException {
3380 final ArrayList vars = new ArrayList();
3381 VariableDeclaration expr;
3382 final Token token, token2;
3384 token = jj_consume_token(STATIC);
3385 expr = VariableDeclarator();
3386 vars.add(expr);pos = expr.sourceEnd+1;
3389 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3394 jj_la1[88] = jj_gen;
3397 jj_consume_token(COMMA);
3398 expr = VariableDeclarator();
3399 vars.add(expr);pos = expr.sourceEnd+1;
3402 token2 = jj_consume_token(SEMICOLON);
3403 pos = token2.sourceEnd+1;
3404 } catch (ParseException e) {
3405 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected";
3409 processParseException(e);
3411 final VariableDeclaration[] variables = new VariableDeclaration[vars.size()];
3412 vars.toArray(variables);
3413 {if (true) return new StaticStatement(variables,
3416 throw new Error("Missing return statement in function");
3419 final public LabeledStatement LabeledStatement() throws ParseException {
3421 final Statement statement;
3422 label = jj_consume_token(IDENTIFIER);
3423 jj_consume_token(COLON);
3424 statement = Statement();
3425 {if (true) return new LabeledStatement(label.image,statement,label.sourceStart,statement.sourceEnd);}
3426 throw new Error("Missing return statement in function");
3436 final public Block Block() throws ParseException {
3437 final ArrayList list = new ArrayList();
3438 Statement statement;
3439 final Token token, token2;
3442 token = jj_consume_token(LBRACE);
3443 pos = token.sourceEnd+1;start=token.sourceStart;
3444 } catch (ParseException e) {
3445 errorMessage = "'{' expected";
3447 pos = this.token.sourceEnd+1;
3451 processParseExceptionDebug(e);
3455 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3491 case INTEGER_LITERAL:
3492 case FLOATING_POINT_LITERAL:
3493 case STRING_LITERAL:
3503 jj_la1[89] = jj_gen;
3506 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3541 case INTEGER_LITERAL:
3542 case FLOATING_POINT_LITERAL:
3543 case STRING_LITERAL:
3550 statement = BlockStatement();
3551 list.add(statement);pos = statement.sourceEnd+1;
3554 statement = htmlBlock();
3555 if (statement != null) {
3556 list.add(statement);
3557 pos = statement.sourceEnd+1;
3559 pos = this.token.sourceEnd+1;
3562 jj_la1[90] = jj_gen;
3563 jj_consume_token(-1);
3564 throw new ParseException();
3568 token2 = jj_consume_token(RBRACE);
3569 pos = token2.sourceEnd+1;
3570 } catch (ParseException e) {
3571 errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected";
3575 processParseExceptionDebug(e);
3577 final Statement[] statements = new Statement[list.size()];
3578 list.toArray(statements);
3579 {if (true) return new Block(statements,start,pos);}
3580 throw new Error("Missing return statement in function");
3583 final public Statement BlockStatement() throws ParseException {
3584 final Statement statement;
3585 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3618 case INTEGER_LITERAL:
3619 case FLOATING_POINT_LITERAL:
3620 case STRING_LITERAL:
3628 statement = Statement();
3629 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3630 {if (true) return statement;}
3631 } catch (ParseException e) {
3632 errorMessage = "unexpected token : '"+ e.currentToken.image +"', a statement was expected";
3634 errorStart = e.currentToken.sourceStart;
3635 errorEnd = e.currentToken.sourceEnd;
3636 {if (true) throw e;}
3640 statement = ClassDeclaration();
3641 {if (true) return statement;}
3644 statement = MethodDeclaration();
3645 if (phpDocument == currentSegment) pushOnAstNodes(statement);
3646 currentSegment.add((MethodDeclaration) statement);
3647 ((MethodDeclaration) statement).analyzeCode();
3648 {if (true) return statement;}
3651 jj_la1[91] = jj_gen;
3652 jj_consume_token(-1);
3653 throw new ParseException();
3655 throw new Error("Missing return statement in function");
3659 * A Block statement that will not contain any 'break'
3661 final public Statement BlockStatementNoBreak() throws ParseException {
3662 final Statement statement;
3663 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3695 case INTEGER_LITERAL:
3696 case FLOATING_POINT_LITERAL:
3697 case STRING_LITERAL:
3704 statement = StatementNoBreak();
3705 {if (true) return statement;}
3708 statement = ClassDeclaration();
3709 {if (true) return statement;}
3712 statement = MethodDeclaration();
3713 currentSegment.add((MethodDeclaration) statement);
3714 ((MethodDeclaration) statement).analyzeCode();
3715 {if (true) return statement;}
3718 jj_la1[92] = jj_gen;
3719 jj_consume_token(-1);
3720 throw new ParseException();
3722 throw new Error("Missing return statement in function");
3726 * used only by ForInit()
3728 final public Expression[] LocalVariableDeclaration() throws ParseException {
3729 final ArrayList list = new ArrayList();
3735 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3740 jj_la1[93] = jj_gen;
3743 jj_consume_token(COMMA);
3747 final Expression[] vars = new Expression[list.size()];
3749 {if (true) return vars;}
3750 throw new Error("Missing return statement in function");
3754 * used only by LocalVariableDeclaration().
3756 final public VariableDeclaration LocalVariableDeclarator() throws ParseException {
3757 final Variable varName;
3758 Expression initializer = null;
3759 varName = Variable();
3760 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3762 jj_consume_token(ASSIGN);
3763 initializer = Expression();
3766 jj_la1[94] = jj_gen;
3769 if (initializer == null) {
3770 {if (true) return new VariableDeclaration(currentSegment,
3772 varName.sourceStart,
3773 varName.sourceEnd);}
3775 {if (true) return new VariableDeclaration(currentSegment,
3778 VariableDeclaration.EQUAL,
3779 varName.sourceStart);}
3780 throw new Error("Missing return statement in function");
3783 final public EmptyStatement EmptyStatement() throws ParseException {
3785 token = jj_consume_token(SEMICOLON);
3786 {if (true) return new EmptyStatement(token.sourceStart,token.sourceEnd);}
3787 throw new Error("Missing return statement in function");
3791 * used only by StatementExpressionList() which is used only by ForInit() and ForStatement()
3793 final public Expression StatementExpression() throws ParseException {
3794 final Expression expr;
3795 final Token operator;
3796 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3799 expr = PreIncDecExpression();
3800 {if (true) return expr;}
3807 expr = PrimaryExpression();
3808 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3811 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3813 operator = jj_consume_token(PLUS_PLUS);
3814 {if (true) return new PostfixedUnaryExpression(expr,
3815 OperatorIds.PLUS_PLUS,
3816 operator.sourceEnd);}
3819 operator = jj_consume_token(MINUS_MINUS);
3820 {if (true) return new PostfixedUnaryExpression(expr,
3821 OperatorIds.MINUS_MINUS,
3822 operator.sourceEnd);}
3825 jj_la1[95] = jj_gen;
3826 jj_consume_token(-1);
3827 throw new ParseException();
3831 jj_la1[96] = jj_gen;
3834 {if (true) return expr;}
3837 jj_la1[97] = jj_gen;
3838 jj_consume_token(-1);
3839 throw new ParseException();
3841 throw new Error("Missing return statement in function");
3844 final public SwitchStatement SwitchStatement() throws ParseException {
3845 Expression variable;
3846 final AbstractCase[] cases;
3847 final Token switchToken,lparenToken,rparenToken;
3849 switchToken = jj_consume_token(SWITCH);
3850 pos = switchToken.sourceEnd+1;
3852 lparenToken = jj_consume_token(LPAREN);
3853 pos = lparenToken.sourceEnd+1;
3854 } catch (ParseException e) {
3855 errorMessage = "'(' expected after 'switch'";
3859 processParseExceptionDebug(e);
3862 variable = Expression();
3863 pos = variable.sourceEnd+1;
3864 } catch (ParseException e) {
3865 if (errorMessage != null) {
3866 {if (true) throw e;}
3868 errorMessage = "expression expected";
3872 processParseExceptionDebug(e);
3873 variable = new ConstantIdentifier(SYNTAX_ERROR_CHAR,pos,pos);
3876 rparenToken = jj_consume_token(RPAREN);
3877 pos = rparenToken.sourceEnd+1;
3878 } catch (ParseException e) {
3879 errorMessage = "')' expected";
3883 processParseExceptionDebug(e);
3885 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3887 cases = switchStatementBrace();
3890 cases = switchStatementColon(switchToken.sourceStart, switchToken.sourceEnd);
3893 jj_la1[98] = jj_gen;
3894 jj_consume_token(-1);
3895 throw new ParseException();
3897 {if (true) return new SwitchStatement(variable,
3899 switchToken.sourceStart,
3900 this.token.sourceEnd);}
3901 throw new Error("Missing return statement in function");
3904 final public AbstractCase[] switchStatementBrace() throws ParseException {
3906 final ArrayList cases = new ArrayList();
3909 token = jj_consume_token(LBRACE);
3910 pos = token.sourceEnd;
3913 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3919 jj_la1[99] = jj_gen;
3922 cas = switchLabel0();
3923 cases.add(cas);pos = cas.sourceEnd;
3926 token = jj_consume_token(RBRACE);
3927 pos = token.sourceEnd;
3928 } catch (ParseException e) {
3929 errorMessage = "'}' expected";
3933 processParseExceptionDebug(e);
3935 final AbstractCase[] abcase = new AbstractCase[cases.size()];
3936 cases.toArray(abcase);
3937 {if (true) return abcase;}
3938 throw new Error("Missing return statement in function");
3942 * A Switch statement with : ... endswitch;
3943 * @param start the begin offset of the switch
3944 * @param end the end offset of the switch
3946 final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException {
3948 final ArrayList cases = new ArrayList();
3951 token = jj_consume_token(COLON);
3952 pos = token.sourceEnd;
3954 setMarker(fileToParse,
3955 "Ugly syntax detected, you should switch () {...} instead of switch (): ... enswitch;",
3959 "Line " + token.beginLine);
3960 } catch (CoreException e) {
3961 PHPeclipsePlugin.log(e);
3965 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
3971 jj_la1[100] = jj_gen;
3974 cas = switchLabel0();
3975 cases.add(cas);pos = cas.sourceEnd;
3978 token = jj_consume_token(ENDSWITCH);
3979 pos = token.sourceEnd;
3980 } catch (ParseException e) {
3981 errorMessage = "'endswitch' expected";
3985 processParseExceptionDebug(e);
3988 token = jj_consume_token(SEMICOLON);
3989 pos = token.sourceEnd;
3990 } catch (ParseException e) {
3991 errorMessage = "';' expected after 'endswitch' keyword";
3995 processParseExceptionDebug(e);
3997 final AbstractCase[] abcase = new AbstractCase[cases.size()];
3998 cases.toArray(abcase);
3999 {if (true) return abcase;}
4000 throw new Error("Missing return statement in function");
4003 final public AbstractCase switchLabel0() throws ParseException {
4004 final Expression expr;
4005 Statement statement;
4006 final ArrayList stmts = new ArrayList();
4007 final Token token = this.token;
4008 final int start = this.token.next.sourceStart;
4009 expr = SwitchLabel();
4012 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4048 case INTEGER_LITERAL:
4049 case FLOATING_POINT_LITERAL:
4050 case STRING_LITERAL:
4060 jj_la1[101] = jj_gen;
4063 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4097 case INTEGER_LITERAL:
4098 case FLOATING_POINT_LITERAL:
4099 case STRING_LITERAL:
4106 statement = BlockStatementNoBreak();
4107 stmts.add(statement);
4110 statement = htmlBlock();
4111 if (statement != null) {stmts.add(statement);}
4114 statement = BreakStatement();
4115 stmts.add(statement);
4118 jj_la1[102] = jj_gen;
4119 jj_consume_token(-1);
4120 throw new ParseException();
4123 final int listSize = stmts.size();
4124 final Statement[] stmtsArray = new Statement[listSize];
4125 stmts.toArray(stmtsArray);
4126 if (expr == null) {//it's a default
4127 final int end = this.token.next.sourceStart;
4128 {if (true) return new DefaultCase(stmtsArray,start,end);}
4130 if (listSize != 0) {
4131 {if (true) return new Case(expr,stmtsArray,expr.sourceStart,stmtsArray[listSize-1].sourceEnd);}
4133 {if (true) return new Case(expr,stmtsArray,expr.sourceStart,expr.sourceEnd);}
4135 throw new Error("Missing return statement in function");
4140 * case Expression() :
4142 * @return the if it was a case and null if not
4144 final public Expression SwitchLabel() throws ParseException {
4145 final Expression expr;
4146 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4148 token = jj_consume_token(CASE);
4150 expr = Expression();
4151 } catch (ParseException e) {
4152 if (errorMessage != null) {if (true) throw e;}
4153 errorMessage = "expression expected after 'case' keyword";
4155 errorStart = token.sourceEnd +1;
4156 errorEnd = token.sourceEnd +1;
4157 {if (true) throw e;}
4160 token = jj_consume_token(COLON);
4161 } catch (ParseException e) {
4162 errorMessage = "':' expected after case expression";
4164 errorStart = expr.sourceEnd+1;
4165 errorEnd = expr.sourceEnd+1;
4166 processParseExceptionDebug(e);
4168 {if (true) return expr;}
4171 token = jj_consume_token(_DEFAULT);
4173 jj_consume_token(COLON);
4174 } catch (ParseException e) {
4175 errorMessage = "':' expected after 'default' keyword";
4177 errorStart = token.sourceEnd+1;
4178 errorEnd = token.sourceEnd+1;
4179 processParseExceptionDebug(e);
4181 {if (true) return null;}
4184 jj_la1[103] = jj_gen;
4185 jj_consume_token(-1);
4186 throw new ParseException();
4188 throw new Error("Missing return statement in function");
4191 final public Break BreakStatement() throws ParseException {
4192 Expression expression = null;
4193 final Token token, token2;
4195 token = jj_consume_token(BREAK);
4196 pos = token.sourceEnd+1;
4197 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4213 case INTEGER_LITERAL:
4214 case FLOATING_POINT_LITERAL:
4215 case STRING_LITERAL:
4220 expression = Expression();
4221 pos = expression.sourceEnd+1;
4224 jj_la1[104] = jj_gen;
4228 token2 = jj_consume_token(SEMICOLON);
4229 pos = token2.sourceEnd;
4230 } catch (ParseException e) {
4231 errorMessage = "';' expected after 'break' keyword";
4235 processParseExceptionDebug(e);
4237 {if (true) return new Break(expression, token.sourceStart, pos);}
4238 throw new Error("Missing return statement in function");
4241 final public IfStatement IfStatement() throws ParseException {
4242 final Expression condition;
4243 final IfStatement ifStatement;
4245 token = jj_consume_token(IF);
4246 condition = Condition("if");
4247 ifStatement = IfStatement0(condition,token.sourceStart,token.sourceEnd);
4248 {if (true) return ifStatement;}
4249 throw new Error("Missing return statement in function");
4252 final public Expression Condition(final String keyword) throws ParseException {
4253 final Expression condition;
4255 jj_consume_token(LPAREN);
4256 } catch (ParseException e) {
4257 errorMessage = "'(' expected after " + keyword + " keyword";
4259 errorStart = this.token.sourceEnd + 1;
4260 errorEnd = this.token.sourceEnd + 1;
4261 processParseExceptionDebug(e);
4263 condition = Expression();
4265 jj_consume_token(RPAREN);
4266 } catch (ParseException e) {
4267 errorMessage = "')' expected after " + keyword + " keyword";
4269 errorStart = condition.sourceEnd+1;
4270 errorEnd = condition.sourceEnd+1;
4271 processParseExceptionDebug(e);
4273 {if (true) return condition;}
4274 throw new Error("Missing return statement in function");
4277 final public IfStatement IfStatement0(final Expression condition, final int start,final int end) throws ParseException {
4278 Statement statement;
4279 final Statement stmt;
4280 final Statement[] statementsArray;
4281 ElseIf elseifStatement;
4282 Else elseStatement = null;
4283 final ArrayList stmts;
4284 final ArrayList elseIfList = new ArrayList();
4285 final ElseIf[] elseIfs;
4286 int pos = jj_input_stream.getPosition();
4287 final int endStatements;
4288 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4290 jj_consume_token(COLON);
4291 stmts = new ArrayList();
4294 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4328 case INTEGER_LITERAL:
4329 case FLOATING_POINT_LITERAL:
4330 case STRING_LITERAL:
4340 jj_la1[105] = jj_gen;
4343 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4376 case INTEGER_LITERAL:
4377 case FLOATING_POINT_LITERAL:
4378 case STRING_LITERAL:
4385 statement = Statement();
4386 stmts.add(statement);
4389 statement = htmlBlock();
4390 if (statement != null) {stmts.add(statement);}
4393 jj_la1[106] = jj_gen;
4394 jj_consume_token(-1);
4395 throw new ParseException();
4398 endStatements = jj_input_stream.getPosition();
4401 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4406 jj_la1[107] = jj_gen;
4409 elseifStatement = ElseIfStatementColon();
4410 elseIfList.add(elseifStatement);
4412 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4414 elseStatement = ElseStatementColon();
4417 jj_la1[108] = jj_gen;
4421 setMarker(fileToParse,
4422 "Ugly syntax detected, you should if () {...} instead of if (): ... endif;",
4426 "Line " + token.beginLine);
4427 } catch (CoreException e) {
4428 PHPeclipsePlugin.log(e);
4431 jj_consume_token(ENDIF);
4432 } catch (ParseException e) {
4433 errorMessage = "'endif' expected";
4435 errorStart = e.currentToken.sourceStart;
4436 errorEnd = e.currentToken.sourceEnd;
4437 {if (true) throw e;}
4440 jj_consume_token(SEMICOLON);
4441 } catch (ParseException e) {
4442 errorMessage = "';' expected after 'endif' keyword";
4444 errorStart = e.currentToken.sourceStart;
4445 errorEnd = e.currentToken.sourceEnd;
4446 {if (true) throw e;}
4448 elseIfs = new ElseIf[elseIfList.size()];
4449 elseIfList.toArray(elseIfs);
4450 if (stmts.size() == 1) {
4451 {if (true) return new IfStatement(condition,
4452 (Statement) stmts.get(0),
4456 jj_input_stream.getPosition());}
4458 statementsArray = new Statement[stmts.size()];
4459 stmts.toArray(statementsArray);
4460 {if (true) return new IfStatement(condition,
4461 new Block(statementsArray,pos,endStatements),
4465 jj_input_stream.getPosition());}
4501 case INTEGER_LITERAL:
4502 case FLOATING_POINT_LITERAL:
4503 case STRING_LITERAL:
4510 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4543 case INTEGER_LITERAL:
4544 case FLOATING_POINT_LITERAL:
4545 case STRING_LITERAL:
4558 jj_la1[109] = jj_gen;
4559 jj_consume_token(-1);
4560 throw new ParseException();
4564 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4569 jj_la1[110] = jj_gen;
4572 elseifStatement = ElseIfStatement();
4573 elseIfList.add(elseifStatement);
4575 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4577 jj_consume_token(ELSE);
4579 pos = jj_input_stream.getPosition();
4580 statement = Statement();
4581 elseStatement = new Else(statement,pos,jj_input_stream.getPosition());
4582 } catch (ParseException e) {
4583 if (errorMessage != null) {
4584 {if (true) throw e;}
4586 errorMessage = "unexpected token '"+e.currentToken.next.image+"', a statement was expected";
4588 errorStart = e.currentToken.sourceStart;
4589 errorEnd = e.currentToken.sourceEnd;
4590 {if (true) throw e;}
4594 jj_la1[111] = jj_gen;
4597 elseIfs = new ElseIf[elseIfList.size()];
4598 elseIfList.toArray(elseIfs);
4599 {if (true) return new IfStatement(condition,
4604 jj_input_stream.getPosition());}
4607 jj_la1[112] = jj_gen;
4608 jj_consume_token(-1);
4609 throw new ParseException();
4611 throw new Error("Missing return statement in function");
4614 final public ElseIf ElseIfStatementColon() throws ParseException {
4615 final Expression condition;
4616 Statement statement;
4617 final ArrayList list = new ArrayList();
4618 final Token elseifToken;
4619 elseifToken = jj_consume_token(ELSEIF);
4620 condition = Condition("elseif");
4621 jj_consume_token(COLON);
4624 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4658 case INTEGER_LITERAL:
4659 case FLOATING_POINT_LITERAL:
4660 case STRING_LITERAL:
4670 jj_la1[113] = jj_gen;
4673 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4706 case INTEGER_LITERAL:
4707 case FLOATING_POINT_LITERAL:
4708 case STRING_LITERAL:
4715 statement = Statement();
4716 list.add(statement);
4719 statement = htmlBlock();
4720 if (statement != null) {list.add(statement);}
4723 jj_la1[114] = jj_gen;
4724 jj_consume_token(-1);
4725 throw new ParseException();
4728 final int sizeList = list.size();
4729 final Statement[] stmtsArray = new Statement[sizeList];
4730 list.toArray(stmtsArray);
4731 {if (true) return new ElseIf(condition,stmtsArray ,
4732 elseifToken.sourceStart,
4733 stmtsArray[sizeList-1].sourceEnd);}
4734 throw new Error("Missing return statement in function");
4737 final public Else ElseStatementColon() throws ParseException {
4738 Statement statement;
4739 final ArrayList list = new ArrayList();
4740 final Token elseToken;
4741 elseToken = jj_consume_token(ELSE);
4742 jj_consume_token(COLON);
4745 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4779 case INTEGER_LITERAL:
4780 case FLOATING_POINT_LITERAL:
4781 case STRING_LITERAL:
4791 jj_la1[115] = jj_gen;
4794 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4827 case INTEGER_LITERAL:
4828 case FLOATING_POINT_LITERAL:
4829 case STRING_LITERAL:
4836 statement = Statement();
4837 list.add(statement);
4840 statement = htmlBlock();
4841 if (statement != null) {list.add(statement);}
4844 jj_la1[116] = jj_gen;
4845 jj_consume_token(-1);
4846 throw new ParseException();
4849 final int sizeList = list.size();
4850 final Statement[] stmtsArray = new Statement[sizeList];
4851 list.toArray(stmtsArray);
4852 {if (true) return new Else(stmtsArray,elseToken.sourceStart,stmtsArray[sizeList-1].sourceEnd);}
4853 throw new Error("Missing return statement in function");
4856 final public ElseIf ElseIfStatement() throws ParseException {
4857 final Expression condition;
4858 //final Statement statement;
4859 final Token elseifToken;
4860 final Statement[] statement = new Statement[1];
4861 elseifToken = jj_consume_token(ELSEIF);
4862 condition = Condition("elseif");
4863 statement[0] = Statement();
4864 {if (true) return new ElseIf(condition,statement,elseifToken.sourceStart,statement[0].sourceEnd);}
4865 throw new Error("Missing return statement in function");
4868 final public WhileStatement WhileStatement() throws ParseException {
4869 final Expression condition;
4870 final Statement action;
4871 final Token whileToken;
4872 whileToken = jj_consume_token(WHILE);
4873 condition = Condition("while");
4874 action = WhileStatement0(whileToken.sourceStart,whileToken.sourceEnd);
4875 {if (true) return new WhileStatement(condition,action,whileToken.sourceStart,action.sourceEnd);}
4876 throw new Error("Missing return statement in function");
4879 final public Statement WhileStatement0(final int start, final int end) throws ParseException {
4880 Statement statement;
4881 final ArrayList stmts = new ArrayList();
4882 final int pos = jj_input_stream.getPosition();
4883 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4885 jj_consume_token(COLON);
4888 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
4921 case INTEGER_LITERAL:
4922 case FLOATING_POINT_LITERAL:
4923 case STRING_LITERAL:
4933 jj_la1[117] = jj_gen;
4936 statement = Statement();
4937 stmts.add(statement);
4940 setMarker(fileToParse,
4941 "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;",
4945 "Line " + token.beginLine);
4946 } catch (CoreException e) {
4947 PHPeclipsePlugin.log(e);
4950 jj_consume_token(ENDWHILE);
4951 } catch (ParseException e) {
4952 errorMessage = "'endwhile' expected";
4954 errorStart = e.currentToken.sourceStart;
4955 errorEnd = e.currentToken.sourceEnd;
4956 {if (true) throw e;}
4959 jj_consume_token(SEMICOLON);
4960 final Statement[] stmtsArray = new Statement[stmts.size()];
4961 stmts.toArray(stmtsArray);
4962 {if (true) return new Block(stmtsArray,pos,jj_input_stream.getPosition());}
4963 } catch (ParseException e) {
4964 errorMessage = "';' expected after 'endwhile' keyword";
4966 errorStart = e.currentToken.sourceStart;
4967 errorEnd = e.currentToken.sourceEnd;
4968 {if (true) throw e;}
5003 case INTEGER_LITERAL:
5004 case FLOATING_POINT_LITERAL:
5005 case STRING_LITERAL:
5012 statement = Statement();
5013 {if (true) return statement;}
5016 jj_la1[118] = jj_gen;
5017 jj_consume_token(-1);
5018 throw new ParseException();
5020 throw new Error("Missing return statement in function");
5023 final public DoStatement DoStatement() throws ParseException {
5024 final Statement action;
5025 final Expression condition;
5027 Token token2 = null;
5028 token = jj_consume_token(DO);
5029 action = Statement();
5030 jj_consume_token(WHILE);
5031 condition = Condition("while");
5033 token2 = jj_consume_token(SEMICOLON);
5034 } catch (ParseException e) {
5035 errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected";
5037 errorStart = condition.sourceEnd+1;
5038 errorEnd = condition.sourceEnd+1;
5039 processParseExceptionDebug(e);
5041 if (token2 == null) {
5042 {if (true) return new DoStatement(condition,action,token.sourceStart,condition.sourceEnd);}
5044 {if (true) return new DoStatement(condition,action,token.sourceStart,token2.sourceEnd);}
5045 throw new Error("Missing return statement in function");
5048 final public ForeachStatement ForeachStatement() throws ParseException {
5049 Statement statement = null;
5050 Expression expression = null;
5051 ArrayVariableDeclaration variable = null;
5053 Token lparenToken = null;
5054 Token asToken = null;
5055 Token rparenToken = null;
5057 foreachToken = jj_consume_token(FOREACH);
5059 lparenToken = jj_consume_token(LPAREN);
5060 pos = lparenToken.sourceEnd+1;
5061 } catch (ParseException e) {
5062 errorMessage = "'(' expected after 'foreach' keyword";
5064 errorStart = e.currentToken.sourceStart;
5065 errorEnd = e.currentToken.sourceEnd;
5066 processParseExceptionDebug(e);
5067 {pos = foreachToken.sourceEnd+1;}
5070 expression = Expression();
5071 pos = expression.sourceEnd+1;
5072 } catch (ParseException e) {
5073 errorMessage = "variable expected";
5075 errorStart = e.currentToken.sourceStart;
5076 errorEnd = e.currentToken.sourceEnd;
5077 processParseExceptionDebug(e);
5080 asToken = jj_consume_token(AS);
5081 pos = asToken.sourceEnd+1;
5082 } catch (ParseException e) {
5083 errorMessage = "'as' expected";
5085 errorStart = e.currentToken.sourceStart;
5086 errorEnd = e.currentToken.sourceEnd;
5087 processParseExceptionDebug(e);
5090 variable = ArrayVariable();
5091 pos = variable.sourceEnd+1;
5092 } catch (ParseException e) {
5093 if (errorMessage != null) {if (true) throw e;}
5094 errorMessage = "variable expected";
5096 errorStart = e.currentToken.sourceStart;
5097 errorEnd = e.currentToken.sourceEnd;
5098 processParseExceptionDebug(e);
5101 rparenToken = jj_consume_token(RPAREN);
5102 pos = rparenToken.sourceEnd+1;
5103 } catch (ParseException e) {
5104 errorMessage = "')' expected after 'foreach' keyword";
5106 errorStart = e.currentToken.sourceStart;
5107 errorEnd = e.currentToken.sourceEnd;
5108 processParseExceptionDebug(e);
5111 statement = Statement();
5112 pos = statement.sourceEnd+1;
5113 } catch (ParseException e) {
5114 if (errorMessage != null) {if (true) throw e;}
5115 errorMessage = "statement expected";
5117 errorStart = e.currentToken.sourceStart;
5118 errorEnd = e.currentToken.sourceEnd;
5119 processParseExceptionDebug(e);
5121 {if (true) return new ForeachStatement(expression,
5124 foreachToken.sourceStart,
5126 throw new Error("Missing return statement in function");
5130 * a for declaration.
5131 * @return a node representing the for statement
5133 final public ForStatement ForStatement() throws ParseException {
5134 final Token token,tokenEndFor,token2,tokenColon;
5136 Expression[] initializations = null;
5137 Expression condition = null;
5138 Expression[] increments = null;
5140 final ArrayList list = new ArrayList();
5141 token = jj_consume_token(FOR);
5143 jj_consume_token(LPAREN);
5144 } catch (ParseException e) {
5145 errorMessage = "'(' expected after 'for' keyword";
5147 errorStart = token.sourceEnd;
5148 errorEnd = token.sourceEnd +1;
5149 processParseExceptionDebug(e);
5151 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5167 case INTEGER_LITERAL:
5168 case FLOATING_POINT_LITERAL:
5169 case STRING_LITERAL:
5174 initializations = ForInit();
5177 jj_la1[119] = jj_gen;
5180 jj_consume_token(SEMICOLON);
5181 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5197 case INTEGER_LITERAL:
5198 case FLOATING_POINT_LITERAL:
5199 case STRING_LITERAL:
5204 condition = Expression();
5207 jj_la1[120] = jj_gen;
5210 jj_consume_token(SEMICOLON);
5211 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5227 case INTEGER_LITERAL:
5228 case FLOATING_POINT_LITERAL:
5229 case STRING_LITERAL:
5234 increments = StatementExpressionList();
5237 jj_la1[121] = jj_gen;
5240 jj_consume_token(RPAREN);
5241 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5274 case INTEGER_LITERAL:
5275 case FLOATING_POINT_LITERAL:
5276 case STRING_LITERAL:
5283 action = Statement();
5284 {if (true) return new ForStatement(initializations,
5292 tokenColon = jj_consume_token(COLON);
5293 pos = tokenColon.sourceEnd+1;
5296 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5329 case INTEGER_LITERAL:
5330 case FLOATING_POINT_LITERAL:
5331 case STRING_LITERAL:
5341 jj_la1[122] = jj_gen;
5344 action = Statement();
5345 list.add(action);pos = action.sourceEnd+1;
5348 setMarker(fileToParse,
5349 "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;",
5353 "Line " + token.beginLine);
5354 } catch (CoreException e) {
5355 PHPeclipsePlugin.log(e);
5358 tokenEndFor = jj_consume_token(ENDFOR);
5359 pos = tokenEndFor.sourceEnd+1;
5360 } catch (ParseException e) {
5361 errorMessage = "'endfor' expected";
5365 processParseExceptionDebug(e);
5368 token2 = jj_consume_token(SEMICOLON);
5369 pos = token2.sourceEnd+1;
5370 } catch (ParseException e) {
5371 errorMessage = "';' expected after 'endfor' keyword";
5375 processParseExceptionDebug(e);
5377 final Statement[] stmtsArray = new Statement[list.size()];
5378 list.toArray(stmtsArray);
5379 {if (true) return new ForStatement(initializations,
5382 new Block(stmtsArray,
5383 stmtsArray[0].sourceStart,
5384 stmtsArray[stmtsArray.length-1].sourceEnd),
5389 jj_la1[123] = jj_gen;
5390 jj_consume_token(-1);
5391 throw new ParseException();
5393 throw new Error("Missing return statement in function");
5396 final public Expression[] ForInit() throws ParseException {
5397 final Expression[] exprs;
5398 if (jj_2_5(2147483647)) {
5399 exprs = LocalVariableDeclaration();
5400 {if (true) return exprs;}
5402 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5418 case INTEGER_LITERAL:
5419 case FLOATING_POINT_LITERAL:
5420 case STRING_LITERAL:
5425 exprs = StatementExpressionList();
5426 {if (true) return exprs;}
5429 jj_la1[124] = jj_gen;
5430 jj_consume_token(-1);
5431 throw new ParseException();
5434 throw new Error("Missing return statement in function");
5437 final public Expression[] StatementExpressionList() throws ParseException {
5438 final ArrayList list = new ArrayList();
5439 final Expression expr;
5440 expr = Expression();
5444 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5449 jj_la1[125] = jj_gen;
5452 jj_consume_token(COMMA);
5456 final Expression[] exprsArray = new Expression[list.size()];
5457 list.toArray(exprsArray);
5458 {if (true) return exprsArray;}
5459 throw new Error("Missing return statement in function");
5462 final public Continue ContinueStatement() throws ParseException {
5463 Expression expr = null;
5465 Token token2 = null;
5466 token = jj_consume_token(CONTINUE);
5467 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5483 case INTEGER_LITERAL:
5484 case FLOATING_POINT_LITERAL:
5485 case STRING_LITERAL:
5490 expr = Expression();
5493 jj_la1[126] = jj_gen;
5497 token2 = jj_consume_token(SEMICOLON);
5498 } catch (ParseException e) {
5499 errorMessage = "';' expected after 'continue' statement";
5502 errorStart = token.sourceEnd+1;
5503 errorEnd = token.sourceEnd+1;
5505 errorStart = expr.sourceEnd+1;
5506 errorEnd = expr.sourceEnd+1;
5508 processParseExceptionDebug(e);
5510 if (token2 == null) {
5512 {if (true) return new Continue(expr,token.sourceStart,token.sourceEnd);}
5514 {if (true) return new Continue(expr,token.sourceStart,expr.sourceEnd);}
5516 {if (true) return new Continue(expr,token.sourceStart,token2.sourceEnd);}
5517 throw new Error("Missing return statement in function");
5520 final public ReturnStatement ReturnStatement() throws ParseException {
5521 Expression expr = null;
5523 Token token2 = null;
5524 token = jj_consume_token(RETURN);
5525 switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
5541 case INTEGER_LITERAL:
5542 case FLOATING_POINT_LITERAL:
5543 case STRING_LITERAL:
5548 expr = Expression();
5551 jj_la1[127] = jj_gen;
5555 token2 = jj_consume_token(SEMICOLON);
5556 } catch (ParseException e) {
5557 errorMessage = "';' expected after 'return' statement";
5560 errorStart = token.sourceEnd+1;
5561 errorEnd = token.sourceEnd+1;
5563 errorStart = expr.sourceEnd+1;
5564 errorEnd = expr.sourceEnd+1;
5566 processParseExceptionDebug(e);
5568 if (token2 == null) {
5570 {if (true) return new ReturnStatement(expr,token.sourceStart,token.sourceEnd);}
5572 {if (true) return new ReturnStatement(expr,token.sourceStart,expr.sourceEnd);}
5574 {if (true) return new ReturnStatement(expr,token.sourceStart,token2.sourceEnd);}
5575 throw new Error("Missing return statement in function");
5578 final private boolean jj_2_1(int xla) {
5579 jj_la = xla; jj_lastpos = jj_scanpos = token;
5580 boolean retval = !jj_3_1();
5585 final private boolean jj_2_2(int xla) {
5586 jj_la = xla; jj_lastpos = jj_scanpos = token;
5587 boolean retval = !jj_3_2();
5592 final private boolean jj_2_3(int xla) {
5593 jj_la = xla; jj_lastpos = jj_scanpos = token;
5594 boolean retval = !jj_3_3();
5599 final private boolean jj_2_4(int xla) {
5600 jj_la = xla; jj_lastpos = jj_scanpos = token;
5601 boolean retval = !jj_3_4();
5606 final private boolean jj_2_5(int xla) {
5607 jj_la = xla; jj_lastpos = jj_scanpos = token;
5608 boolean retval = !jj_3_5();
5613 final private boolean jj_3R_210() {
5614 if (jj_3R_116()) return true;
5615 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5619 final private boolean jj_3R_209() {
5620 if (jj_3R_50()) return true;
5621 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5625 final private boolean jj_3R_109() {
5626 if (jj_3R_114()) return true;
5627 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5631 if (jj_3R_115()) { jj_scanpos = xsp; break; }
5632 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5637 final private boolean jj_3R_208() {
5638 if (jj_scan_token(IDENTIFIER)) return true;
5639 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5643 final private boolean jj_3R_203() {
5650 if (jj_3R_210()) return true;
5651 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5652 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5653 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5657 final private boolean jj_3R_110() {
5658 if (jj_scan_token(BIT_OR)) return true;
5659 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5660 if (jj_3R_109()) return true;
5661 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5665 final private boolean jj_3R_103() {
5666 if (jj_3R_109()) return true;
5667 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5671 if (jj_3R_110()) { jj_scanpos = xsp; break; }
5672 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5677 final private boolean jj_3R_188() {
5678 if (jj_scan_token(ARRAY)) return true;
5679 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5680 if (jj_3R_198()) return true;
5681 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5685 final private boolean jj_3R_132() {
5686 if (jj_scan_token(IDENTIFIER)) return true;
5687 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5691 final private boolean jj_3R_106() {
5692 if (jj_scan_token(DOT)) return true;
5693 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5694 if (jj_3R_103()) return true;
5695 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5699 final private boolean jj_3R_131() {
5700 if (jj_scan_token(LBRACE)) return true;
5701 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5702 if (jj_3R_49()) return true;
5703 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5704 if (jj_scan_token(RBRACE)) return true;
5705 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5709 final private boolean jj_3R_97() {
5710 if (jj_3R_103()) return true;
5711 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5715 if (jj_3R_106()) { jj_scanpos = xsp; break; }
5716 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5721 final private boolean jj_3R_204() {
5722 if (jj_3R_207()) return true;
5723 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5727 final private boolean jj_3R_122() {
5734 if (jj_3R_132()) return true;
5735 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5736 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5737 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5741 final private boolean jj_3R_130() {
5742 if (jj_scan_token(DOLLAR)) return true;
5743 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5744 if (jj_3R_122()) return true;
5745 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5749 final private boolean jj_3R_108() {
5750 if (jj_scan_token(_ANDL)) return true;
5751 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5755 final private boolean jj_3R_107() {
5756 if (jj_scan_token(AND_AND)) return true;
5757 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5761 final private boolean jj_3R_100() {
5766 if (jj_3R_108()) return true;
5767 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5768 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5769 if (jj_3R_97()) return true;
5770 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5774 final private boolean jj_3R_81() {
5775 if (jj_3R_97()) return true;
5776 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5780 if (jj_3R_100()) { jj_scanpos = xsp; break; }
5781 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5786 final private boolean jj_3R_79() {
5787 if (jj_scan_token(HOOK)) return true;
5788 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5789 if (jj_3R_49()) return true;
5790 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5791 if (jj_scan_token(COLON)) return true;
5792 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5793 if (jj_3R_73()) return true;
5794 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5798 final private boolean jj_3R_195() {
5799 if (jj_scan_token(NEW)) return true;
5800 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5801 if (jj_3R_203()) return true;
5802 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5805 if (jj_3R_204()) jj_scanpos = xsp;
5806 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5810 final private boolean jj_3R_68() {
5811 if (jj_scan_token(DOLLAR)) return true;
5812 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5813 if (jj_3R_122()) return true;
5814 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5818 final private boolean jj_3R_202() {
5819 if (jj_3R_207()) return true;
5820 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5824 final private boolean jj_3R_194() {
5825 if (jj_3R_116()) return true;
5826 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5829 if (jj_3R_202()) jj_scanpos = xsp;
5830 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5834 final private boolean jj_3R_102() {
5835 if (jj_scan_token(_ORL)) return true;
5836 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5840 final private boolean jj_3R_101() {
5841 if (jj_scan_token(OR_OR)) return true;
5842 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5846 final private boolean jj_3R_83() {
5851 if (jj_3R_102()) return true;
5852 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5853 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5854 if (jj_3R_81()) return true;
5855 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5859 final private boolean jj_3_1() {
5860 if (jj_3R_40()) return true;
5861 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5865 final private boolean jj_3R_201() {
5866 if (jj_3R_207()) return true;
5867 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5871 final private boolean jj_3R_76() {
5872 if (jj_3R_81()) return true;
5873 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5877 if (jj_3R_83()) { jj_scanpos = xsp; break; }
5878 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5883 final private boolean jj_3R_51() {
5884 if (jj_scan_token(COMMA)) return true;
5885 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5886 if (jj_3R_49()) return true;
5887 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5891 final private boolean jj_3R_200() {
5892 if (jj_scan_token(STATICCLASSACCESS)) return true;
5893 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5894 if (jj_3R_203()) return true;
5895 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5899 final private boolean jj_3R_116() {
5900 if (jj_3R_68()) return true;
5901 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5905 if (jj_3_1()) { jj_scanpos = xsp; break; }
5906 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5911 final private boolean jj_3R_45() {
5912 if (jj_3R_49()) return true;
5913 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5917 if (jj_3R_51()) { jj_scanpos = xsp; break; }
5918 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5923 final private boolean jj_3R_193() {
5924 if (jj_scan_token(IDENTIFIER)) return true;
5925 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5929 if (jj_3R_200()) { jj_scanpos = xsp; break; }
5930 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5933 if (jj_3R_201()) jj_scanpos = xsp;
5934 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5938 final private boolean jj_3R_187() {
5945 if (jj_3R_195()) return true;
5946 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5947 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5948 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5952 final private boolean jj_3R_73() {
5953 if (jj_3R_76()) return true;
5954 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5957 if (jj_3R_79()) jj_scanpos = xsp;
5958 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5962 final private boolean jj_3R_178() {
5963 if (jj_3R_188()) return true;
5964 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5968 final private boolean jj_3_5() {
5969 if (jj_3R_45()) return true;
5970 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5974 final private boolean jj_3R_186() {
5975 if (jj_scan_token(BIT_AND)) return true;
5976 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5980 final private boolean jj_3R_96() {
5981 if (jj_scan_token(TILDEEQUAL)) return true;
5982 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5986 final private boolean jj_3R_95() {
5987 if (jj_scan_token(DOTASSIGN)) return true;
5988 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5992 final private boolean jj_3R_173() {
5997 if (jj_3R_178()) return true;
5998 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
5999 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6003 final private boolean jj_3R_177() {
6006 if (jj_3R_186()) jj_scanpos = xsp;
6007 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6008 if (jj_3R_187()) return true;
6009 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6013 final private boolean jj_3R_94() {
6014 if (jj_scan_token(ORASSIGN)) return true;
6015 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6019 final private boolean jj_3R_93() {
6020 if (jj_scan_token(XORASSIGN)) return true;
6021 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6025 final private boolean jj_3R_92() {
6026 if (jj_scan_token(ANDASSIGN)) return true;
6027 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6031 final private boolean jj_3R_91() {
6032 if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true;
6033 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6037 final private boolean jj_3R_90() {
6038 if (jj_scan_token(LSHIFTASSIGN)) return true;
6039 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6043 final private boolean jj_3R_89() {
6044 if (jj_scan_token(MINUSASSIGN)) return true;
6045 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6049 final private boolean jj_3R_88() {
6050 if (jj_scan_token(PLUSASSIGN)) return true;
6051 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6055 final private boolean jj_3R_87() {
6056 if (jj_scan_token(REMASSIGN)) return true;
6057 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6061 final private boolean jj_3R_86() {
6062 if (jj_scan_token(SLASHASSIGN)) return true;
6063 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6067 final private boolean jj_3R_85() {
6068 if (jj_scan_token(STARASSIGN)) return true;
6069 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6073 final private boolean jj_3R_84() {
6074 if (jj_scan_token(ASSIGN)) return true;
6075 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6079 final private boolean jj_3R_80() {
6106 if (jj_3R_96()) return true;
6107 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6108 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6109 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6110 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6111 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6112 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6113 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6114 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6115 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6116 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6117 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6118 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6119 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6123 final private boolean jj_3R_197() {
6124 if (jj_scan_token(MINUS_MINUS)) return true;
6125 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6129 final private boolean jj_3R_196() {
6130 if (jj_scan_token(PLUS_PLUS)) return true;
6131 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6135 final private boolean jj_3R_191() {
6140 if (jj_3R_197()) return true;
6141 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6142 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6146 final private boolean jj_3R_175() {
6147 if (jj_3R_173()) return true;
6148 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6151 if (jj_3R_191()) jj_scanpos = xsp;
6152 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6156 final private boolean jj_3R_99() {
6157 if (jj_3R_105()) return true;
6158 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6162 final private boolean jj_3R_98() {
6163 if (jj_3R_104()) return true;
6164 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6168 final private boolean jj_3R_82() {
6173 if (jj_3R_99()) return true;
6174 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6175 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6179 final private boolean jj_3R_190() {
6180 if (jj_scan_token(ARRAY)) return true;
6181 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6185 final private boolean jj_3R_189() {
6186 if (jj_3R_50()) return true;
6187 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6191 final private boolean jj_3R_78() {
6192 if (jj_3R_82()) return true;
6193 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6197 final private boolean jj_3R_43() {
6198 if (jj_scan_token(ARRAY)) return true;
6199 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6203 final private boolean jj_3R_77() {
6204 if (jj_scan_token(BANG)) return true;
6205 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6206 if (jj_3R_74()) return true;
6207 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6211 final private boolean jj_3R_74() {
6216 if (jj_3R_78()) return true;
6217 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6218 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6222 final private boolean jj_3R_174() {
6223 if (jj_scan_token(LPAREN)) return true;
6224 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6229 if (jj_3R_190()) return true;
6230 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6231 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6232 if (jj_scan_token(RPAREN)) return true;
6233 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6234 if (jj_3R_144()) return true;
6235 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6239 final private boolean jj_3R_42() {
6240 if (jj_3R_50()) return true;
6241 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6245 final private boolean jj_3R_58() {
6246 if (jj_3R_74()) return true;
6247 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6251 final private boolean jj_3_3() {
6252 if (jj_scan_token(LPAREN)) return true;
6253 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6258 if (jj_3R_43()) return true;
6259 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6260 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6261 if (jj_scan_token(RPAREN)) return true;
6262 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6266 final private boolean jj_3R_172() {
6267 if (jj_scan_token(LPAREN)) return true;
6268 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6269 if (jj_3R_49()) return true;
6270 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6271 if (jj_scan_token(RPAREN)) return true;
6272 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6276 final private boolean jj_3R_171() {
6277 if (jj_3R_176()) return true;
6278 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6282 final private boolean jj_3R_170() {
6283 if (jj_3R_175()) return true;
6284 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6288 final private boolean jj_3R_166() {
6297 if (jj_3R_172()) return true;
6298 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6299 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6300 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6301 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6305 final private boolean jj_3R_169() {
6306 if (jj_3R_174()) return true;
6307 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6311 final private boolean jj_3R_44() {
6312 if (jj_3R_49()) return true;
6313 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6314 if (jj_scan_token(SEMICOLON)) return true;
6315 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6319 final private boolean jj_3R_168() {
6320 if (jj_scan_token(MINUS_MINUS)) return true;
6321 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6325 final private boolean jj_3R_167() {
6326 if (jj_scan_token(PLUS_PLUS)) return true;
6327 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6331 final private boolean jj_3R_75() {
6332 if (jj_3R_80()) return true;
6333 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6334 if (jj_3R_49()) return true;
6335 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6339 final private boolean jj_3R_165() {
6344 if (jj_3R_168()) return true;
6345 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6346 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6347 if (jj_3R_173()) return true;
6348 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6352 final private boolean jj_3R_49() {
6357 if (jj_3R_58()) return true;
6358 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6359 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6363 final private boolean jj_3R_57() {
6364 if (jj_3R_73()) return true;
6365 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6368 if (jj_3R_75()) jj_scanpos = xsp;
6369 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6373 final private boolean jj_3R_67() {
6374 if (jj_scan_token(OBJECT)) return true;
6375 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6379 final private boolean jj_3R_161() {
6380 if (jj_3R_166()) return true;
6381 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6385 final private boolean jj_3R_66() {
6386 if (jj_scan_token(INTEGER)) return true;
6387 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6391 final private boolean jj_3R_65() {
6392 if (jj_scan_token(INT)) return true;
6393 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6397 final private boolean jj_3R_64() {
6398 if (jj_scan_token(FLOAT)) return true;
6399 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6403 final private boolean jj_3R_160() {
6404 if (jj_3R_165()) return true;
6405 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6409 final private boolean jj_3R_63() {
6410 if (jj_scan_token(DOUBLE)) return true;
6411 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6415 final private boolean jj_3R_62() {
6416 if (jj_scan_token(REAL)) return true;
6417 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6421 final private boolean jj_3R_61() {
6422 if (jj_scan_token(BOOLEAN)) return true;
6423 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6427 final private boolean jj_3R_60() {
6428 if (jj_scan_token(BOOL)) return true;
6429 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6433 final private boolean jj_3R_159() {
6434 if (jj_scan_token(MINUS)) return true;
6435 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6436 if (jj_3R_148()) return true;
6437 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6441 final private boolean jj_3R_50() {
6460 if (jj_3R_67()) return true;
6461 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6462 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6463 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6464 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6465 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6466 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6467 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6468 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6469 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6473 final private boolean jj_3R_59() {
6474 if (jj_scan_token(STRING)) return true;
6475 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6479 final private boolean jj_3R_156() {
6488 if (jj_3R_161()) return true;
6489 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6490 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6491 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6492 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6496 final private boolean jj_3R_158() {
6497 if (jj_scan_token(PLUS)) return true;
6498 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6499 if (jj_3R_148()) return true;
6500 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6504 final private boolean jj_3_4() {
6505 if (jj_3R_44()) return true;
6506 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6510 final private boolean jj_3R_164() {
6511 if (jj_3R_156()) return true;
6512 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6516 final private boolean jj_3R_163() {
6517 if (jj_scan_token(BANG)) return true;
6518 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6519 if (jj_3R_157()) return true;
6520 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6524 final private boolean jj_3R_157() {
6531 if (jj_3R_164()) return true;
6532 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6533 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6534 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6538 final private boolean jj_3R_162() {
6539 if (jj_scan_token(AT)) return true;
6540 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6541 if (jj_3R_157()) return true;
6542 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6546 final private boolean jj_3R_155() {
6547 if (jj_3R_156()) return true;
6548 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6552 final private boolean jj_3R_216() {
6553 if (jj_scan_token(COMMA)) return true;
6554 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6555 if (jj_3R_49()) return true;
6556 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6560 final private boolean jj_3R_154() {
6561 if (jj_scan_token(BANG)) return true;
6562 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6563 if (jj_3R_157()) return true;
6564 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6568 final private boolean jj_3R_215() {
6569 if (jj_3R_49()) return true;
6570 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6574 if (jj_3R_216()) { jj_scanpos = xsp; break; }
6575 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6580 final private boolean jj_3R_153() {
6581 if (jj_scan_token(TILDE)) return true;
6582 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6583 if (jj_3R_148()) return true;
6584 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6588 final private boolean jj_3R_148() {
6597 if (jj_3R_155()) return true;
6598 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6599 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6600 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6601 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6605 final private boolean jj_3R_152() {
6606 if (jj_scan_token(AT)) return true;
6607 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6608 if (jj_3R_148()) return true;
6609 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6613 final private boolean jj_3R_213() {
6614 if (jj_3R_215()) return true;
6615 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6619 final private boolean jj_3R_144() {
6620 if (jj_3R_148()) return true;
6621 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6625 final private boolean jj_3R_151() {
6626 if (jj_scan_token(REMAINDER)) return true;
6627 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6631 final private boolean jj_3R_150() {
6632 if (jj_scan_token(SLASH)) return true;
6633 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6637 final private boolean jj_3R_149() {
6638 if (jj_scan_token(STAR)) return true;
6639 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6643 final private boolean jj_3R_207() {
6644 if (jj_scan_token(LPAREN)) return true;
6645 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6648 if (jj_3R_213()) jj_scanpos = xsp;
6649 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6650 if (jj_scan_token(RPAREN)) return true;
6651 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6655 final private boolean jj_3R_145() {
6662 if (jj_3R_151()) return true;
6663 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6664 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6665 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6666 if (jj_3R_144()) return true;
6667 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6671 final private boolean jj_3R_139() {
6672 if (jj_3R_144()) return true;
6673 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6677 if (jj_3R_145()) { jj_scanpos = xsp; break; }
6678 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6683 final private boolean jj_3R_212() {
6684 if (jj_scan_token(LBRACE1)) return true;
6685 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6686 if (jj_scan_token(ID)) return true;
6687 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6688 if (jj_scan_token(RBRACE1)) return true;
6689 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6693 final private boolean jj_3R_147() {
6694 if (jj_scan_token(MINUS)) return true;
6695 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6699 final private boolean jj_3R_211() {
6700 if (jj_scan_token(IDENTIFIER)) return true;
6701 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6705 final private boolean jj_3R_146() {
6706 if (jj_scan_token(PLUS)) return true;
6707 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6711 final private boolean jj_3R_140() {
6716 if (jj_3R_147()) return true;
6717 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6718 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6719 if (jj_3R_139()) return true;
6720 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6724 final private boolean jj_3R_199() {
6725 if (jj_scan_token(DOLLARS)) return true;
6726 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6731 if (jj_3R_212()) return true;
6732 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6733 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6737 final private boolean jj_3R_133() {
6738 if (jj_3R_139()) return true;
6739 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6743 if (jj_3R_140()) { jj_scanpos = xsp; break; }
6744 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6749 final private boolean jj_3R_192() {
6750 if (jj_scan_token(DOUBLEQUOTE)) return true;
6751 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6755 if (jj_3R_199()) { jj_scanpos = xsp; break; }
6756 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6758 if (jj_scan_token(DOUBLEQUOTE2)) return true;
6759 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6763 final private boolean jj_3R_113() {
6764 if (jj_scan_token(ASSIGN)) return true;
6765 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6766 if (jj_3R_49()) return true;
6767 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6771 final private boolean jj_3R_143() {
6772 if (jj_scan_token(RUNSIGNEDSHIFT)) return true;
6773 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6777 final private boolean jj_3R_142() {
6778 if (jj_scan_token(RSIGNEDSHIFT)) return true;
6779 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6783 final private boolean jj_3R_141() {
6784 if (jj_scan_token(LSHIFT)) return true;
6785 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6789 final private boolean jj_3R_185() {
6790 if (jj_3R_192()) return true;
6791 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6795 final private boolean jj_3R_184() {
6796 if (jj_scan_token(NULL)) return true;
6797 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6801 final private boolean jj_3R_134() {
6808 if (jj_3R_143()) return true;
6809 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6810 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6811 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6812 if (jj_3R_133()) return true;
6813 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6817 final private boolean jj_3R_183() {
6818 if (jj_scan_token(FALSE)) return true;
6819 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6823 final private boolean jj_3R_182() {
6824 if (jj_scan_token(TRUE)) return true;
6825 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6829 final private boolean jj_3R_123() {
6830 if (jj_3R_133()) return true;
6831 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6835 if (jj_3R_134()) { jj_scanpos = xsp; break; }
6836 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6841 final private boolean jj_3R_181() {
6842 if (jj_scan_token(STRING_LITERAL)) return true;
6843 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6847 final private boolean jj_3R_180() {
6848 if (jj_scan_token(FLOATING_POINT_LITERAL)) return true;
6849 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6853 final private boolean jj_3R_117() {
6854 if (jj_3R_116()) return true;
6855 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6859 final private boolean jj_3R_179() {
6860 if (jj_scan_token(INTEGER_LITERAL)) return true;
6861 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6865 final private boolean jj_3R_176() {
6880 if (jj_3R_185()) return true;
6881 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6882 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6883 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6884 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6885 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6886 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6887 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6891 final private boolean jj_3R_138() {
6892 if (jj_scan_token(GE)) return true;
6893 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6897 final private boolean jj_3R_137() {
6898 if (jj_scan_token(LE)) return true;
6899 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6903 final private boolean jj_3R_136() {
6904 if (jj_scan_token(GT)) return true;
6905 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6909 final private boolean jj_3R_112() {
6910 if (jj_scan_token(COMMA)) return true;
6911 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6914 if (jj_3R_117()) jj_scanpos = xsp;
6915 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6919 final private boolean jj_3R_135() {
6920 if (jj_scan_token(LT)) return true;
6921 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6925 final private boolean jj_3R_124() {
6934 if (jj_3R_138()) return true;
6935 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6936 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6937 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6938 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6939 if (jj_3R_123()) return true;
6940 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6944 final private boolean jj_3R_120() {
6945 if (jj_3R_123()) return true;
6946 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6950 if (jj_3R_124()) { jj_scanpos = xsp; break; }
6951 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6956 final private boolean jj_3R_111() {
6957 if (jj_3R_116()) return true;
6958 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6962 final private boolean jj_3R_72() {
6963 if (jj_3R_50()) return true;
6964 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6968 final private boolean jj_3R_71() {
6969 if (jj_3R_49()) return true;
6970 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6974 final private boolean jj_3R_56() {
6979 if (jj_3R_72()) return true;
6980 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6981 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6985 final private boolean jj_3R_48() {
6986 if (jj_scan_token(LBRACE)) return true;
6987 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6990 if (jj_3R_56()) jj_scanpos = xsp;
6991 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6992 if (jj_scan_token(RBRACE)) return true;
6993 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
6997 final private boolean jj_3R_104() {
6998 if (jj_scan_token(LIST)) return true;
6999 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7000 if (jj_scan_token(LPAREN)) return true;
7001 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7004 if (jj_3R_111()) jj_scanpos = xsp;
7005 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7008 if (jj_3R_112()) { jj_scanpos = xsp; break; }
7009 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7011 if (jj_scan_token(RPAREN)) return true;
7012 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7014 if (jj_3R_113()) jj_scanpos = xsp;
7015 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7019 final private boolean jj_3R_206() {
7020 if (jj_scan_token(COMMA)) return true;
7021 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7025 final private boolean jj_3R_70() {
7026 if (jj_3R_50()) return true;
7027 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7031 final private boolean jj_3_2() {
7032 if (jj_scan_token(COMMA)) return true;
7033 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7034 if (jj_3R_41()) return true;
7035 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7039 final private boolean jj_3R_55() {
7044 if (jj_3R_70()) return true;
7045 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7046 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7050 final private boolean jj_3R_69() {
7051 if (jj_3R_49()) return true;
7052 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7056 final private boolean jj_3R_205() {
7057 if (jj_3R_41()) return true;
7058 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7062 if (jj_3_2()) { jj_scanpos = xsp; break; }
7063 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7068 final private boolean jj_3R_47() {
7069 if (jj_scan_token(LBRACKET)) return true;
7070 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7073 if (jj_3R_55()) jj_scanpos = xsp;
7074 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7075 if (jj_scan_token(RBRACKET)) return true;
7076 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7080 final private boolean jj_3R_129() {
7081 if (jj_scan_token(TRIPLEEQUAL)) return true;
7082 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7086 final private boolean jj_3R_128() {
7087 if (jj_scan_token(BANGDOUBLEEQUAL)) return true;
7088 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7092 final private boolean jj_3R_127() {
7093 if (jj_scan_token(NOT_EQUAL)) return true;
7094 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7098 final private boolean jj_3R_126() {
7099 if (jj_scan_token(DIF)) return true;
7100 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7104 final private boolean jj_3R_105() {
7105 if (jj_scan_token(PRINT)) return true;
7106 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7107 if (jj_3R_49()) return true;
7108 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7112 final private boolean jj_3R_198() {
7113 if (jj_scan_token(LPAREN)) return true;
7114 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7117 if (jj_3R_205()) jj_scanpos = xsp;
7118 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7120 if (jj_3R_206()) jj_scanpos = xsp;
7121 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7122 if (jj_scan_token(RPAREN)) return true;
7123 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7127 final private boolean jj_3R_125() {
7128 if (jj_scan_token(EQUAL_EQUAL)) return true;
7129 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7133 final private boolean jj_3R_54() {
7134 if (jj_3R_68()) return true;
7135 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7139 final private boolean jj_3R_121() {
7150 if (jj_3R_129()) return true;
7151 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7152 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7153 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7154 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7155 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7156 if (jj_3R_120()) return true;
7157 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7161 final private boolean jj_3R_53() {
7162 if (jj_scan_token(IDENTIFIER)) return true;
7163 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7167 final private boolean jj_3R_118() {
7168 if (jj_3R_120()) return true;
7169 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7173 if (jj_3R_121()) { jj_scanpos = xsp; break; }
7174 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7179 final private boolean jj_3R_214() {
7180 if (jj_scan_token(ARRAYASSIGN)) return true;
7181 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7182 if (jj_3R_49()) return true;
7183 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7187 final private boolean jj_3R_52() {
7188 if (jj_scan_token(LBRACE)) return true;
7189 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7190 if (jj_3R_49()) return true;
7191 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7192 if (jj_scan_token(RBRACE)) return true;
7193 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7197 final private boolean jj_3R_41() {
7198 if (jj_3R_49()) return true;
7199 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7202 if (jj_3R_214()) jj_scanpos = xsp;
7203 else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7207 final private boolean jj_3R_119() {
7208 if (jj_scan_token(BIT_AND)) return true;
7209 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7210 if (jj_3R_118()) return true;
7211 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7215 final private boolean jj_3R_46() {
7216 if (jj_scan_token(CLASSACCESS)) return true;
7217 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7224 if (jj_3R_54()) return true;
7225 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7226 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7227 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7231 final private boolean jj_3R_40() {
7238 if (jj_3R_48()) return true;
7239 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7240 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7241 } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7245 final private boolean jj_3R_114() {
7246 if (jj_3R_118()) return true;
7247 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7251 if (jj_3R_119()) { jj_scanpos = xsp; break; }
7252 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7257 final private boolean jj_3R_115() {
7258 if (jj_scan_token(XOR)) return true;
7259 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7260 if (jj_3R_114()) return true;
7261 if (jj_la == 0 && jj_scanpos == jj_lastpos) return false;
7265 public PHPParserTokenManager token_source;
7266 SimpleCharStream jj_input_stream;
7267 public Token token, jj_nt;
7269 private Token jj_scanpos, jj_lastpos;
7271 public boolean lookingAhead = false;
7272 private boolean jj_semLA;
7274 final private int[] jj_la1 = new int[128];
7275 static private int[] jj_la1_0;
7276 static private int[] jj_la1_1;
7277 static private int[] jj_la1_2;
7278 static private int[] jj_la1_3;
7279 static private int[] jj_la1_4;
7287 private static void jj_la1_0() {
7288 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,};
7290 private static void jj_la1_1() {
7291 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,};
7293 private static void jj_la1_2() {
7294 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,};
7296 private static void jj_la1_3() {
7297 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,};
7299 private static void jj_la1_4() {
7300 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,};
7302 final private JJCalls[] jj_2_rtns = new JJCalls[5];
7303 private boolean jj_rescan = false;
7304 private int jj_gc = 0;
7306 public PHPParser(java.io.InputStream stream) {
7307 jj_input_stream = new SimpleCharStream(stream, 1, 1);
7308 token_source = new PHPParserTokenManager(jj_input_stream);
7309 token = new Token();
7312 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7313 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7316 public void ReInit(java.io.InputStream stream) {
7317 jj_input_stream.ReInit(stream, 1, 1);
7318 token_source.ReInit(jj_input_stream);
7319 token = new Token();
7322 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7323 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7326 public PHPParser(java.io.Reader stream) {
7327 jj_input_stream = new SimpleCharStream(stream, 1, 1);
7328 token_source = new PHPParserTokenManager(jj_input_stream);
7329 token = new Token();
7332 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7333 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7336 public void ReInit(java.io.Reader stream) {
7337 jj_input_stream.ReInit(stream, 1, 1);
7338 token_source.ReInit(jj_input_stream);
7339 token = new Token();
7342 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7343 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7346 public PHPParser(PHPParserTokenManager tm) {
7348 token = new Token();
7351 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7352 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7355 public void ReInit(PHPParserTokenManager tm) {
7357 token = new Token();
7360 for (int i = 0; i < 128; i++) jj_la1[i] = -1;
7361 for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
7364 final private Token jj_consume_token(int kind) throws ParseException {
7366 if ((oldToken = token).next != null) token = token.next;
7367 else token = token.next = token_source.getNextToken();
7369 if (token.kind == kind) {
7371 if (++jj_gc > 100) {
7373 for (int i = 0; i < jj_2_rtns.length; i++) {
7374 JJCalls c = jj_2_rtns[i];
7376 if (c.gen < jj_gen) c.first = null;
7385 throw generateParseException();
7388 final private boolean jj_scan_token(int kind) {
7389 if (jj_scanpos == jj_lastpos) {
7391 if (jj_scanpos.next == null) {
7392 jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken();
7394 jj_lastpos = jj_scanpos = jj_scanpos.next;
7397 jj_scanpos = jj_scanpos.next;
7400 int i = 0; Token tok = token;
7401 while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; }
7402 if (tok != null) jj_add_error_token(kind, i);
7404 return (jj_scanpos.kind != kind);
7407 final public Token getNextToken() {
7408 if (token.next != null) token = token.next;
7409 else token = token.next = token_source.getNextToken();
7415 final public Token getToken(int index) {
7416 Token t = lookingAhead ? jj_scanpos : token;
7417 for (int i = 0; i < index; i++) {
7418 if (t.next != null) t = t.next;
7419 else t = t.next = token_source.getNextToken();
7424 final private int jj_ntk() {
7425 if ((jj_nt=token.next) == null)
7426 return (jj_ntk = (token.next=token_source.getNextToken()).kind);
7428 return (jj_ntk = jj_nt.kind);
7431 private java.util.Vector jj_expentries = new java.util.Vector();
7432 private int[] jj_expentry;
7433 private int jj_kind = -1;
7434 private int[] jj_lasttokens = new int[100];
7435 private int jj_endpos;
7437 private void jj_add_error_token(int kind, int pos) {
7438 if (pos >= 100) return;
7439 if (pos == jj_endpos + 1) {
7440 jj_lasttokens[jj_endpos++] = kind;
7441 } else if (jj_endpos != 0) {
7442 jj_expentry = new int[jj_endpos];
7443 for (int i = 0; i < jj_endpos; i++) {
7444 jj_expentry[i] = jj_lasttokens[i];
7446 boolean exists = false;
7447 for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) {
7448 int[] oldentry = (int[])(enum.nextElement());
7449 if (oldentry.length == jj_expentry.length) {
7451 for (int i = 0; i < jj_expentry.length; i++) {
7452 if (oldentry[i] != jj_expentry[i]) {
7460 if (!exists) jj_expentries.addElement(jj_expentry);
7461 if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind;
7465 public ParseException generateParseException() {
7466 jj_expentries.removeAllElements();
7467 boolean[] la1tokens = new boolean[160];
7468 for (int i = 0; i < 160; i++) {
7469 la1tokens[i] = false;
7472 la1tokens[jj_kind] = true;
7475 for (int i = 0; i < 128; i++) {
7476 if (jj_la1[i] == jj_gen) {
7477 for (int j = 0; j < 32; j++) {
7478 if ((jj_la1_0[i] & (1<<j)) != 0) {
7479 la1tokens[j] = true;
7481 if ((jj_la1_1[i] & (1<<j)) != 0) {
7482 la1tokens[32+j] = true;
7484 if ((jj_la1_2[i] & (1<<j)) != 0) {
7485 la1tokens[64+j] = true;
7487 if ((jj_la1_3[i] & (1<<j)) != 0) {
7488 la1tokens[96+j] = true;
7490 if ((jj_la1_4[i] & (1<<j)) != 0) {
7491 la1tokens[128+j] = true;
7496 for (int i = 0; i < 160; i++) {
7498 jj_expentry = new int[1];
7500 jj_expentries.addElement(jj_expentry);
7505 jj_add_error_token(0, 0);
7506 int[][] exptokseq = new int[jj_expentries.size()][];
7507 for (int i = 0; i < jj_expentries.size(); i++) {
7508 exptokseq[i] = (int[])jj_expentries.elementAt(i);
7510 return new ParseException(token, exptokseq, tokenImage);
7513 final public void enable_tracing() {
7516 final public void disable_tracing() {
7519 final private void jj_rescan_token() {
7521 for (int i = 0; i < 5; i++) {
7522 JJCalls p = jj_2_rtns[i];
7524 if (p.gen > jj_gen) {
7525 jj_la = p.arg; jj_lastpos = jj_scanpos = p.first;
7527 case 0: jj_3_1(); break;
7528 case 1: jj_3_2(); break;
7529 case 2: jj_3_3(); break;
7530 case 3: jj_3_4(); break;
7531 case 4: jj_3_5(); break;
7535 } while (p != null);
7540 final private void jj_save(int index, int xla) {
7541 JJCalls p = jj_2_rtns[index];
7542 while (p.gen > jj_gen) {
7543 if (p.next == null) { p = p.next = new JJCalls(); break; }
7546 p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla;
7549 static final class JJCalls {