From 5d632d5e3b8305104b7d2ea12955f539d267c4de Mon Sep 17 00:00:00 2001 From: kpouer Date: Thu, 1 May 2003 13:12:37 +0000 Subject: [PATCH] *** empty log message *** --- net.sourceforge.phpeclipse/src/test/PHPParser.java | 3806 +++++++++++--------- net.sourceforge.phpeclipse/src/test/PHPParser.jj | 1618 +++++---- .../src/test/PHPParserConstants.java | 174 +- .../src/test/PHPParserTokenManager.java | 403 ++- .../src/test/SimpleCharStream.java | 4 + 5 files changed, 3351 insertions(+), 2654 deletions(-) diff --git a/net.sourceforge.phpeclipse/src/test/PHPParser.java b/net.sourceforge.phpeclipse/src/test/PHPParser.java index bc7c112..f7bc34d 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.java +++ b/net.sourceforge.phpeclipse/src/test/PHPParser.java @@ -9,14 +9,16 @@ import org.eclipse.jface.preference.IPreferenceStore; import java.util.Hashtable; import java.util.Enumeration; +import java.util.ArrayList; import java.io.StringReader; import java.io.*; import java.text.MessageFormat; import net.sourceforge.phpeclipse.actions.PHPStartApacheAction; import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpdt.internal.compiler.parser.*; import net.sourceforge.phpdt.internal.compiler.ast.*; +import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren; +import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo; /** * A new php parser. @@ -31,13 +33,13 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon private static IFile fileToParse; /** The current segment. */ - private static PHPSegmentWithChildren currentSegment; + private static OutlineableWithChildren currentSegment; private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$ private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$ static PHPOutlineInfo outlineInfo; - private static PHPFunctionDeclaration currentFunction; + public static MethodDeclaration currentFunction; private static boolean assigning; /** The error level of the current ParseException. */ @@ -47,13 +49,19 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon private static int errorStart = -1; private static int errorEnd = -1; + private static PHPDocument phpDocument; + /** + * The point where html starts. + * It will be used by the token manager to create HTMLCode objects + */ + public static int htmlStart; //ast stack private final static int AstStackIncrement = 100; /** The stack of node. */ - private static AstNode[] astStack; + private static AstNode[] nodes; /** The cursor in expression stack. */ - private static int expressionPtr; + private static int nodePtr; public final void setFileToParse(final IFile fileToParse) { this.fileToParse = fileToParse; @@ -67,6 +75,32 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon this.fileToParse = fileToParse; } + /** + * Reinitialize the parser. + */ + private static final void init() { + nodes = new AstNode[AstStackIncrement]; + nodePtr = -1; + htmlStart = 0; + } + + /** + * Add an php node on the stack. + * @param node the node that will be added to the stack + */ + private static final void pushOnAstNodes(AstNode node) { + try { + nodes[++nodePtr] = node; + } catch (IndexOutOfBoundsException e) { + int oldStackLength = nodes.length; + AstNode[] oldStack = nodes; + nodes = new AstNode[oldStackLength + AstStackIncrement]; + System.arraycopy(oldStack, 0, nodes, 0, oldStackLength); + nodePtr = oldStackLength; + nodes[nodePtr] = node; + } + } + public static final void phpParserTester(final String strEval) throws CoreException, ParseException { PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING); final StringReader stream = new StringReader(strEval); @@ -74,7 +108,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_input_stream = new SimpleCharStream(stream, 1, 1); } ReInit(new StringReader(strEval)); - astStack = new AstNode[AstStackIncrement]; + init(); phpTest(); } @@ -85,7 +119,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_input_stream = new SimpleCharStream(stream, 1, 1); } ReInit(stream); - astStack = new AstNode[AstStackIncrement]; + init(); phpFile(); } catch (FileNotFoundException e) { e.printStackTrace(); //To change body of catch statement use Options | File Templates. @@ -98,21 +132,22 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_input_stream = new SimpleCharStream(stream, 1, 1); } ReInit(stream); - astStack = new AstNode[AstStackIncrement]; + init(); phpFile(); } public final PHPOutlineInfo parseInfo(final Object parent, final String s) { + currentSegment = new PHPDocument(parent); outlineInfo = new PHPOutlineInfo(parent); - currentSegment = outlineInfo.getDeclarations(); final StringReader stream = new StringReader(s); if (jj_input_stream == null) { jj_input_stream = new SimpleCharStream(stream, 1, 1); } ReInit(stream); - astStack = new AstNode[AstStackIncrement]; + init(); try { parse(); + //PHPeclipsePlugin.log(1,phpDocument.toString()); } catch (ParseException e) { processParseException(e); } @@ -235,7 +270,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_input_stream = new SimpleCharStream(stream, 1, 1); } ReInit(stream); - astStack = new AstNode[AstStackIncrement]; + init(); try { parse(); } catch (ParseException e) { @@ -265,6 +300,18 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } } + /** + * Put a new html block in the stack. + */ + public static final void createNewHTMLCode() { + final int currentPosition = SimpleCharStream.getPosition(); + if (currentPosition == htmlStart) { + return; + } + final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition).toCharArray(); + pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition)); + } + private static final void parse() throws ParseException { phpFile(); } @@ -272,6 +319,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon static final public void phpTest() throws ParseException { Php(); jj_consume_token(0); + PHPParser.createNewHTMLCode(); } static final public void phpFile() throws ParseException { @@ -308,13 +356,6 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -323,6 +364,13 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; @@ -382,13 +430,6 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -397,6 +438,13 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPSTARTSHORT: @@ -446,9 +494,12 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } } - static final public void phpEchoBlock() throws ParseException { + static final public PHPEchoBlock phpEchoBlock() throws ParseException { + final Expression expr; + final int pos = SimpleCharStream.getPosition(); + PHPEchoBlock echoBlock; jj_consume_token(PHPECHOSTART); - Expression(); + expr = Expression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case SEMICOLON: jj_consume_token(SEMICOLON); @@ -458,6 +509,10 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon ; } jj_consume_token(PHPEND); + echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition()); + pushOnAstNodes(echoBlock); + {if (true) return echoBlock;} + throw new Error("Missing return statement in function"); } static final public void Php() throws ParseException { @@ -489,13 +544,6 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -504,6 +552,13 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; @@ -515,9 +570,10 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } } - static final public void ClassDeclaration() throws ParseException { - final PHPClassDeclaration classDeclaration; + static final public ClassDeclaration ClassDeclaration() throws ParseException { + final ClassDeclaration classDeclaration; final Token className; + Token superclassName = null; final int pos; jj_consume_token(CLASS); try { @@ -534,7 +590,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon case EXTENDS: jj_consume_token(EXTENDS); try { - jj_consume_token(IDENTIFIER); + superclassName = jj_consume_token(IDENTIFIER); } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; errorLevel = ERROR; @@ -547,18 +603,29 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_la1[6] = jj_gen; ; } - if (currentSegment != null) { - classDeclaration = new PHPClassDeclaration(currentSegment,className.image,pos); + if (superclassName == null) { + classDeclaration = new ClassDeclaration(currentSegment, + className.image.toCharArray(), + superclassName.image.toCharArray(), + pos, + 0); + } else { + classDeclaration = new ClassDeclaration(currentSegment, + className.image.toCharArray(), + pos, + 0); + } currentSegment.add(classDeclaration); currentSegment = classDeclaration; - } - ClassBody(); - if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); - } + ClassBody(classDeclaration); + currentSegment = (OutlineableWithChildren) currentSegment.getParent(); + classDeclaration.sourceEnd = SimpleCharStream.getPosition(); + pushOnAstNodes(classDeclaration); + {if (true) return classDeclaration;} + throw new Error("Missing return statement in function"); } - static final public void ClassBody() throws ParseException { + static final public void ClassBody(ClassDeclaration classDeclaration) throws ParseException { try { jj_consume_token(LBRACE); } catch (ParseException e) { @@ -579,7 +646,7 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_la1[7] = jj_gen; break label_3; } - ClassBodyDeclaration(); + ClassBodyDeclaration(classDeclaration); } try { jj_consume_token(RBRACE); @@ -595,13 +662,17 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon /** * A class can contain only methods and fields. */ - static final public void ClassBodyDeclaration() throws ParseException { + static final public void ClassBodyDeclaration(ClassDeclaration classDeclaration) throws ParseException { + MethodDeclaration method; + FieldDeclaration field; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case FUNCTION: - MethodDeclaration(); + method = MethodDeclaration(); + classDeclaration.addMethod(method); break; case VAR: - FieldDeclaration(); + field = FieldDeclaration(); + classDeclaration.addVariable(field); break; default: jj_la1[8] = jj_gen; @@ -613,11 +684,11 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon /** * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;. */ - static final public void FieldDeclaration() throws ParseException { - PHPVarDeclaration variableDeclaration; + static final public FieldDeclaration FieldDeclaration() throws ParseException { + VariableDeclaration variableDeclaration; jj_consume_token(VAR); variableDeclaration = VariableDeclarator(); - outlineInfo.addVariable(variableDeclaration.getVariable().getName()); + outlineInfo.addVariable(new String(variableDeclaration.name)); if (currentSegment != null) { currentSegment.add(variableDeclaration); } @@ -646,18 +717,19 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public PHPVarDeclaration VariableDeclarator() throws ParseException { + static final public VariableDeclaration VariableDeclarator() throws ParseException { final String varName, varValue; + Expression initializer = null; final int pos = jj_input_stream.getPosition(); varName = VariableDeclaratorId(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASSIGN: jj_consume_token(ASSIGN); try { - varValue = VariableInitializer(); - {if (true) return new PHPVarDeclaration(currentSegment,varName,pos,varValue);} + initializer = VariableInitializer(); } catch (ParseException e) { errorMessage = "Literal expression expected in variable initializer"; errorLevel = ERROR; @@ -670,13 +742,23 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon jj_la1[10] = jj_gen; ; } - {if (true) return new PHPVarDeclaration(currentSegment,varName,pos);} + {if (true) return new VariableDeclaration(currentSegment, + varName.toCharArray(), + initializer, + pos);} throw new Error("Missing return statement in function"); } +/** + * A Variable name. + * @return the variable name (with suffix) + */ static final public String VariableDeclaratorId() throws ParseException { String expr; + Expression expression; final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); + ConstantIdentifier ex; try { expr = Variable(); buff.append(expr); @@ -687,8 +769,11 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } else { break label_5; } - expr = VariableSuffix(); - buff.append(expr); + ex = new ConstantIdentifier(expr.toCharArray(), + pos, + SimpleCharStream.getPosition()); + expression = VariableSuffix(ex); + buff.append(expression.toStringExpression()); } {if (true) return buff.toString();} } catch (ParseException e) { @@ -702,31 +787,31 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } static final public String Variable() throws ParseException { - String expr = null; + final StringBuffer buff; + Expression expression = null; final Token token; + final String expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case DOLLAR_ID: token = jj_consume_token(DOLLAR_ID); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACE: jj_consume_token(LBRACE); - expr = Expression(); + expression = Expression(); jj_consume_token(RBRACE); break; default: jj_la1[11] = jj_gen; ; } - if (expr == null && !assigning) { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image.substring(1)); - if (var != null) { - var.getVariable().setUsed(true); - } - } + if (expression == null && !assigning) { {if (true) return token.image.substring(1);} } - {if (true) return token + "{" + expr + "}";} + buff = new StringBuffer(token.image); + buff.append('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + {if (true) return buff.toString();} break; case DOLLAR: jj_consume_token(DOLLAR); @@ -742,58 +827,51 @@ public final class PHPParser extends PHPParserSuperclass implements PHPParserCon } static final public String VariableName() throws ParseException { -String expr = null; -final Token token; + final StringBuffer buff; + String expr = null; + Expression expression = null; + final Token token; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACE: jj_consume_token(LBRACE); - expr = Expression(); + expression = Expression(); jj_consume_token(RBRACE); - {if (true) return "{"+expr+"}";} + buff = new StringBuffer('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + {if (true) return buff.toString();} break; case IDENTIFIER: token = jj_consume_token(IDENTIFIER); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACE: jj_consume_token(LBRACE); - expr = Expression(); + expression = Expression(); jj_consume_token(RBRACE); break; default: jj_la1[13] = jj_gen; ; } - if (expr == null) { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image); - if (var != null) { - var.getVariable().setUsed(true); - } - } + if (expression == null) { {if (true) return token.image;} } - {if (true) return token + "{" + expr + "}";} + buff = new StringBuffer(token.image); + buff.append('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + {if (true) return buff.toString();} break; case DOLLAR: jj_consume_token(DOLLAR); expr = VariableName(); - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(expr); - if (var != null) { - var.getVariable().setUsed(true); - } - } - {if (true) return "$" + expr;} + buff = new StringBuffer('$'); + buff.append(expr); + {if (true) return buff.toString();} break; case DOLLAR_ID: token = jj_consume_token(DOLLAR_ID); - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image.substring(1)); - if (var != null) { - var.getVariable().setUsed(true); - } - } - {if (true) return token.image + expr;} + {if (true) return token.image;} break; default: jj_la1[14] = jj_gen; @@ -803,9 +881,10 @@ final Token token; throw new Error("Missing return statement in function"); } - static final public String VariableInitializer() throws ParseException { - final String expr; + static final public Expression VariableInitializer() throws ParseException { + final Expression expr; final Token token; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NULL: case TRUE: @@ -830,7 +909,11 @@ final Token token; jj_consume_token(-1); throw new ParseException(); } - {if (true) return "-" + token.image;} + {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + OperatorIds.MINUS, + pos);} break; case PLUS: jj_consume_token(PLUS); @@ -846,7 +929,11 @@ final Token token; jj_consume_token(-1); throw new ParseException(); } - {if (true) return "+" + token.image;} + {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + OperatorIds.PLUS, + pos);} break; case ARRAY: expr = ArrayDeclarator(); @@ -854,7 +941,7 @@ final Token token; break; case IDENTIFIER: token = jj_consume_token(IDENTIFIER); - {if (true) return token.image;} + {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());} break; default: jj_la1[17] = jj_gen; @@ -864,28 +951,26 @@ final Token token; throw new Error("Missing return statement in function"); } - static final public String ArrayVariable() throws ParseException { -String expr; -final StringBuffer buff = new StringBuffer(); + static final public ArrayVariableDeclaration ArrayVariable() throws ParseException { +Expression expr; +Expression expr2 = null; expr = Expression(); - buff.append(expr); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAYASSIGN: jj_consume_token(ARRAYASSIGN); - expr = Expression(); - buff.append("=>").append(expr); + expr2 = Expression(); break; default: jj_la1[18] = jj_gen; ; } - {if (true) return buff.toString();} + {if (true) return new ArrayVariableDeclaration(expr,expr2);} throw new Error("Missing return statement in function"); } - static final public String ArrayInitializer() throws ParseException { -String expr; -final StringBuffer buff = new StringBuffer("("); + static final public ArrayVariableDeclaration[] ArrayInitializer() throws ParseException { + ArrayVariableDeclaration expr; + final ArrayList list = new ArrayList(); jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: @@ -895,11 +980,6 @@ final StringBuffer buff = new StringBuffer("("); case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -908,9 +988,14 @@ final StringBuffer buff = new StringBuffer("("); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: expr = ArrayVariable(); - buff.append(expr); + list.add(expr); label_6: while (true) { if (jj_2_2(2)) { @@ -920,7 +1005,7 @@ final StringBuffer buff = new StringBuffer("("); } jj_consume_token(COMMA); expr = ArrayVariable(); - buff.append(",").append(expr); + list.add(expr); } break; default: @@ -930,15 +1015,14 @@ final StringBuffer buff = new StringBuffer("("); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: jj_consume_token(COMMA); - buff.append(","); + list.add(null); break; default: jj_la1[20] = jj_gen; ; } jj_consume_token(RPAREN); - buff.append(")"); - {if (true) return buff.toString();} + {if (true) return (ArrayVariableDeclaration[]) list.toArray();} throw new Error("Missing return statement in function"); } @@ -946,13 +1030,14 @@ final StringBuffer buff = new StringBuffer("("); * A Method Declaration. * function MetodDeclarator() Block() */ - static final public void MethodDeclaration() throws ParseException { - final PHPFunctionDeclaration functionDeclaration; + static final public MethodDeclaration MethodDeclaration() throws ParseException { + final MethodDeclaration functionDeclaration; Token functionToken; + final Block block; functionToken = jj_consume_token(FUNCTION); try { functionDeclaration = MethodDeclarator(); - outlineInfo.addVariable(functionDeclaration.getName()); + outlineInfo.addVariable(new String(functionDeclaration.name)); } catch (ParseException e) { if (errorMessage != null) { {if (true) throw e;} @@ -968,27 +1053,14 @@ final StringBuffer buff = new StringBuffer("("); currentSegment = functionDeclaration; } currentFunction = functionDeclaration; - Block(); - Hashtable parameters = currentFunction.getParameters(); - Enumeration vars = parameters.elements(); - while (vars.hasMoreElements()) { - PHPVarDeclaration o = (PHPVarDeclaration) vars.nextElement(); - if (!o.getVariable().isUsed()) { - try { - setMarker(fileToParse, - "Parameter "+o.getVariable().getName()+" is never used in function", - functionToken.beginLine, - WARNING, - "Line " + token.beginLine); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } - } + block = Block(); + functionDeclaration.statements = block.statements; currentFunction = null; if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); + currentSegment = (OutlineableWithChildren) currentSegment.getParent(); } + {if (true) return functionDeclaration;} + throw new Error("Missing return statement in function"); } /** @@ -996,15 +1068,14 @@ final StringBuffer buff = new StringBuffer("("); * [&] IDENTIFIER(parameters ...). * @return a function description for the outline */ - static final public PHPFunctionDeclaration MethodDeclarator() throws ParseException { + static final public MethodDeclaration MethodDeclarator() throws ParseException { final Token identifier; - final StringBuffer methodDeclaration = new StringBuffer(); + Token reference = null; final Hashtable formalParameters; - final int pos = jj_input_stream.getPosition(); + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BIT_AND: - jj_consume_token(BIT_AND); - methodDeclaration.append("&"); + reference = jj_consume_token(BIT_AND); break; default: jj_la1[21] = jj_gen; @@ -1012,8 +1083,12 @@ final StringBuffer buff = new StringBuffer("("); } identifier = jj_consume_token(IDENTIFIER); formalParameters = FormalParameters(); - methodDeclaration.append(identifier); - {if (true) return new PHPFunctionDeclaration(currentSegment,methodDeclaration.toString(),pos,formalParameters);} + {if (true) return new MethodDeclaration(currentSegment, + identifier.image.toCharArray(), + formalParameters, + reference != null, + pos, + SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } @@ -1024,7 +1099,7 @@ final StringBuffer buff = new StringBuffer("("); static final public Hashtable FormalParameters() throws ParseException { String expr; final StringBuffer buff = new StringBuffer("("); - PHPVarDeclaration var; + VariableDeclaration var; final Hashtable parameters = new Hashtable(); try { jj_consume_token(LPAREN); @@ -1040,7 +1115,7 @@ final StringBuffer buff = new StringBuffer("("); case BIT_AND: case DOLLAR_ID: var = FormalParameter(); - parameters.put(var.getVariable().getName(),var); + parameters.put(new String(var.name),var); label_7: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1053,7 +1128,7 @@ final StringBuffer buff = new StringBuffer("("); } jj_consume_token(COMMA); var = FormalParameter(); - parameters.put(var.getVariable().getName(),var); + parameters.put(new String(var.name),var); } break; default: @@ -1077,8 +1152,8 @@ final StringBuffer buff = new StringBuffer("("); * A formal parameter. * $varname[=value] (,$varname[=value]) */ - static final public PHPVarDeclaration FormalParameter() throws ParseException { - final PHPVarDeclaration variableDeclaration; + static final public VariableDeclaration FormalParameter() throws ParseException { + final VariableDeclaration variableDeclaration; Token token = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BIT_AND: @@ -1090,49 +1165,68 @@ final StringBuffer buff = new StringBuffer("("); } variableDeclaration = VariableDeclarator(); if (token != null) { - variableDeclaration.getVariable().setReference(true); + variableDeclaration.setReference(true); } {if (true) return variableDeclaration;} throw new Error("Missing return statement in function"); } - static final public String Type() throws ParseException { + static final public ConstantIdentifier Type() throws ParseException { + final int pos; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STRING: jj_consume_token(STRING); - {if (true) return "string";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.STRING, + pos,pos-6);} break; case BOOL: jj_consume_token(BOOL); - {if (true) return "bool";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.BOOL, + pos,pos-4);} break; case BOOLEAN: jj_consume_token(BOOLEAN); - {if (true) return "boolean";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.BOOLEAN, + pos,pos-7);} break; case REAL: jj_consume_token(REAL); - {if (true) return "real";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.REAL, + pos,pos-4);} break; case DOUBLE: jj_consume_token(DOUBLE); - {if (true) return "double";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.DOUBLE, + pos,pos-5);} break; case FLOAT: jj_consume_token(FLOAT); - {if (true) return "float";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.FLOAT, + pos,pos-5);} break; case INT: jj_consume_token(INT); - {if (true) return "int";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.INT, + pos,pos-3);} break; case INTEGER: jj_consume_token(INTEGER); - {if (true) return "integer";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.INTEGER, + pos,pos-7);} break; case OBJECT: jj_consume_token(OBJECT); - {if (true) return "object";} + pos = SimpleCharStream.getPosition(); + {if (true) return new ConstantIdentifier(Types.OBJECT, + pos,pos-6);} break; default: jj_la1[25] = jj_gen; @@ -1142,10 +1236,8 @@ final StringBuffer buff = new StringBuffer("("); throw new Error("Missing return statement in function"); } - static final public String Expression() throws ParseException { - final String expr; - final String assignOperator; - final String expr2; + static final public Expression Expression() throws ParseException { + final Expression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PRINT: expr = PrintExpression(); @@ -1167,11 +1259,6 @@ final StringBuffer buff = new StringBuffer("("); case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -1180,6 +1267,11 @@ final StringBuffer buff = new StringBuffer("("); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: expr = ConditionalExpression(); {if (true) return expr;} @@ -1198,14 +1290,15 @@ final StringBuffer buff = new StringBuffer("("); * A Variable assignation. * varName (an assign operator) any expression */ - static final public String varAssignation() throws ParseException { - String varName,assignOperator,expr2; - PHPVarDeclaration variable; + static final public VarAssignation varAssignation() throws ParseException { + String varName; + final Expression expression; + final int assignOperator; final int pos = SimpleCharStream.getPosition(); varName = VariableDeclaratorId(); assignOperator = AssignmentOperator(); try { - expr2 = Expression(); + expression = Expression(); } catch (ParseException e) { if (errorMessage != null) { {if (true) throw e;} @@ -1216,63 +1309,67 @@ final StringBuffer buff = new StringBuffer("("); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - {if (true) return varName + assignOperator + expr2;} + {if (true) return new VarAssignation(varName.toCharArray(), + expression, + assignOperator, + pos, + SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public String AssignmentOperator() throws ParseException { + static final public int AssignmentOperator() throws ParseException { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASSIGN: jj_consume_token(ASSIGN); - {if (true) return "=";} + {if (true) return VarAssignation.EQUAL;} break; case STARASSIGN: jj_consume_token(STARASSIGN); - {if (true) return "*=";} + {if (true) return VarAssignation.STAR_EQUAL;} break; case SLASHASSIGN: jj_consume_token(SLASHASSIGN); - {if (true) return "/=";} + {if (true) return VarAssignation.SLASH_EQUAL;} break; case REMASSIGN: jj_consume_token(REMASSIGN); - {if (true) return "%=";} + {if (true) return VarAssignation.REM_EQUAL;} break; case PLUSASSIGN: jj_consume_token(PLUSASSIGN); - {if (true) return "+=";} + {if (true) return VarAssignation.PLUS_EQUAL;} break; case MINUSASSIGN: jj_consume_token(MINUSASSIGN); - {if (true) return "-=";} + {if (true) return VarAssignation.MINUS_EQUAL;} break; case LSHIFTASSIGN: jj_consume_token(LSHIFTASSIGN); - {if (true) return "<<=";} + {if (true) return VarAssignation.LSHIFT_EQUAL;} break; case RSIGNEDSHIFTASSIGN: jj_consume_token(RSIGNEDSHIFTASSIGN); - {if (true) return ">>=";} + {if (true) return VarAssignation.RSIGNEDSHIFT_EQUAL;} break; case ANDASSIGN: jj_consume_token(ANDASSIGN); - {if (true) return "&=";} + {if (true) return VarAssignation.AND_EQUAL;} break; case XORASSIGN: jj_consume_token(XORASSIGN); - {if (true) return "|=";} + {if (true) return VarAssignation.XOR_EQUAL;} break; case ORASSIGN: jj_consume_token(ORASSIGN); - {if (true) return "|=";} + {if (true) return VarAssignation.OR_EQUAL;} break; case DOTASSIGN: jj_consume_token(DOTASSIGN); - {if (true) return ".=";} + {if (true) return VarAssignation.DOT_EQUAL;} break; case TILDEEQUAL: jj_consume_token(TILDEEQUAL); - {if (true) return "~=";} + {if (true) return VarAssignation.TILDE_EQUAL;} break; default: jj_la1[28] = jj_gen; @@ -1282,10 +1379,10 @@ final StringBuffer buff = new StringBuffer("("); throw new Error("Missing return statement in function"); } - static final public String ConditionalExpression() throws ParseException { - final String expr; - String expr2 = null; - String expr3 = null; + static final public Expression ConditionalExpression() throws ParseException { + final Expression expr; + Expression expr2 = null; + Expression expr3 = null; expr = ConditionalOrExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case HOOK: @@ -1300,23 +1397,20 @@ final StringBuffer buff = new StringBuffer("("); } if (expr3 == null) { {if (true) return expr;} - } else { - {if (true) return expr + "?" + expr2 + ":" + expr3;} } + {if (true) return new ConditionalExpression(expr,expr2,expr3);} throw new Error("Missing return statement in function"); } - static final public String ConditionalOrExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression ConditionalOrExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = ConditionalAndExpression(); - buff.append(expr); label_8: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case OR_OR: case _ORL: - case SC_OR: ; break; default: @@ -1324,36 +1418,35 @@ final StringBuffer buff = new StringBuffer("("); break label_8; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SC_OR: - operator = jj_consume_token(SC_OR); + case OR_OR: + jj_consume_token(OR_OR); + operator = OperatorIds.OR_OR; break; case _ORL: - operator = jj_consume_token(_ORL); + jj_consume_token(_ORL); + operator = OperatorIds.ORL; break; default: jj_la1[31] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = ConditionalAndExpression(); - buff.append(operator.image); - buff.append(expr); + expr2 = ConditionalAndExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String ConditionalAndExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression ConditionalAndExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = ConcatExpression(); - buff.append(expr); label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case AND_AND: case _ANDL: - case SC_AND: ; break; default: @@ -1361,30 +1454,29 @@ final StringBuffer buff = new StringBuffer("("); break label_9; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SC_AND: - operator = jj_consume_token(SC_AND); + case AND_AND: + jj_consume_token(AND_AND); + operator = OperatorIds.AND_AND; break; case _ANDL: - operator = jj_consume_token(_ANDL); + jj_consume_token(_ANDL); + operator = OperatorIds.ANDL; break; default: jj_la1[33] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = ConcatExpression(); - buff.append(operator.image); - buff.append(expr); + expr2 = ConcatExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String ConcatExpression() throws ParseException { - String expr; - final StringBuffer buff = new StringBuffer(); + static final public Expression ConcatExpression() throws ParseException { + Expression expr,expr2; expr = InclusiveOrExpression(); - buff.append(expr); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1396,18 +1488,16 @@ final StringBuffer buff = new StringBuffer("("); break label_10; } jj_consume_token(DOT); - expr = InclusiveOrExpression(); - buff.append(".").append(expr); + expr2 = InclusiveOrExpression(); + expr = new BinaryExpression(expr,expr2,OperatorIds.DOT); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String InclusiveOrExpression() throws ParseException { - String expr; - final StringBuffer buff = new StringBuffer(); + static final public Expression InclusiveOrExpression() throws ParseException { + Expression expr,expr2; expr = ExclusiveOrExpression(); - buff.append(expr); label_11: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1419,18 +1509,16 @@ final StringBuffer buff = new StringBuffer("("); break label_11; } jj_consume_token(BIT_OR); - expr = ExclusiveOrExpression(); - buff.append("|").append(expr); + expr2 = ExclusiveOrExpression(); + expr = new BinaryExpression(expr,expr2,OperatorIds.OR); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String ExclusiveOrExpression() throws ParseException { - String expr; - final StringBuffer buff = new StringBuffer(); + static final public Expression ExclusiveOrExpression() throws ParseException { + Expression expr,expr2; expr = AndExpression(); - buff.append(expr); label_12: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1442,19 +1530,16 @@ final StringBuffer buff = new StringBuffer("("); break label_12; } jj_consume_token(XOR); - expr = AndExpression(); - buff.append("^"); - buff.append(expr); + expr2 = AndExpression(); + expr = new BinaryExpression(expr,expr2,OperatorIds.XOR); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String AndExpression() throws ParseException { - String expr; - final StringBuffer buff = new StringBuffer(); + static final public Expression AndExpression() throws ParseException { + Expression expr,expr2; expr = EqualityExpression(); - buff.append(expr); label_13: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1466,24 +1551,22 @@ final StringBuffer buff = new StringBuffer("("); break label_13; } jj_consume_token(BIT_AND); - expr = EqualityExpression(); - buff.append("&").append(expr); + expr2 = EqualityExpression(); + expr = new BinaryExpression(expr,expr2,OperatorIds.AND); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String EqualityExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression EqualityExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = RelationalExpression(); - buff.append(expr); label_14: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - case NE: + case EQUAL_EQUAL: + case NOT_EQUAL: case DIF: case BANGDOUBLEEQUAL: case TRIPLEEQUAL: @@ -1494,20 +1577,25 @@ final StringBuffer buff = new StringBuffer("("); break label_14; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQ: - operator = jj_consume_token(EQ); + case EQUAL_EQUAL: + jj_consume_token(EQUAL_EQUAL); + operator = OperatorIds.EQUAL_EQUAL; break; case DIF: - operator = jj_consume_token(DIF); + jj_consume_token(DIF); + operator = OperatorIds.DIF; break; - case NE: - operator = jj_consume_token(NE); + case NOT_EQUAL: + jj_consume_token(NOT_EQUAL); + operator = OperatorIds.DIF; break; case BANGDOUBLEEQUAL: - operator = jj_consume_token(BANGDOUBLEEQUAL); + jj_consume_token(BANGDOUBLEEQUAL); + operator = OperatorIds.BANG_EQUAL_EQUAL; break; case TRIPLEEQUAL: - operator = jj_consume_token(TRIPLEEQUAL); + jj_consume_token(TRIPLEEQUAL); + operator = OperatorIds.EQUAL_EQUAL_EQUAL; break; default: jj_la1[39] = jj_gen; @@ -1515,27 +1603,27 @@ final StringBuffer buff = new StringBuffer("("); throw new ParseException(); } try { - expr = RelationalExpression(); + expr2 = RelationalExpression(); } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected after '"+operator.image+"'"; + if (errorMessage != null) { + {if (true) throw e;} + } + errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; errorLevel = ERROR; errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - buff.append(operator.image); - buff.append(expr); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String RelationalExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression RelationalExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = ShiftExpression(); - buff.append(expr); label_15: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1551,35 +1639,37 @@ final StringBuffer buff = new StringBuffer("("); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LT: - operator = jj_consume_token(LT); + jj_consume_token(LT); + operator = OperatorIds.LESS; break; case GT: - operator = jj_consume_token(GT); + jj_consume_token(GT); + operator = OperatorIds.GREATER; break; case LE: - operator = jj_consume_token(LE); + jj_consume_token(LE); + operator = OperatorIds.LESS_EQUAL; break; case GE: - operator = jj_consume_token(GE); + jj_consume_token(GE); + operator = OperatorIds.GREATER_EQUAL; break; default: jj_la1[41] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = ShiftExpression(); - buff.append(operator.image).append(expr); + expr2 = ShiftExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String ShiftExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression ShiftExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = AdditiveExpression(); - buff.append(expr); label_16: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1594,33 +1684,33 @@ final StringBuffer buff = new StringBuffer("("); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LSHIFT: - operator = jj_consume_token(LSHIFT); + jj_consume_token(LSHIFT); + operator = OperatorIds.LEFT_SHIFT; break; case RSIGNEDSHIFT: - operator = jj_consume_token(RSIGNEDSHIFT); + jj_consume_token(RSIGNEDSHIFT); + operator = OperatorIds.RIGHT_SHIFT; break; case RUNSIGNEDSHIFT: - operator = jj_consume_token(RUNSIGNEDSHIFT); + jj_consume_token(RUNSIGNEDSHIFT); + operator = OperatorIds.UNSIGNED_RIGHT_SHIFT; break; default: jj_la1[43] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = AdditiveExpression(); - buff.append(operator.image); - buff.append(expr); + expr2 = AdditiveExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String AdditiveExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression AdditiveExpression() throws ParseException { + Expression expr,expr2; + int operator; expr = MultiplicativeExpression(); - buff.append(expr); label_17: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1634,44 +1724,46 @@ final StringBuffer buff = new StringBuffer("("); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: - operator = jj_consume_token(PLUS); + jj_consume_token(PLUS); + operator = OperatorIds.PLUS; break; case MINUS: - operator = jj_consume_token(MINUS); + jj_consume_token(MINUS); + operator = OperatorIds.MINUS; break; default: jj_la1[45] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = MultiplicativeExpression(); - buff.append(operator.image); - buff.append(expr); + expr2 = MultiplicativeExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } - static final public String MultiplicativeExpression() throws ParseException { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + static final public Expression MultiplicativeExpression() throws ParseException { + Expression expr,expr2; + int operator; try { expr = UnaryExpression(); } catch (ParseException e) { + if (errorMessage != null) { + {if (true) throw e;} + } errorMessage = "unexpected token '"+e.currentToken.next.image+"'"; errorLevel = ERROR; errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - buff.append(expr); label_18: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: case SLASH: - case REM: + case REMAINDER: ; break; default: @@ -1680,76 +1772,98 @@ final StringBuffer buff = new StringBuffer("("); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STAR: - operator = jj_consume_token(STAR); + jj_consume_token(STAR); + operator = OperatorIds.MULTIPLY; break; case SLASH: - operator = jj_consume_token(SLASH); + jj_consume_token(SLASH); + operator = OperatorIds.DIVIDE; break; - case REM: - operator = jj_consume_token(REM); + case REMAINDER: + jj_consume_token(REMAINDER); + operator = OperatorIds.REMAINDER; break; default: jj_la1[47] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - expr = UnaryExpression(); - buff.append(operator.image); - buff.append(expr); + expr2 = UnaryExpression(); + expr = new BinaryExpression(expr,expr2,operator); } - {if (true) return buff.toString();} + {if (true) return expr;} throw new Error("Missing return statement in function"); } /** * An unary expression starting with @, & or nothing */ - static final public String UnaryExpression() throws ParseException { - final String expr; - final Token token; - final StringBuffer buff = new StringBuffer(); + static final public Expression UnaryExpression() throws ParseException { + Expression expr; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BIT_AND: - token = jj_consume_token(BIT_AND); + jj_consume_token(BIT_AND); expr = UnaryExpressionNoPrefix(); - if (token == null) { - {if (true) return expr;} - } - {if (true) return token.image + expr;} + {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);} break; case ARRAY: case NEW: case NULL: case TRUE: case FALSE: + case AT: + case DOLLAR: + case BANG: + case INCR: + case DECR: + case PLUS: + case MINUS: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: + case DOLLAR_ID: + expr = AtUnaryExpression(); + {if (true) return expr;} + break; + default: + jj_la1[48] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + throw new Error("Missing return statement in function"); + } + + static final public Expression AtUnaryExpression() throws ParseException { + Expression expr; + final int pos = SimpleCharStream.getPosition(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AT: + jj_consume_token(AT); + expr = AtUnaryExpression(); + {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);} + break; + case ARRAY: + case NEW: + case NULL: + case TRUE: + case FALSE: case DOLLAR: case BANG: case INCR: case DECR: case PLUS: case MINUS: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - label_19: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AT: - ; - break; - default: - jj_la1[48] = jj_gen; - break label_19; - } - jj_consume_token(AT); - buff.append("@"); - } expr = UnaryExpressionNoPrefix(); - {if (true) return buff.append(expr).toString();} + {if (true) return expr;} break; default: jj_la1[49] = jj_gen; @@ -1759,18 +1873,21 @@ final StringBuffer buff = new StringBuffer("("); throw new Error("Missing return statement in function"); } - static final public String UnaryExpressionNoPrefix() throws ParseException { - final String expr; - final Token token; + static final public Expression UnaryExpressionNoPrefix() throws ParseException { + Expression expr; + int operator; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: case MINUS: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PLUS: - token = jj_consume_token(PLUS); + jj_consume_token(PLUS); + operator = OperatorIds.PLUS; break; case MINUS: - token = jj_consume_token(MINUS); + jj_consume_token(MINUS); + operator = OperatorIds.MINUS; break; default: jj_la1[50] = jj_gen; @@ -1778,7 +1895,7 @@ final StringBuffer buff = new StringBuffer("("); throw new ParseException(); } expr = UnaryExpression(); - {if (true) return token.image + expr;} + {if (true) return new PrefixedUnaryExpression(expr,operator,pos);} break; case INCR: case DECR: @@ -1790,13 +1907,13 @@ final StringBuffer buff = new StringBuffer("("); case NULL: case TRUE: case FALSE: + case DOLLAR: + case BANG: case INTEGER_LITERAL: case FLOATING_POINT_LITERAL: case STRING_LITERAL: case IDENTIFIER: case LPAREN: - case DOLLAR: - case BANG: case DOLLAR_ID: expr = UnaryExpressionNotPlusMinus(); {if (true) return expr;} @@ -1809,15 +1926,18 @@ final StringBuffer buff = new StringBuffer("("); throw new Error("Missing return statement in function"); } - static final public String PreIncDecExpression() throws ParseException { -final String expr; -final Token token; + static final public Expression PreIncDecExpression() throws ParseException { +final Expression expr; +final int operator; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: - token = jj_consume_token(INCR); + jj_consume_token(INCR); + operator = OperatorIds.PLUS_PLUS; break; case DECR: - token = jj_consume_token(DECR); + jj_consume_token(DECR); + operator = OperatorIds.MINUS_MINUS; break; default: jj_la1[52] = jj_gen; @@ -1825,17 +1945,18 @@ final Token token; throw new ParseException(); } expr = PrimaryExpression(); - {if (true) return token.image + expr;} + {if (true) return new PrefixedUnaryExpression(expr,operator,pos);} throw new Error("Missing return statement in function"); } - static final public String UnaryExpressionNotPlusMinus() throws ParseException { - final String expr; + static final public Expression UnaryExpressionNotPlusMinus() throws ParseException { + Expression expr; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BANG: jj_consume_token(BANG); expr = UnaryExpression(); - {if (true) return "!" + expr;} + {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);} break; default: jj_la1[53] = jj_gen; @@ -1846,8 +1967,8 @@ final Token token; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: + case IDENTIFIER: case DOLLAR_ID: expr = PostfixExpression(); {if (true) return expr;} @@ -1873,7 +1994,7 @@ final Token token; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - {if (true) return "("+expr+")";} + {if (true) return expr;} break; default: jj_la1[54] = jj_gen; @@ -1885,8 +2006,10 @@ final Token token; throw new Error("Missing return statement in function"); } - static final public String CastExpression() throws ParseException { -final String type, expr; + static final public CastExpression CastExpression() throws ParseException { +final ConstantIdentifier type; +final Expression expr; +final int pos = SimpleCharStream.getPosition(); jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case STRING: @@ -1902,7 +2025,7 @@ final String type, expr; break; case ARRAY: jj_consume_token(ARRAY); - type = "array"; + type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition()); break; default: jj_la1[55] = jj_gen; @@ -1911,23 +2034,26 @@ final String type, expr; } jj_consume_token(RPAREN); expr = UnaryExpression(); - {if (true) return "(" + type + ")" + expr;} + {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public String PostfixExpression() throws ParseException { - final String expr; - Token operator = null; + static final public Expression PostfixExpression() throws ParseException { + Expression expr; + int operator = -1; + final int pos = SimpleCharStream.getPosition(); expr = PrimaryExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: case DECR: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: - operator = jj_consume_token(INCR); + jj_consume_token(INCR); + operator = OperatorIds.PLUS_PLUS; break; case DECR: - operator = jj_consume_token(DECR); + jj_consume_token(DECR); + operator = OperatorIds.MINUS_MINUS; break; default: jj_la1[56] = jj_gen; @@ -1939,23 +2065,28 @@ final String type, expr; jj_la1[57] = jj_gen; ; } - if (operator == null) { + if (operator == -1) { {if (true) return expr;} } - {if (true) return expr + operator.image;} + {if (true) return new PostfixedUnaryExpression(expr,operator,pos);} throw new Error("Missing return statement in function"); } - static final public String PrimaryExpression() throws ParseException { + static final public Expression PrimaryExpression() throws ParseException { final Token identifier; - String expr; + Expression expr; final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); if (jj_2_5(2)) { identifier = jj_consume_token(IDENTIFIER); jj_consume_token(STATICCLASSACCESS); expr = ClassIdentifier(); - buff.append(identifier.image).append("::").append(expr); - label_20: + expr = new ClassAccess(new ConstantIdentifier(identifier.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + expr, + ClassAccess.STATIC); + label_19: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CLASSACCESS: @@ -1965,21 +2096,19 @@ final String type, expr; break; default: jj_la1[58] = jj_gen; - break label_20; + break label_19; } - expr = PrimarySuffix(); - buff.append(expr); + expr = PrimarySuffix(expr); } - {if (true) return buff.toString();} + {if (true) return expr;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case NEW: - case IDENTIFIER: case DOLLAR: + case IDENTIFIER: case DOLLAR_ID: expr = PrimaryPrefix(); - buff.append(expr); - label_21: + label_20: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CLASSACCESS: @@ -1989,16 +2118,15 @@ final String type, expr; break; default: jj_la1[59] = jj_gen; - break label_21; + break label_20; } - expr = PrimarySuffix(); - buff.append(expr); + expr = PrimarySuffix(expr); } - {if (true) return buff.toString();} + {if (true) return expr;} break; case ARRAY: expr = ArrayDeclarator(); - {if (true) return "array" + expr;} + {if (true) return expr;} break; default: jj_la1[60] = jj_gen; @@ -2009,31 +2137,40 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String ArrayDeclarator() throws ParseException { - final String expr; + static final public ArrayInitializer ArrayDeclarator() throws ParseException { + final ArrayVariableDeclaration[] vars; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(ARRAY); - expr = ArrayInitializer(); - {if (true) return "array" + expr;} + vars = ArrayInitializer(); + {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public String PrimaryPrefix() throws ParseException { - final String expr; + static final public Expression PrimaryPrefix() throws ParseException { + final Expression expr; final Token token; + final String var; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: token = jj_consume_token(IDENTIFIER); - {if (true) return token.image;} + {if (true) return new ConstantIdentifier(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition());} break; case NEW: jj_consume_token(NEW); expr = ClassIdentifier(); - {if (true) return "new " + expr;} + {if (true) return new PrefixedUnaryExpression(expr, + OperatorIds.NEW, + pos);} break; case DOLLAR: case DOLLAR_ID: - expr = VariableDeclaratorId(); - {if (true) return expr;} + var = VariableDeclaratorId(); + {if (true) return new ConstantIdentifier(var.toCharArray(), + pos, + SimpleCharStream.getPosition());} break; default: jj_la1[61] = jj_gen; @@ -2043,41 +2180,52 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String classInstantiation() throws ParseException { - String expr; - final StringBuffer buff = new StringBuffer("new "); + static final public PrefixedUnaryExpression classInstantiation() throws ParseException { + Expression expr; + final StringBuffer buff; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(NEW); expr = ClassIdentifier(); - buff.append(expr); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: + case IDENTIFIER: case DOLLAR_ID: + buff = new StringBuffer(expr.toStringExpression()); expr = PrimaryExpression(); - buff.append(expr); + buff.append(expr.toStringExpression()); + expr = new ConstantIdentifier(buff.toString().toCharArray(), + pos, + SimpleCharStream.getPosition()); break; default: jj_la1[62] = jj_gen; ; } - {if (true) return buff.toString();} + {if (true) return new PrefixedUnaryExpression(expr, + OperatorIds.NEW, + pos);} throw new Error("Missing return statement in function"); } - static final public String ClassIdentifier() throws ParseException { + static final public ConstantIdentifier ClassIdentifier() throws ParseException { final String expr; final Token token; + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IDENTIFIER: token = jj_consume_token(IDENTIFIER); - {if (true) return token.image;} + {if (true) return new ConstantIdentifier(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition());} break; case DOLLAR: case DOLLAR_ID: expr = VariableDeclaratorId(); - {if (true) return expr;} + {if (true) return new ConstantIdentifier(expr.toCharArray(), + pos, + SimpleCharStream.getPosition());} break; default: jj_la1[63] = jj_gen; @@ -2087,17 +2235,17 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String PrimarySuffix() throws ParseException { - final String expr; + static final public AbstractSuffixExpression PrimarySuffix(Expression prefix) throws ParseException { + final AbstractSuffixExpression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LPAREN: - expr = Arguments(); - {if (true) return expr;} + expr = Arguments(prefix); + {if (true) return expr;} break; case CLASSACCESS: case LBRACKET: - expr = VariableSuffix(); - {if (true) return expr;} + expr = VariableSuffix(prefix); + {if (true) return expr;} break; default: jj_la1[64] = jj_gen; @@ -2107,8 +2255,10 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String VariableSuffix() throws ParseException { + static final public AbstractSuffixExpression VariableSuffix(Expression prefix) throws ParseException { String expr = null; + final int pos = SimpleCharStream.getPosition(); + Expression expression = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CLASSACCESS: jj_consume_token(CLASSACCESS); @@ -2121,7 +2271,9 @@ final String type, expr; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - {if (true) return "->" + expr;} + {if (true) return new ClassAccess(prefix, + new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()), + ClassAccess.NORMAL);} break; case LBRACKET: jj_consume_token(LBRACKET); @@ -2142,11 +2294,6 @@ final String type, expr; case FLOAT: case INT: case INTEGER: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -2155,6 +2302,11 @@ final String type, expr; case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: @@ -2164,11 +2316,6 @@ final String type, expr; case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -2177,8 +2324,13 @@ final String type, expr; case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - expr = Expression(); + expression = Expression(); break; case STRING: case OBJECT: @@ -2189,7 +2341,7 @@ final String type, expr; case FLOAT: case INT: case INTEGER: - expr = Type(); + expression = Type(); break; default: jj_la1[65] = jj_gen; @@ -2210,10 +2362,7 @@ final String type, expr; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - if(expr == null) { - {if (true) return "[]";} - } - {if (true) return "[" + expr + "]";} + {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());} break; default: jj_la1[67] = jj_gen; @@ -2223,30 +2372,39 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String Literal() throws ParseException { - final String expr; + static final public Literal Literal() throws ParseException { final Token token; + final int pos; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INTEGER_LITERAL: token = jj_consume_token(INTEGER_LITERAL); - {if (true) return token.image;} + pos = SimpleCharStream.getPosition(); + {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} break; case FLOATING_POINT_LITERAL: token = jj_consume_token(FLOATING_POINT_LITERAL); - {if (true) return token.image;} + pos = SimpleCharStream.getPosition(); + {if (true) return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} break; case STRING_LITERAL: token = jj_consume_token(STRING_LITERAL); - {if (true) return token.image;} + pos = SimpleCharStream.getPosition(); + {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} break; case TRUE: + jj_consume_token(TRUE); + pos = SimpleCharStream.getPosition(); + {if (true) return new TrueLiteral(pos-4,pos);} + break; case FALSE: - expr = BooleanLiteral(); - {if (true) return expr;} + jj_consume_token(FALSE); + pos = SimpleCharStream.getPosition(); + {if (true) return new FalseLiteral(pos-4,pos);} break; case NULL: jj_consume_token(NULL); - {if (true) return "null";} + pos = SimpleCharStream.getPosition(); + {if (true) return new NullLiteral(pos-4,pos);} break; default: jj_la1[68] = jj_gen; @@ -2256,26 +2414,8 @@ final String type, expr; throw new Error("Missing return statement in function"); } - static final public String BooleanLiteral() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case TRUE: - jj_consume_token(TRUE); - {if (true) return "true";} - break; - case FALSE: - jj_consume_token(FALSE); - {if (true) return "false";} - break; - default: - jj_la1[69] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public String Arguments() throws ParseException { -String expr = null; + static final public FunctionCall Arguments(Expression func) throws ParseException { +ArgumentDeclaration[] args = null; jj_consume_token(LPAREN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: @@ -2285,11 +2425,6 @@ String expr = null; case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -2298,11 +2433,16 @@ String expr = null; case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - expr = ArgumentList(); + args = ArgumentList(); break; default: - jj_la1[70] = jj_gen; + jj_la1[69] = jj_gen; ; } try { @@ -2314,31 +2454,29 @@ String expr = null; errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - if (expr == null) { - {if (true) return "()";} - } - {if (true) return "(" + expr + ")";} + {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public String ArgumentList() throws ParseException { -String expr; -final StringBuffer buff = new StringBuffer(); + static final public ArgumentDeclaration[] ArgumentList() throws ParseException { +Expression expr; +final ArrayList list = new ArrayList(); expr = Expression(); - buff.append(expr); - label_22: + list.add(expr); + label_21: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[71] = jj_gen; - break label_22; + jj_la1[70] = jj_gen; + break label_21; } jj_consume_token(COMMA); try { expr = Expression(); + list.add(expr); } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list"; errorLevel = ERROR; @@ -2346,18 +2484,19 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - buff.append(",").append(expr); } - {if (true) return buff.toString();} + {if (true) return (ArgumentDeclaration[]) list.toArray();} throw new Error("Missing return statement in function"); } /** * A Statement without break. */ - static final public void StatementNoBreak() throws ParseException { + static final public Statement StatementNoBreak() throws ParseException { + final Statement statement; + Token token = null; if (jj_2_6(2)) { - Expression(); + statement = Expression(); try { jj_consume_token(SEMICOLON); } catch (ParseException e) { @@ -2369,24 +2508,28 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } } + {if (true) return statement;} } else if (jj_2_7(2)) { - LabeledStatement(); + statement = LabeledStatement(); + {if (true) return statement;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACE: - Block(); + statement = Block(); + {if (true) return statement;} break; case SEMICOLON: - EmptyStatement(); + statement = EmptyStatement(); + {if (true) return statement;} break; case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: case INCR: case DECR: + case IDENTIFIER: case DOLLAR_ID: - StatementExpression(); + statement = StatementExpression(); try { jj_consume_token(SEMICOLON); } catch (ParseException e) { @@ -2396,33 +2539,43 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + {if (true) return statement;} break; case SWITCH: - SwitchStatement(); + statement = SwitchStatement(); + {if (true) return statement;} break; case IF: - IfStatement(); + statement = IfStatement(); + {if (true) return statement;} break; case WHILE: - WhileStatement(); + statement = WhileStatement(); + {if (true) return statement;} break; case DO: - DoStatement(); + statement = DoStatement(); + {if (true) return statement;} break; case FOR: - ForStatement(); + statement = ForStatement(); + {if (true) return statement;} break; case FOREACH: - ForeachStatement(); + statement = ForeachStatement(); + {if (true) return statement;} break; case CONTINUE: - ContinueStatement(); + statement = ContinueStatement(); + {if (true) return statement;} break; case RETURN: - ReturnStatement(); + statement = ReturnStatement(); + {if (true) return statement;} break; case ECHO: - EchoStatement(); + statement = EchoStatement(); + {if (true) return statement;} break; case INCLUDE: case REQUIRE: @@ -2431,32 +2584,40 @@ final StringBuffer buff = new StringBuffer(); case AT: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case AT: - jj_consume_token(AT); + token = jj_consume_token(AT); break; default: - jj_la1[72] = jj_gen; + jj_la1[71] = jj_gen; ; } - IncludeStatement(); + statement = IncludeStatement(); + if (token != null) { + ((InclusionStatement)statement).silent = true; + } + {if (true) return statement;} break; case STATIC: - StaticStatement(); + statement = StaticStatement(); + {if (true) return statement;} break; case GLOBAL: - GlobalStatement(); + statement = GlobalStatement(); + {if (true) return statement;} break; default: - jj_la1[73] = jj_gen; + jj_la1[72] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } + throw new Error("Missing return statement in function"); } /** * A Normal statement. */ - static final public void Statement() throws ParseException { + static final public Statement Statement() throws ParseException { + final Statement statement; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: case ARRAY: @@ -2480,13 +2641,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -2495,33 +2649,46 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - StatementNoBreak(); + statement = StatementNoBreak(); + {if (true) return statement;} break; case BREAK: - BreakStatement(); + statement = BreakStatement(); + {if (true) return statement;} break; default: - jj_la1[74] = jj_gen; + jj_la1[73] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } /** * An html block inside a php syntax. */ - static final public void htmlBlock() throws ParseException { + static final public HTMLBlock htmlBlock() throws ParseException { + final int startIndex = nodePtr; + AstNode[] blockNodes; + int nbNodes; jj_consume_token(PHPEND); - label_23: + label_22: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPECHOSTART: ; break; default: - jj_la1[75] = jj_gen; - break label_23; + jj_la1[74] = jj_gen; + break label_22; } phpEchoBlock(); } @@ -2534,7 +2701,7 @@ final StringBuffer buff = new StringBuffer(); jj_consume_token(PHPSTARTSHORT); break; default: - jj_la1[76] = jj_gen; + jj_la1[75] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2545,48 +2712,61 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition(); {if (true) throw e;} } + nbNodes = nodePtr-startIndex; + blockNodes = new AstNode[nbNodes]; + System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes); + {if (true) return new HTMLBlock(nodes);} + throw new Error("Missing return statement in function"); } /** * An include statement. It's "include" an expression; */ - static final public void IncludeStatement() throws ParseException { - final String expr; + static final public InclusionStatement IncludeStatement() throws ParseException { + final Expression expr; final Token token; + final int keyword; final int pos = jj_input_stream.getPosition(); + final InclusionStatement inclusionStatement; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case REQUIRE: - token = jj_consume_token(REQUIRE); + jj_consume_token(REQUIRE); + keyword = InclusionStatement.REQUIRE; break; case REQUIRE_ONCE: - token = jj_consume_token(REQUIRE_ONCE); + jj_consume_token(REQUIRE_ONCE); + keyword = InclusionStatement.REQUIRE_ONCE; break; case INCLUDE: - token = jj_consume_token(INCLUDE); + jj_consume_token(INCLUDE); + keyword = InclusionStatement.INCLUDE; break; case INCLUDE_ONCE: - token = jj_consume_token(INCLUDE_ONCE); + jj_consume_token(INCLUDE_ONCE); + keyword = InclusionStatement.INCLUDE_ONCE; break; default: - jj_la1[77] = jj_gen; + jj_la1[76] = jj_gen; jj_consume_token(-1); throw new ParseException(); } try { expr = Expression(); } catch (ParseException e) { - if (errorMessage != null) { - {if (true) throw e;} - } - errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; + if (errorMessage != null) { {if (true) throw e;} } - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, token.image,pos,expr)); + errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected"; + errorLevel = ERROR; + errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; + errorEnd = jj_input_stream.getPosition() + 1; + {if (true) throw e;} } + inclusionStatement = new InclusionStatement(currentSegment, + keyword, + expr, + pos); + currentSegment.add(inclusionStatement); try { jj_consume_token(SEMICOLON); } catch (ParseException e) { @@ -2596,19 +2776,24 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + {if (true) return inclusionStatement;} + throw new Error("Missing return statement in function"); } - static final public String PrintExpression() throws ParseException { - final String expr; + static final public PrintExpression PrintExpression() throws ParseException { + final Expression expr; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(PRINT); expr = Expression(); - {if (true) return "print " + expr;} + {if (true) return new PrintExpression(expr,pos,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public String ListExpression() throws ParseException { - final StringBuffer buff = new StringBuffer("list("); - String expr; + static final public ListExpression ListExpression() throws ParseException { + String expr = null; + Expression expression = null; + ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); jj_consume_token(LIST); try { jj_consume_token(LPAREN); @@ -2623,21 +2808,22 @@ final StringBuffer buff = new StringBuffer(); case DOLLAR: case DOLLAR_ID: expr = VariableDeclaratorId(); - buff.append(expr); + list.add(expr); break; default: - jj_la1[78] = jj_gen; + jj_la1[77] = jj_gen; ; } - label_24: + if (expr == null) list.add(null); + label_23: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[79] = jj_gen; - break label_24; + jj_la1[78] = jj_gen; + break label_23; } try { jj_consume_token(COMMA); @@ -2649,9 +2835,8 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } expr = VariableDeclaratorId(); - buff.append(",").append(expr); + list.add(expr); } - buff.append(")"); try { jj_consume_token(RPAREN); } catch (ParseException e) { @@ -2664,14 +2849,14 @@ final StringBuffer buff = new StringBuffer(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASSIGN: jj_consume_token(ASSIGN); - expr = Expression(); - buff.append("(").append(expr); + expression = Expression(); + {if (true) return new ListExpression((String[]) list.toArray(),expression,pos,SimpleCharStream.getPosition());} break; default: - jj_la1[80] = jj_gen; + jj_la1[79] = jj_gen; ; } - {if (true) return buff.toString();} + {if (true) return new ListExpression((String[]) list.toArray(),null,pos,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } @@ -2679,24 +2864,30 @@ final StringBuffer buff = new StringBuffer(); * An echo statement. * echo anyexpression (, otherexpression)* */ - static final public void EchoStatement() throws ParseException { + static final public EchoStatement EchoStatement() throws ParseException { + final ArrayList expressions = new ArrayList(); + Expression expr; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(ECHO); - Expression(); - label_25: + expr = Expression(); + expressions.add(expr); + label_24: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[81] = jj_gen; - break label_25; + jj_la1[80] = jj_gen; + break label_24; } jj_consume_token(COMMA); - Expression(); + expr = Expression(); + expressions.add(expr); } try { jj_consume_token(SEMICOLON); + {if (true) return new EchoStatement((Expression[]) expressions.toArray(),pos);} } catch (ParseException e) { if (e.currentToken.next.kind != 4) { errorMessage = "';' expected after 'echo' statement"; @@ -2706,34 +2897,39 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } } + throw new Error("Missing return statement in function"); } - static final public void GlobalStatement() throws ParseException { + static final public GlobalStatement GlobalStatement() throws ParseException { final int pos = jj_input_stream.getPosition(); String expr; + ArrayList vars = new ArrayList(); + GlobalStatement global; jj_consume_token(GLOBAL); expr = VariableDeclaratorId(); - if (currentSegment != null) { - currentSegment.add(new PHPGlobalDeclaration(currentSegment, "global",pos,expr)); - } - label_26: + vars.add(expr); + label_25: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[82] = jj_gen; - break label_26; + jj_la1[81] = jj_gen; + break label_25; } jj_consume_token(COMMA); expr = VariableDeclaratorId(); - if (currentSegment != null) { - currentSegment.add(new PHPGlobalDeclaration(currentSegment, "global",pos,expr)); - } + vars.add(expr); } try { jj_consume_token(SEMICOLON); + global = new GlobalStatement(currentSegment, + (String[]) vars.toArray(), + pos, + SimpleCharStream.getPosition()); + currentSegment.add(global); + {if (true) return global;} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected"; errorLevel = ERROR; @@ -2741,26 +2937,35 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void StaticStatement() throws ParseException { + static final public StaticStatement StaticStatement() throws ParseException { + final int pos = SimpleCharStream.getPosition(); + final ArrayList vars = new ArrayList(); + VariableDeclaration expr; jj_consume_token(STATIC); - VariableDeclarator(); - label_27: + expr = VariableDeclarator(); + vars.add(new String(expr.name)); + label_26: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[83] = jj_gen; - break label_27; + jj_la1[82] = jj_gen; + break label_26; } jj_consume_token(COMMA); - VariableDeclarator(); + expr = VariableDeclarator(); + vars.add(new String(expr.name)); } try { jj_consume_token(SEMICOLON); + {if (true) return new StaticStatement((String[])vars.toArray(), + pos, + SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected"; errorLevel = ERROR; @@ -2768,15 +2973,29 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void LabeledStatement() throws ParseException { - jj_consume_token(IDENTIFIER); + static final public LabeledStatement LabeledStatement() throws ParseException { + final int pos = SimpleCharStream.getPosition(); + final Token label; + final Statement statement; + label = jj_consume_token(IDENTIFIER); jj_consume_token(COLON); - Statement(); + statement = Statement(); + {if (true) return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void Block() throws ParseException { +/** + * A Block is + * { + * statements + * }. + * @return a block + */ + static final public Block Block() throws ParseException { + final int pos = SimpleCharStream.getPosition(); try { jj_consume_token(LBRACE); } catch (ParseException e) { @@ -2786,7 +3005,7 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - label_28: + label_27: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPEND: @@ -2815,13 +3034,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -2830,12 +3042,19 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[84] = jj_gen; - break label_28; + jj_la1[83] = jj_gen; + break label_27; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CLASS: @@ -2863,13 +3082,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -2878,6 +3090,13 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: BlockStatement(); break; @@ -2885,7 +3104,7 @@ final StringBuffer buff = new StringBuffer(); htmlBlock(); break; default: - jj_la1[85] = jj_gen; + jj_la1[84] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -2899,9 +3118,11 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void BlockStatement() throws ParseException { + static final public Statement BlockStatement() throws ParseException { + final Statement statement; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: case ARRAY: @@ -2926,13 +3147,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -2941,26 +3155,38 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); + {if (true) return statement;} break; case CLASS: - ClassDeclaration(); + statement = ClassDeclaration(); + {if (true) return statement;} break; case FUNCTION: - MethodDeclaration(); + statement = MethodDeclaration(); + {if (true) return statement;} break; default: - jj_la1[86] = jj_gen; + jj_la1[85] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } /** * A Block statement that will not contain any 'break' */ - static final public void BlockStatementNoBreak() throws ParseException { + static final public Statement BlockStatementNoBreak() throws ParseException { + final Statement statement; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: case ARRAY: @@ -2984,13 +3210,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -2999,69 +3218,99 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - StatementNoBreak(); + statement = StatementNoBreak(); + {if (true) return statement;} break; case CLASS: - ClassDeclaration(); + statement = ClassDeclaration(); + {if (true) return statement;} break; case FUNCTION: - MethodDeclaration(); + statement = MethodDeclaration(); + {if (true) return statement;} break; default: - jj_la1[87] = jj_gen; + jj_la1[86] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } - static final public void LocalVariableDeclaration() throws ParseException { - LocalVariableDeclarator(); - label_29: + static final public VariableDeclaration[] LocalVariableDeclaration() throws ParseException { + final ArrayList list = new ArrayList(); + VariableDeclaration var; + var = LocalVariableDeclarator(); + list.add(var); + label_28: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[88] = jj_gen; - break label_29; + jj_la1[87] = jj_gen; + break label_28; } jj_consume_token(COMMA); - LocalVariableDeclarator(); + var = LocalVariableDeclarator(); + list.add(var); } + {if (true) return (VariableDeclaration[]) list.toArray();} + throw new Error("Missing return statement in function"); } - static final public void LocalVariableDeclarator() throws ParseException { - VariableDeclaratorId(); + static final public VariableDeclaration LocalVariableDeclarator() throws ParseException { + final String varName; + Expression init = null; + final int pos = SimpleCharStream.getPosition(); + varName = VariableDeclaratorId(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ASSIGN: jj_consume_token(ASSIGN); - Expression(); + init = Expression(); break; default: - jj_la1[89] = jj_gen; + jj_la1[88] = jj_gen; ; } + {if (true) return new VariableDeclaration(varName.toCharArray(),init,pos);} + throw new Error("Missing return statement in function"); } - static final public void EmptyStatement() throws ParseException { + static final public EmptyStatement EmptyStatement() throws ParseException { + final int pos; jj_consume_token(SEMICOLON); + pos = SimpleCharStream.getPosition(); + {if (true) return new EmptyStatement(pos-1,pos);} + throw new Error("Missing return statement in function"); } - static final public void StatementExpression() throws ParseException { + static final public Statement StatementExpression() throws ParseException { + Expression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: case DECR: - PreIncDecExpression(); + expr = PreIncDecExpression(); + {if (true) return expr;} break; case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: + case IDENTIFIER: case DOLLAR_ID: - PrimaryExpression(); + expr = PrimaryExpression(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case INCR: + case DECR: case ASSIGN: case PLUSASSIGN: case MINUSASSIGN: @@ -3073,16 +3322,20 @@ final StringBuffer buff = new StringBuffer(); case DOTASSIGN: case REMASSIGN: case TILDEEQUAL: - case INCR: - case DECR: case LSHIFTASSIGN: case RSIGNEDSHIFTASSIGN: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INCR: jj_consume_token(INCR); + expr = new PostfixedUnaryExpression(expr, + OperatorIds.PLUS_PLUS, + SimpleCharStream.getPosition()); break; case DECR: jj_consume_token(DECR); + expr = new PostfixedUnaryExpression(expr, + OperatorIds.MINUS_MINUS, + SimpleCharStream.getPosition()); break; case ASSIGN: case PLUSASSIGN: @@ -3101,25 +3354,28 @@ final StringBuffer buff = new StringBuffer(); Expression(); break; default: - jj_la1[90] = jj_gen; + jj_la1[89] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: - jj_la1[91] = jj_gen; + jj_la1[90] = jj_gen; ; } break; default: - jj_la1[92] = jj_gen; + jj_la1[91] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } - static final public void SwitchStatement() throws ParseException { - final int pos = jj_input_stream.getPosition(); + static final public SwitchStatement SwitchStatement() throws ParseException { + final Expression variable; + final AbstractCase[] cases; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(SWITCH); try { jj_consume_token(LPAREN); @@ -3131,7 +3387,7 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } try { - Expression(); + variable = Expression(); } catch (ParseException e) { if (errorMessage != null) { {if (true) throw e;} @@ -3153,21 +3409,25 @@ final StringBuffer buff = new StringBuffer(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case LBRACE: - switchStatementBrace(); + cases = switchStatementBrace(); break; case COLON: - switchStatementColon(pos, pos + 6); + cases = switchStatementColon(pos, pos + 6); break; default: - jj_la1[93] = jj_gen; + jj_la1[92] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + {if (true) return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void switchStatementBrace() throws ParseException { + static final public AbstractCase[] switchStatementBrace() throws ParseException { + AbstractCase cas; + final ArrayList cases = new ArrayList(); jj_consume_token(LBRACE); - label_30: + label_29: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CASE: @@ -3175,13 +3435,15 @@ final StringBuffer buff = new StringBuffer(); ; break; default: - jj_la1[94] = jj_gen; - break label_30; + jj_la1[93] = jj_gen; + break label_29; } - switchLabel0(); + cas = switchLabel0(); + cases.add(cas); } try { jj_consume_token(RBRACE); + {if (true) return (AbstractCase[]) cases.toArray();} } catch (ParseException e) { errorMessage = "'}' expected"; errorLevel = ERROR; @@ -3189,6 +3451,7 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } /** @@ -3196,7 +3459,9 @@ final StringBuffer buff = new StringBuffer(); * @param start the begin offset of the switch * @param end the end offset of the switch */ - static final public void switchStatementColon(final int start, final int end) throws ParseException { + static final public AbstractCase[] switchStatementColon(final int start, final int end) throws ParseException { + AbstractCase cas; + final ArrayList cases = new ArrayList(); jj_consume_token(COLON); try { setMarker(fileToParse, @@ -3208,7 +3473,7 @@ final StringBuffer buff = new StringBuffer(); } catch (CoreException e) { PHPeclipsePlugin.log(e); } - label_31: + label_30: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CASE: @@ -3216,10 +3481,11 @@ final StringBuffer buff = new StringBuffer(); ; break; default: - jj_la1[95] = jj_gen; - break label_31; + jj_la1[94] = jj_gen; + break label_30; } - switchLabel0(); + cas = switchLabel0(); + cases.add(cas); } try { jj_consume_token(ENDSWITCH); @@ -3232,6 +3498,7 @@ final StringBuffer buff = new StringBuffer(); } try { jj_consume_token(SEMICOLON); + {if (true) return (AbstractCase[]) cases.toArray();} } catch (ParseException e) { errorMessage = "';' expected after 'endswitch' keyword"; errorLevel = ERROR; @@ -3239,13 +3506,16 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void switchLabel0() throws ParseException { - Token breakToken = null; - final int line; - line = SwitchLabel(); - label_32: + static final public AbstractCase switchLabel0() throws ParseException { + final Expression expr; + Statement statement; + final ArrayList stmts = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); + expr = SwitchLabel(); + label_31: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPEND: @@ -3273,13 +3543,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3288,12 +3551,19 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[96] = jj_gen; - break label_32; + jj_la1[95] = jj_gen; + break label_31; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CLASS: @@ -3320,13 +3590,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3335,90 +3598,57 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - BlockStatementNoBreak(); + statement = BlockStatementNoBreak(); + stmts.add(statement); break; case PHPEND: - htmlBlock(); + statement = htmlBlock(); + stmts.add(statement); break; default: - jj_la1[97] = jj_gen; + jj_la1[96] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case BREAK: - breakToken = BreakStatement(); + statement = BreakStatement(); + stmts.add(statement); break; default: - jj_la1[98] = jj_gen; + jj_la1[97] = jj_gen; ; } - try { - if (breakToken == null) { - setMarker(fileToParse, - "You should use put a 'break' at the end of your statement", - line, - INFO, - "Line " + line); - } - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } + if (expr == null) {//it's a default + {if (true) return new DefaultCase((Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition());} } - - static final public Token BreakStatement() throws ParseException { - final Token token; - token = jj_consume_token(BREAK); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAY: - case LIST: - case PRINT: - case NEW: - case NULL: - case TRUE: - case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case AT: - case DOLLAR: - case BANG: - case INCR: - case DECR: - case PLUS: - case MINUS: - case BIT_AND: - case DOLLAR_ID: - Expression(); - break; - default: - jj_la1[99] = jj_gen; - ; - } - try { - jj_consume_token(SEMICOLON); - } catch (ParseException e) { - errorMessage = "';' expected after 'break' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return token;} + {if (true) return new Case(expr,(Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition());} throw new Error("Missing return statement in function"); } - static final public int SwitchLabel() throws ParseException { +/** + * A SwitchLabel. + * case Expression() : + * default : + * @return the if it was a case and null if not + */ + static final public Expression SwitchLabel() throws ParseException { final Token token; + final Expression expr; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case CASE: token = jj_consume_token(CASE); try { - Expression(); + expr = Expression(); } catch (ParseException e) { if (errorMessage != null) {if (true) throw e;} errorMessage = "expression expected after 'case' keyword"; @@ -3429,6 +3659,7 @@ final StringBuffer buff = new StringBuffer(); } try { jj_consume_token(COLON); + {if (true) return expr;} } catch (ParseException e) { errorMessage = "':' expected after case expression"; errorLevel = ERROR; @@ -3436,12 +3667,12 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - {if (true) return token.beginLine;} break; case _DEFAULT: token = jj_consume_token(_DEFAULT); try { jj_consume_token(COLON); + {if (true) return null;} } catch (ParseException e) { errorMessage = "':' expected after 'default' keyword"; errorLevel = ERROR; @@ -3449,25 +3680,73 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - {if (true) return token.beginLine;} break; default: - jj_la1[100] = jj_gen; + jj_la1[98] = jj_gen; jj_consume_token(-1); throw new ParseException(); } throw new Error("Missing return statement in function"); } - static final public void IfStatement() throws ParseException { - final Token token; + static final public Break BreakStatement() throws ParseException { + Expression expression = null; + final int start = SimpleCharStream.getPosition(); + jj_consume_token(BREAK); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ARRAY: + case LIST: + case PRINT: + case NEW: + case NULL: + case TRUE: + case FALSE: + case AT: + case DOLLAR: + case BANG: + case INCR: + case DECR: + case PLUS: + case MINUS: + case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case DOLLAR_ID: + expression = Expression(); + break; + default: + jj_la1[99] = jj_gen; + ; + } + try { + jj_consume_token(SEMICOLON); + } catch (ParseException e) { + errorMessage = "';' expected after 'break' keyword"; + errorLevel = ERROR; + errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; + errorEnd = jj_input_stream.getPosition() + 1; + {if (true) throw e;} + } + {if (true) return new Break(expression, start, SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); + } + + static final public IfStatement IfStatement() throws ParseException { final int pos = jj_input_stream.getPosition(); - token = jj_consume_token(IF); - Condition("if"); - IfStatement0(pos,pos+token.image.length()); + Expression condition; + IfStatement ifStatement; + jj_consume_token(IF); + condition = Condition("if"); + ifStatement = IfStatement0(condition, pos,pos+2); + {if (true) return ifStatement;} + throw new Error("Missing return statement in function"); } - static final public void Condition(final String keyword) throws ParseException { + static final public Expression Condition(final String keyword) throws ParseException { + final Expression condition; try { jj_consume_token(LPAREN); } catch (ParseException e) { @@ -3477,9 +3756,10 @@ final StringBuffer buff = new StringBuffer(); errorEnd = errorStart +1; processParseException(e); } - Expression(); + condition = Expression(); try { jj_consume_token(RPAREN); + {if (true) return condition;} } catch (ParseException e) { errorMessage = "')' expected after " + keyword + " keyword"; errorLevel = ERROR; @@ -3487,13 +3767,20 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void IfStatement0(final int start,final int end) throws ParseException { + static final public IfStatement IfStatement0(Expression condition, final int start,final int end) throws ParseException { + Statement statement; + ElseIf elseifStatement; + Else elseStatement = null; + ArrayList stmts = new ArrayList(); + ArrayList elseifs = new ArrayList(); + int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COLON: jj_consume_token(COLON); - label_33: + label_32: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPEND: @@ -3520,13 +3807,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3535,12 +3815,19 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[101] = jj_gen; - break label_33; + jj_la1[100] = jj_gen; + break label_32; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -3566,13 +3853,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3581,36 +3861,46 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); + stmts.add(statement); break; case PHPEND: - htmlBlock(); + statement = htmlBlock(); + stmts.add(statement); break; default: - jj_la1[102] = jj_gen; + jj_la1[101] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } - label_34: + label_33: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ELSEIF: ; break; default: - jj_la1[103] = jj_gen; - break label_34; + jj_la1[102] = jj_gen; + break label_33; } - ElseIfStatementColon(); + elseifStatement = ElseIfStatementColon(); + elseifs.add(elseifStatement); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ELSE: - ElseStatementColon(); + elseStatement = ElseStatementColon(); break; default: - jj_la1[104] = jj_gen; + jj_la1[103] = jj_gen; ; } try { @@ -3634,6 +3924,11 @@ final StringBuffer buff = new StringBuffer(); } try { jj_consume_token(SEMICOLON); + {if (true) return new IfStatement(condition, + (ElseIf[]) elseifs.toArray(), + elseStatement, + pos, + SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endif' keyword"; errorLevel = ERROR; @@ -3666,13 +3961,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3681,6 +3969,13 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -3706,13 +4001,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3721,34 +4009,45 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); break; case PHPEND: - htmlBlock(); + statement = htmlBlock(); break; default: - jj_la1[105] = jj_gen; + jj_la1[104] = jj_gen; jj_consume_token(-1); throw new ParseException(); } - label_35: + stmts.add(statement); + label_34: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ELSEIF: ; break; default: - jj_la1[106] = jj_gen; - break label_35; + jj_la1[105] = jj_gen; + break label_34; } - ElseIfStatement(); + elseifStatement = ElseIfStatement(); + elseifs.add(elseifStatement); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ELSE: jj_consume_token(ELSE); try { - Statement(); + pos = SimpleCharStream.getPosition(); + statement = Statement(); + elseStatement = new Else(statement,pos,SimpleCharStream.getPosition()); } catch (ParseException e) { if (errorMessage != null) { {if (true) throw e;} @@ -3761,22 +4060,32 @@ final StringBuffer buff = new StringBuffer(); } break; default: - jj_la1[107] = jj_gen; + jj_la1[106] = jj_gen; ; } + {if (true) return new IfStatement(condition, + (ElseIf[]) elseifs.toArray(), + elseStatement, + pos, + SimpleCharStream.getPosition());} break; default: - jj_la1[108] = jj_gen; + jj_la1[107] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } - static final public void ElseIfStatementColon() throws ParseException { + static final public ElseIf ElseIfStatementColon() throws ParseException { + Expression condition; + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); jj_consume_token(ELSEIF); - Condition("elseif"); + condition = Condition("elseif"); jj_consume_token(COLON); - label_36: + label_35: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPEND: @@ -3803,13 +4112,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3818,12 +4120,19 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[109] = jj_gen; - break label_36; + jj_la1[108] = jj_gen; + break label_35; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -3849,13 +4158,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3864,24 +4166,38 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); + list.add(statement); break; case PHPEND: - htmlBlock(); + statement = htmlBlock(); + list.add(statement); break; default: - jj_la1[110] = jj_gen; + jj_la1[109] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } + {if (true) return new ElseIf(condition,(Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void ElseStatementColon() throws ParseException { + static final public Else ElseStatementColon() throws ParseException { + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); jj_consume_token(ELSE); jj_consume_token(COLON); - label_37: + label_36: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case PHPEND: @@ -3908,13 +4224,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3923,12 +4232,19 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[111] = jj_gen; - break label_37; + jj_la1[110] = jj_gen; + break label_36; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -3954,13 +4270,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -3969,39 +4278,63 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); + list.add(statement); break; case PHPEND: - htmlBlock(); + statement = htmlBlock(); + list.add(statement); break; default: - jj_la1[112] = jj_gen; + jj_la1[111] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } + {if (true) return new Else((Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void ElseIfStatement() throws ParseException { + static final public ElseIf ElseIfStatement() throws ParseException { + Expression condition; + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); jj_consume_token(ELSEIF); - Condition("elseif"); - Statement(); + condition = Condition("elseif"); + statement = Statement(); + list.add(statement);/*todo:do better*/ + {if (true) return new ElseIf(condition,(Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void WhileStatement() throws ParseException { - final Token token; - final int pos = jj_input_stream.getPosition(); - token = jj_consume_token(WHILE); - Condition("while"); - WhileStatement0(pos,pos + token.image.length()); + static final public WhileStatement WhileStatement() throws ParseException { + final Expression condition; + final Statement action; + final int pos = SimpleCharStream.getPosition(); + jj_consume_token(WHILE); + condition = Condition("while"); + action = WhileStatement0(pos,pos + 5); + {if (true) return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void WhileStatement0(final int start, final int end) throws ParseException { + static final public Statement WhileStatement0(final int start, final int end) throws ParseException { + Statement statement; + final ArrayList stmts = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COLON: jj_consume_token(COLON); - label_38: + label_37: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -4027,13 +4360,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -4042,14 +4368,22 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[113] = jj_gen; - break label_38; + jj_la1[112] = jj_gen; + break label_37; } - Statement(); + statement = Statement(); + stmts.add(statement); } try { setMarker(fileToParse, @@ -4072,6 +4406,7 @@ final StringBuffer buff = new StringBuffer(); } try { jj_consume_token(SEMICOLON); + {if (true) return new Block((Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endwhile' keyword"; errorLevel = ERROR; @@ -4103,13 +4438,6 @@ final StringBuffer buff = new StringBuffer(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -4118,23 +4446,36 @@ final StringBuffer buff = new StringBuffer(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + statement = Statement(); + {if (true) return statement;} break; default: - jj_la1[114] = jj_gen; + jj_la1[113] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } - static final public void DoStatement() throws ParseException { + static final public DoStatement DoStatement() throws ParseException { + final Statement action; + final Expression condition; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(DO); - Statement(); + action = Statement(); jj_consume_token(WHILE); - Condition("while"); + condition = Condition("while"); try { jj_consume_token(SEMICOLON); + {if (true) return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected"; errorLevel = ERROR; @@ -4142,9 +4483,15 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void ForeachStatement() throws ParseException { + static final public ForeachStatement ForeachStatement() throws ParseException { + Statement statement; + Expression expression; + final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); + ArrayVariableDeclaration variable; jj_consume_token(FOREACH); try { jj_consume_token(LPAREN); @@ -4156,7 +4503,7 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } try { - Variable(); + expression = Expression(); } catch (ParseException e) { errorMessage = "variable expected"; errorLevel = ERROR; @@ -4164,19 +4511,6 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - label_39: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case CLASSACCESS: - case LBRACKET: - ; - break; - default: - jj_la1[115] = jj_gen; - break label_39; - } - VariableSuffix(); - } try { jj_consume_token(AS); } catch (ParseException e) { @@ -4187,7 +4521,7 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } try { - Variable(); + variable = ArrayVariable(); } catch (ParseException e) { errorMessage = "variable expected"; errorLevel = ERROR; @@ -4195,15 +4529,6 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAYASSIGN: - jj_consume_token(ARRAYASSIGN); - Expression(); - break; - default: - jj_la1[116] = jj_gen; - ; - } try { jj_consume_token(RPAREN); } catch (ParseException e) { @@ -4214,7 +4539,7 @@ final StringBuffer buff = new StringBuffer(); {if (true) throw e;} } try { - Statement(); + statement = Statement(); } catch (ParseException e) { if (errorMessage != null) {if (true) throw e;} errorMessage = "statement expected"; @@ -4223,11 +4548,23 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + {if (true) return new ForeachStatement(expression, + variable, + statement, + pos, + SimpleCharStream.getPosition());} + throw new Error("Missing return statement in function"); } - static final public void ForStatement() throws ParseException { + static final public ForStatement ForStatement() throws ParseException { final Token token; -final int pos = jj_input_stream.getPosition(); +final int pos = SimpleCharStream.getPosition(); +Statement[] initializations = null; +Expression condition = null; +Statement[] increments = null; +Statement action; +final ArrayList list = new ArrayList(); +final int startBlock, endBlock; token = jj_consume_token(FOR); try { jj_consume_token(LPAREN); @@ -4241,15 +4578,15 @@ final int pos = jj_input_stream.getPosition(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: case INCR: case DECR: + case IDENTIFIER: case DOLLAR_ID: - ForInit(); + initializations = ForInit(); break; default: - jj_la1[117] = jj_gen; + jj_la1[114] = jj_gen; ; } jj_consume_token(SEMICOLON); @@ -4261,11 +4598,6 @@ final int pos = jj_input_stream.getPosition(); case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -4274,26 +4606,31 @@ final int pos = jj_input_stream.getPosition(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - Expression(); + condition = Expression(); break; default: - jj_la1[118] = jj_gen; + jj_la1[115] = jj_gen; ; } jj_consume_token(SEMICOLON); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: case INCR: case DECR: + case IDENTIFIER: case DOLLAR_ID: - StatementExpressionList(); + increments = StatementExpressionList(); break; default: - jj_la1[119] = jj_gen; + jj_la1[116] = jj_gen; ; } jj_consume_token(RPAREN); @@ -4321,13 +4658,6 @@ final int pos = jj_input_stream.getPosition(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -4336,12 +4666,21 @@ final int pos = jj_input_stream.getPosition(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: - Statement(); + action = Statement(); + {if (true) return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());} break; case COLON: jj_consume_token(COLON); - label_40: + startBlock = SimpleCharStream.getPosition(); + label_38: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case IF: @@ -4367,13 +4706,6 @@ final int pos = jj_input_stream.getPosition(); case FALSE: case WHILE: case FOREACH: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case LBRACE: - case SEMICOLON: case AT: case DOLLAR: case BANG: @@ -4382,14 +4714,22 @@ final int pos = jj_input_stream.getPosition(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: + case LBRACE: + case SEMICOLON: case DOLLAR_ID: ; break; default: - jj_la1[120] = jj_gen; - break label_40; + jj_la1[117] = jj_gen; + break label_38; } - Statement(); + action = Statement(); + list.add(action); } try { setMarker(fileToParse, @@ -4401,6 +4741,7 @@ final int pos = jj_input_stream.getPosition(); } catch (CoreException e) { PHPeclipsePlugin.log(e); } + endBlock = SimpleCharStream.getPosition(); try { jj_consume_token(ENDFOR); } catch (ParseException e) { @@ -4412,6 +4753,7 @@ final int pos = jj_input_stream.getPosition(); } try { jj_consume_token(SEMICOLON); + {if (true) return new ForStatement(initializations,condition,increments,new Block((Statement[])list.toArray(),startBlock,endBlock),pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endfor' keyword"; errorLevel = ERROR; @@ -4421,52 +4763,65 @@ final int pos = jj_input_stream.getPosition(); } break; default: - jj_la1[121] = jj_gen; + jj_la1[118] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + throw new Error("Missing return statement in function"); } - static final public void ForInit() throws ParseException { + static final public Statement[] ForInit() throws ParseException { + Statement[] statements; if (jj_2_8(2147483647)) { - LocalVariableDeclaration(); + statements = LocalVariableDeclaration(); + {if (true) return statements;} } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: case NEW: - case IDENTIFIER: case DOLLAR: case INCR: case DECR: + case IDENTIFIER: case DOLLAR_ID: - StatementExpressionList(); + statements = StatementExpressionList(); + {if (true) return statements;} break; default: - jj_la1[122] = jj_gen; + jj_la1[119] = jj_gen; jj_consume_token(-1); throw new ParseException(); } } + throw new Error("Missing return statement in function"); } - static final public void StatementExpressionList() throws ParseException { - StatementExpression(); - label_41: + static final public Statement[] StatementExpressionList() throws ParseException { + final ArrayList list = new ArrayList(); + Statement expr; + expr = StatementExpression(); + list.add(expr); + label_39: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case COMMA: ; break; default: - jj_la1[123] = jj_gen; - break label_41; + jj_la1[120] = jj_gen; + break label_39; } jj_consume_token(COMMA); StatementExpression(); + list.add(expr); } + {if (true) return (Statement[]) list.toArray();} + throw new Error("Missing return statement in function"); } - static final public void ContinueStatement() throws ParseException { + static final public Continue ContinueStatement() throws ParseException { + Expression expr = null; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(CONTINUE); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: @@ -4476,11 +4831,6 @@ final int pos = jj_input_stream.getPosition(); case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -4489,15 +4839,21 @@ final int pos = jj_input_stream.getPosition(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - Expression(); + expr = Expression(); break; default: - jj_la1[124] = jj_gen; + jj_la1[121] = jj_gen; ; } try { jj_consume_token(SEMICOLON); + {if (true) return new Continue(expr,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'continue' statement"; errorLevel = ERROR; @@ -4505,9 +4861,12 @@ final int pos = jj_input_stream.getPosition(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } - static final public void ReturnStatement() throws ParseException { + static final public ReturnStatement ReturnStatement() throws ParseException { + Expression expr = null; + final int pos = SimpleCharStream.getPosition(); jj_consume_token(RETURN); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ARRAY: @@ -4517,11 +4876,6 @@ final int pos = jj_input_stream.getPosition(); case NULL: case TRUE: case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: case AT: case DOLLAR: case BANG: @@ -4530,15 +4884,21 @@ final int pos = jj_input_stream.getPosition(); case PLUS: case MINUS: case BIT_AND: + case INTEGER_LITERAL: + case FLOATING_POINT_LITERAL: + case STRING_LITERAL: + case IDENTIFIER: + case LPAREN: case DOLLAR_ID: - Expression(); + expr = Expression(); break; default: - jj_la1[125] = jj_gen; + jj_la1[122] = jj_gen; ; } try { jj_consume_token(SEMICOLON); + {if (true) return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'return' statement"; errorLevel = ERROR; @@ -4546,6 +4906,7 @@ final int pos = jj_input_stream.getPosition(); errorEnd = jj_input_stream.getPosition() + 1; {if (true) throw e;} } + throw new Error("Missing return statement in function"); } static final private boolean jj_2_1(int xla) { @@ -4604,1557 +4965,1556 @@ final int pos = jj_input_stream.getPosition(); return retval; } - static final private boolean jj_3R_189() { + static final private boolean jj_3R_160() { + if (jj_scan_token(DECR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_159() { if (jj_scan_token(INCR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_181() { + static final private boolean jj_3R_157() { Token xsp; xsp = jj_scanpos; - if (jj_3R_189()) { + if (jj_3R_159()) { jj_scanpos = xsp; - if (jj_3R_190()) return true; + if (jj_3R_160()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_166()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_171() { - if (jj_3R_178()) return true; + static final private boolean jj_3R_152() { + if (jj_3R_158()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_184() { - if (jj_3R_193()) return true; + static final private boolean jj_3R_151() { + if (jj_3R_157()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_170() { - if (jj_3R_177()) return true; + static final private boolean jj_3R_156() { + if (jj_scan_token(MINUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_184()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_183() { - if (jj_3R_193()) return true; + static final private boolean jj_3R_155() { + if (jj_scan_token(PLUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_44() { - if (jj_3R_52()) return true; + static final private boolean jj_3R_148() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_150()) { + jj_scanpos = xsp; + if (jj_3R_151()) { + jj_scanpos = xsp; + if (jj_3R_152()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_53()) return true; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_150() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_155()) { + jj_scanpos = xsp; + if (jj_3R_156()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_139()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_180() { - if (jj_scan_token(ARRAY)) return true; + static final private boolean jj_3R_154() { + if (jj_3R_148()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_5() { - if (jj_scan_token(IDENTIFIER)) return true; + static final private boolean jj_3R_149() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_153()) { + jj_scanpos = xsp; + if (jj_3R_154()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(STATICCLASSACCESS)) return true; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_153() { + if (jj_scan_token(AT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_182()) return true; + if (jj_3R_149()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_183()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_166() { + static final private boolean jj_3R_144() { + if (jj_3R_149()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_139() { Token xsp; xsp = jj_scanpos; - if (jj_3_5()) { - jj_scanpos = xsp; - if (jj_3R_170()) { + if (jj_3R_143()) { jj_scanpos = xsp; - if (jj_3R_171()) return true; + if (jj_3R_144()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_3() { - if (jj_3R_44()) return true; + static final private boolean jj_3R_143() { + if (jj_scan_token(BIT_AND)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_58() { - if (jj_3R_88()) return true; + if (jj_3R_148()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_57() { - if (jj_3R_44()) return true; + static final private boolean jj_3R_147() { + if (jj_scan_token(REMAINDER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_56() { - if (jj_3R_87()) return true; + static final private boolean jj_3R_146() { + if (jj_scan_token(SLASH)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_179() { - if (jj_3R_54()) return true; + static final private boolean jj_3R_145() { + if (jj_scan_token(STAR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_47() { + static final private boolean jj_3R_140() { Token xsp; xsp = jj_scanpos; - if (jj_3R_55()) { - jj_scanpos = xsp; - if (jj_3R_56()) { + if (jj_3R_145()) { jj_scanpos = xsp; - if (jj_3R_57()) { + if (jj_3R_146()) { jj_scanpos = xsp; - if (jj_3R_58()) return true; + if (jj_3R_147()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_55() { - if (jj_3R_86()) return true; + if (jj_3R_139()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_168() { - if (jj_3R_166()) return true; + static final private boolean jj_3R_134() { + if (jj_3R_139()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; - xsp = jj_scanpos; - if (jj_3R_181()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_140()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_46() { - if (jj_scan_token(ARRAY)) return true; + static final private boolean jj_3R_142() { + if (jj_scan_token(MINUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_85() { - if (jj_scan_token(OBJECT)) return true; + static final private boolean jj_3R_141() { + if (jj_scan_token(PLUS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_167() { - if (jj_scan_token(LPAREN)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + static final private boolean jj_3R_135() { Token xsp; xsp = jj_scanpos; - if (jj_3R_179()) { + if (jj_3R_141()) { jj_scanpos = xsp; - if (jj_3R_180()) return true; + if (jj_3R_142()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_134()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_141()) return true; + return false; + } + + static final private boolean jj_3R_128() { + if (jj_3R_134()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_135()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_84() { - if (jj_scan_token(INTEGER)) return true; + static final private boolean jj_3R_87() { + if (jj_scan_token(ASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_45() { - if (jj_3R_54()) return true; + static final private boolean jj_3R_198() { + if (jj_scan_token(COMMA)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_83() { - if (jj_scan_token(INT)) return true; + static final private boolean jj_3_7() { + if (jj_3R_46()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_82() { - if (jj_scan_token(FLOAT)) return true; + static final private boolean jj_3_2() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_41()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_81() { - if (jj_scan_token(DOUBLE)) return true; + static final private boolean jj_3R_138() { + if (jj_scan_token(RUNSIGNEDSHIFT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_80() { - if (jj_scan_token(REAL)) return true; + static final private boolean jj_3R_201() { + if (jj_scan_token(ARRAYASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_79() { - if (jj_scan_token(BOOLEAN)) return true; + static final private boolean jj_3R_197() { + if (jj_3R_41()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_2()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_78() { - if (jj_scan_token(BOOL)) return true; + static final private boolean jj_3R_137() { + if (jj_scan_token(RSIGNEDSHIFT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_77() { - if (jj_scan_token(STRING)) return true; + static final private boolean jj_3R_136() { + if (jj_scan_token(LSHIFT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_54() { + static final private boolean jj_3R_129() { Token xsp; xsp = jj_scanpos; - if (jj_3R_77()) { - jj_scanpos = xsp; - if (jj_3R_78()) { - jj_scanpos = xsp; - if (jj_3R_79()) { - jj_scanpos = xsp; - if (jj_3R_80()) { - jj_scanpos = xsp; - if (jj_3R_81()) { - jj_scanpos = xsp; - if (jj_3R_82()) { + if (jj_3R_136()) { jj_scanpos = xsp; - if (jj_3R_83()) { + if (jj_3R_137()) { jj_scanpos = xsp; - if (jj_3R_84()) { - jj_scanpos = xsp; - if (jj_3R_85()) return true; + if (jj_3R_138()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_128()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_4() { - if (jj_scan_token(LPAREN)) return true; + static final private boolean jj_3R_121() { + if (jj_3R_128()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; - xsp = jj_scanpos; - if (jj_3R_45()) { - jj_scanpos = xsp; - if (jj_3R_46()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RPAREN)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_129()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_160() { - if (jj_scan_token(DECR)) return true; + static final private boolean jj_3_6() { + if (jj_3R_45()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(SEMICOLON)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_103() { - if (jj_scan_token(ASSIGN)) return true; + static final private boolean jj_3R_192() { + if (jj_scan_token(LPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_197()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_198()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_165() { - if (jj_scan_token(LPAREN)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + static final private boolean jj_3R_133() { + if (jj_scan_token(GE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RPAREN)) return true; + return false; + } + + static final private boolean jj_3R_132() { + if (jj_scan_token(LE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_164() { - if (jj_3R_169()) return true; + static final private boolean jj_3R_131() { + if (jj_scan_token(GT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_163() { - if (jj_3R_168()) return true; + static final private boolean jj_3R_130() { + if (jj_scan_token(LT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_162() { - if (jj_3R_167()) return true; + static final private boolean jj_3R_41() { + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_201()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_158() { + static final private boolean jj_3R_122() { Token xsp; xsp = jj_scanpos; - if (jj_3R_161()) { + if (jj_3R_130()) { jj_scanpos = xsp; - if (jj_3R_162()) { - jj_scanpos = xsp; - if (jj_3R_163()) { + if (jj_3R_131()) { jj_scanpos = xsp; - if (jj_3R_164()) { + if (jj_3R_132()) { jj_scanpos = xsp; - if (jj_3R_165()) return true; + if (jj_3R_133()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_121()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_161() { - if (jj_scan_token(BANG)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_141()) return true; + static final private boolean jj_3R_119() { + if (jj_3R_121()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_122()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_159() { - if (jj_scan_token(INCR)) return true; + static final private boolean jj_3R_57() { + if (jj_3R_50()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_87()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_156() { - if (jj_scan_token(MINUS)) return true; + static final private boolean jj_3R_203() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_157() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_159()) { - jj_scanpos = xsp; - if (jj_3R_160()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_166()) return true; + static final private boolean jj_3R_202() { + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_203()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_102() { + static final private boolean jj_3R_58() { if (jj_scan_token(COMMA)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_52()) return true; + if (jj_3R_57()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_101() { - if (jj_3R_52()) return true; + static final private boolean jj_3R_47() { + if (jj_3R_57()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_58()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_149() { - if (jj_scan_token(REM)) return true; + static final private boolean jj_3R_200() { + if (jj_3R_202()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_154() { - if (jj_3R_158()) return true; + static final private boolean jj_3R_127() { + if (jj_scan_token(TRIPLEEQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_153() { - if (jj_3R_157()) return true; + static final private boolean jj_3R_126() { + if (jj_scan_token(BANGDOUBLEEQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_155() { - if (jj_scan_token(PLUS)) return true; + static final private boolean jj_3R_125() { + if (jj_scan_token(NOT_EQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_150() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_152()) { - jj_scanpos = xsp; - if (jj_3R_153()) { - jj_scanpos = xsp; - if (jj_3R_154()) return true; + static final private boolean jj_3R_124() { + if (jj_scan_token(DIF)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_152() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_155()) { - jj_scanpos = xsp; - if (jj_3R_156()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_141()) return true; + static final private boolean jj_3R_123() { + if (jj_scan_token(EQUAL_EQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_87() { - if (jj_scan_token(LIST)) return true; + static final private boolean jj_3R_93() { + if (jj_3R_52()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_199() { if (jj_scan_token(LPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3R_101()) jj_scanpos = xsp; + if (jj_3R_200()) jj_scanpos = xsp; else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - while (true) { - xsp = jj_scanpos; - if (jj_3R_102()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } if (jj_scan_token(RPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - xsp = jj_scanpos; - if (jj_3R_103()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_151() { - if (jj_scan_token(AT)) return true; + static final private boolean jj_3R_120() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_123()) { + jj_scanpos = xsp; + if (jj_3R_124()) { + jj_scanpos = xsp; + if (jj_3R_125()) { + jj_scanpos = xsp; + if (jj_3R_126()) { + jj_scanpos = xsp; + if (jj_3R_127()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_119()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_146() { + static final private boolean jj_3R_117() { + if (jj_3R_119()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_151()) { jj_scanpos = xsp; break; } + if (jj_3R_120()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } - if (jj_3R_150()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_86() { - if (jj_scan_token(PRINT)) return true; + static final private boolean jj_3R_108() { + if (jj_scan_token(LBRACE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_148() { - if (jj_scan_token(SLASH)) return true; + if (jj_scan_token(RBRACE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_141() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_145()) { - jj_scanpos = xsp; - if (jj_3R_146()) return true; + static final private boolean jj_3R_91() { + if (jj_scan_token(DOLLAR_ID)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_145() { - if (jj_scan_token(BIT_AND)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_150()) return true; + static final private boolean jj_3R_177() { + if (jj_scan_token(NULL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_140() { - if (jj_scan_token(RUNSIGNEDSHIFT)) return true; + static final private boolean jj_3R_176() { + if (jj_scan_token(FALSE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_147() { - if (jj_scan_token(STAR)) return true; + static final private boolean jj_3R_118() { + if (jj_scan_token(BIT_AND)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_117()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_142() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_147()) { - jj_scanpos = xsp; - if (jj_3R_148()) { - jj_scanpos = xsp; - if (jj_3R_149()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_141()) return true; + static final private boolean jj_3R_175() { + if (jj_scan_token(TRUE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_144() { - if (jj_scan_token(MINUS)) return true; + static final private boolean jj_3R_90() { + if (jj_scan_token(DOLLAR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_59()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_135() { - if (jj_scan_token(GE)) return true; + static final private boolean jj_3R_174() { + if (jj_scan_token(STRING_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_136() { - if (jj_3R_141()) return true; + static final private boolean jj_3R_115() { + if (jj_3R_117()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_142()) { jj_scanpos = xsp; break; } + if (jj_3R_118()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_139() { - if (jj_scan_token(RSIGNEDSHIFT)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_134() { - if (jj_scan_token(LE)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_143() { - if (jj_scan_token(PLUS)) return true; + static final private boolean jj_3R_173() { + if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_137() { + static final private boolean jj_3R_169() { Token xsp; xsp = jj_scanpos; - if (jj_3R_143()) { + if (jj_3R_172()) { jj_scanpos = xsp; - if (jj_3R_144()) return true; + if (jj_3R_173()) { + jj_scanpos = xsp; + if (jj_3R_174()) { + jj_scanpos = xsp; + if (jj_3R_175()) { + jj_scanpos = xsp; + if (jj_3R_176()) { + jj_scanpos = xsp; + if (jj_3R_177()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_136()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_130() { - if (jj_3R_136()) return true; + static final private boolean jj_3R_172() { + if (jj_scan_token(INTEGER_LITERAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_137()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_133() { - if (jj_scan_token(GT)) return true; + static final private boolean jj_3R_116() { + if (jj_scan_token(XOR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_115()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_138() { - if (jj_scan_token(LSHIFT)) return true; + static final private boolean jj_3R_92() { + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_131() { + static final private boolean jj_3R_60() { Token xsp; xsp = jj_scanpos; - if (jj_3R_138()) { - jj_scanpos = xsp; - if (jj_3R_139()) { + if (jj_3R_92()) { jj_scanpos = xsp; - if (jj_3R_140()) return true; + if (jj_3R_93()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_130()) return true; + return false; + } + + static final private boolean jj_3R_89() { + if (jj_scan_token(IDENTIFIER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_108()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_123() { - if (jj_3R_130()) return true; + static final private boolean jj_3R_113() { + if (jj_3R_115()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_131()) { jj_scanpos = xsp; break; } + if (jj_3R_116()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_200() { - if (jj_scan_token(COMMA)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_132() { - if (jj_scan_token(LT)) return true; + static final private boolean jj_3R_88() { + if (jj_scan_token(LBRACE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3_2() { - if (jj_scan_token(COMMA)) return true; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_43()) return true; + if (jj_scan_token(RBRACE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_124() { + static final private boolean jj_3R_59() { Token xsp; xsp = jj_scanpos; - if (jj_3R_132()) { + if (jj_3R_88()) { jj_scanpos = xsp; - if (jj_3R_133()) { + if (jj_3R_89()) { jj_scanpos = xsp; - if (jj_3R_134()) { + if (jj_3R_90()) { jj_scanpos = xsp; - if (jj_3R_135()) return true; + if (jj_3R_91()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_123()) return true; + return false; + } + + static final private boolean jj_3R_98() { + if (jj_scan_token(LBRACE)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_45()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_199() { - if (jj_3R_43()) return true; + static final private boolean jj_3R_49() { + if (jj_scan_token(LBRACKET)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_2()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } + xsp = jj_scanpos; + if (jj_3R_60()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RBRACKET)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_121() { - if (jj_3R_123()) return true; + static final private boolean jj_3R_114() { + if (jj_scan_token(BIT_OR)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_113()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_109() { + if (jj_3R_113()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_124()) { jj_scanpos = xsp; break; } + if (jj_3R_114()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_194() { - if (jj_scan_token(LPAREN)) return true; + static final private boolean jj_3R_95() { + if (jj_scan_token(DOLLAR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_199()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - xsp = jj_scanpos; - if (jj_3R_200()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RPAREN)) return true; + if (jj_3R_59()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_7() { - if (jj_3R_48()) return true; + static final private boolean jj_3R_110() { + if (jj_scan_token(DOT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3_8() { - if (jj_3R_49()) return true; + if (jj_3R_109()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_203() { - if (jj_scan_token(ARRAYASSIGN)) return true; + static final private boolean jj_3R_48() { + if (jj_scan_token(CLASSACCESS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + if (jj_3R_59()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_129() { - if (jj_scan_token(TRIPLEEQUAL)) return true; + static final private boolean jj_3R_40() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_48()) { + jj_scanpos = xsp; + if (jj_3R_49()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_43() { - if (jj_3R_47()) return true; + static final private boolean jj_3R_104() { + if (jj_3R_109()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; - xsp = jj_scanpos; - if (jj_3R_203()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_110()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_128() { - if (jj_scan_token(BANGDOUBLEEQUAL)) return true; + static final private boolean jj_3R_46() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_127() { - if (jj_scan_token(NE)) return true; + static final private boolean jj_3R_94() { + if (jj_scan_token(DOLLAR_ID)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_98()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_126() { - if (jj_scan_token(DIF)) return true; + static final private boolean jj_3R_61() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_94()) { + jj_scanpos = xsp; + if (jj_3R_95()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_125() { - if (jj_scan_token(EQ)) return true; + static final private boolean jj_3R_196() { + if (jj_3R_40()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_6() { - if (jj_3R_47()) return true; + static final private boolean jj_3R_112() { + if (jj_scan_token(_ANDL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(SEMICOLON)) return true; + return false; + } + + static final private boolean jj_3R_195() { + if (jj_3R_199()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_122() { + static final private boolean jj_3R_188() { Token xsp; xsp = jj_scanpos; - if (jj_3R_125()) { - jj_scanpos = xsp; - if (jj_3R_126()) { - jj_scanpos = xsp; - if (jj_3R_127()) { - jj_scanpos = xsp; - if (jj_3R_128()) { + if (jj_3R_195()) { jj_scanpos = xsp; - if (jj_3R_129()) return true; + if (jj_3R_196()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_121()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_119() { - if (jj_3R_121()) return true; + static final private boolean jj_3R_111() { + if (jj_scan_token(AND_AND)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_122()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_205() { - if (jj_scan_token(COMMA)) return true; + static final private boolean jj_3R_105() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_111()) { + jj_scanpos = xsp; + if (jj_3R_112()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_104()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_120() { - if (jj_scan_token(BIT_AND)) return true; + static final private boolean jj_3R_97() { + if (jj_scan_token(HOOK)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_119()) return true; + if (jj_3R_45()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(COLON)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_86()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_204() { - if (jj_3R_47()) return true; + static final private boolean jj_3R_102() { + if (jj_3R_104()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_205()) { jj_scanpos = xsp; break; } + if (jj_3R_105()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_117() { - if (jj_3R_119()) return true; + static final private boolean jj_3R_187() { + if (jj_3R_50()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_120()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_202() { - if (jj_3R_204()) return true; + static final private boolean jj_3R_186() { + if (jj_scan_token(IDENTIFIER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_118() { - if (jj_scan_token(XOR)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_117()) return true; + static final private boolean jj_3R_178() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_186()) { + jj_scanpos = xsp; + if (jj_3R_187()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_93() { - if (jj_scan_token(DOLLAR_ID)) return true; + static final private boolean jj_3_1() { + if (jj_3R_40()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_201() { - if (jj_scan_token(LPAREN)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_202()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RPAREN)) return true; + static final private boolean jj_3R_107() { + if (jj_scan_token(_ORL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_110() { - if (jj_scan_token(LBRACE)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RBRACE)) return true; + static final private boolean jj_3R_106() { + if (jj_scan_token(OR_OR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_115() { - if (jj_3R_117()) return true; + static final private boolean jj_3R_50() { + if (jj_3R_61()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_118()) { jj_scanpos = xsp; break; } + if (jj_3_1()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_196() { - if (jj_scan_token(FALSE)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_92() { - if (jj_scan_token(DOLLAR)) return true; + static final private boolean jj_3R_103() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_106()) { + jj_scanpos = xsp; + if (jj_3R_107()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_61()) return true; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_102()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_95() { - if (jj_3R_54()) return true; + static final private boolean jj_3R_96() { + if (jj_3R_102()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_103()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_195() { - if (jj_scan_token(TRUE)) return true; + static final private boolean jj_3R_86() { + if (jj_3R_96()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_185() { Token xsp; xsp = jj_scanpos; - if (jj_3R_195()) { - jj_scanpos = xsp; - if (jj_3R_196()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_97()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_116() { - if (jj_scan_token(BIT_OR)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_115()) return true; + static final private boolean jj_3R_191() { + if (jj_3R_50()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_176() { - if (jj_scan_token(NULL)) return true; + static final private boolean jj_3R_190() { + if (jj_scan_token(NEW)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_178()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_111() { - if (jj_3R_115()) return true; + static final private boolean jj_3R_74() { + if (jj_scan_token(TILDEEQUAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_116()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_175() { - if (jj_3R_185()) return true; + static final private boolean jj_3R_73() { + if (jj_scan_token(DOTASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_174() { - if (jj_scan_token(STRING_LITERAL)) return true; + static final private boolean jj_3R_72() { + if (jj_scan_token(ORASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_173() { - if (jj_scan_token(FLOATING_POINT_LITERAL)) return true; + static final private boolean jj_3R_189() { + if (jj_scan_token(IDENTIFIER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_169() { + static final private boolean jj_3R_180() { Token xsp; xsp = jj_scanpos; - if (jj_3R_172()) { - jj_scanpos = xsp; - if (jj_3R_173()) { - jj_scanpos = xsp; - if (jj_3R_174()) { + if (jj_3R_189()) { jj_scanpos = xsp; - if (jj_3R_175()) { + if (jj_3R_190()) { jj_scanpos = xsp; - if (jj_3R_176()) return true; + if (jj_3R_191()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_172() { - if (jj_scan_token(INTEGER_LITERAL)) return true; + static final private boolean jj_3R_71() { + if (jj_scan_token(XORASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_91() { - if (jj_scan_token(IDENTIFIER)) return true; + static final private boolean jj_3R_70() { + if (jj_scan_token(ANDASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_110()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_114() { - if (jj_scan_token(_ANDL)) return true; + static final private boolean jj_3R_69() { + if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_89() { - if (jj_scan_token(ASSIGN)) return true; + static final private boolean jj_3R_68() { + if (jj_scan_token(LSHIFTASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + return false; + } + + static final private boolean jj_3R_67() { + if (jj_scan_token(MINUSASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_90() { - if (jj_scan_token(LBRACE)) return true; + static final private boolean jj_3R_66() { + if (jj_scan_token(PLUSASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + return false; + } + + static final private boolean jj_3R_65() { + if (jj_scan_token(REMASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RBRACE)) return true; + return false; + } + + static final private boolean jj_3R_64() { + if (jj_scan_token(SLASHASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_61() { + static final private boolean jj_3R_63() { + if (jj_scan_token(STARASSIGN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + return false; + } + + static final private boolean jj_3R_51() { Token xsp; xsp = jj_scanpos; - if (jj_3R_90()) { + if (jj_3R_62()) { jj_scanpos = xsp; - if (jj_3R_91()) { + if (jj_3R_63()) { jj_scanpos = xsp; - if (jj_3R_92()) { + if (jj_3R_64()) { jj_scanpos = xsp; - if (jj_3R_93()) return true; + if (jj_3R_65()) { + jj_scanpos = xsp; + if (jj_3R_66()) { + jj_scanpos = xsp; + if (jj_3R_67()) { + jj_scanpos = xsp; + if (jj_3R_68()) { + jj_scanpos = xsp; + if (jj_3R_69()) { + jj_scanpos = xsp; + if (jj_3R_70()) { + jj_scanpos = xsp; + if (jj_3R_71()) { + jj_scanpos = xsp; + if (jj_3R_72()) { + jj_scanpos = xsp; + if (jj_3R_73()) { + jj_scanpos = xsp; + if (jj_3R_74()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_60() { - if (jj_scan_token(COMMA)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_59()) return true; + static final private boolean jj_3R_62() { + if (jj_scan_token(ASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_100() { - if (jj_scan_token(LBRACE)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; + static final private boolean jj_3R_182() { + if (jj_scan_token(ARRAY)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RBRACE)) return true; + if (jj_3R_192()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_112() { - if (jj_scan_token(DOT)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_111()) return true; + static final private boolean jj_3R_171() { + if (jj_3R_182()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_94() { + static final private boolean jj_3_8() { if (jj_3R_47()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_62() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_94()) { - jj_scanpos = xsp; - if (jj_3R_95()) return true; + static final private boolean jj_3R_181() { + if (jj_3R_188()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_106() { - if (jj_3R_111()) return true; + static final private boolean jj_3R_170() { + if (jj_3R_180()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_112()) { jj_scanpos = xsp; break; } + if (jj_3R_181()) { jj_scanpos = xsp; break; } if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } return false; } - static final private boolean jj_3R_97() { - if (jj_scan_token(DOLLAR)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_61()) return true; + static final private boolean jj_3R_179() { + if (jj_3R_188()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_109() { - if (jj_scan_token(_ORL)) return true; + static final private boolean jj_3R_42() { + if (jj_3R_50()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_51()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_51() { - if (jj_scan_token(LBRACKET)) return true; + static final private boolean jj_3R_101() { + if (jj_scan_token(ASSIGN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_62()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(RBRACKET)) return true; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_113() { - if (jj_scan_token(SC_AND)) return true; + static final private boolean jj_3_5() { + if (jj_scan_token(IDENTIFIER)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(STATICCLASSACCESS)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_178()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_179()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } return false; } - static final private boolean jj_3R_107() { + static final private boolean jj_3R_166() { Token xsp; xsp = jj_scanpos; - if (jj_3R_113()) { + if (jj_3_5()) { jj_scanpos = xsp; - if (jj_3R_114()) return true; + if (jj_3R_170()) { + jj_scanpos = xsp; + if (jj_3R_171()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_106()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_59() { - if (jj_3R_52()) return true; + static final private boolean jj_3_3() { + if (jj_3R_42()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_89()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_96() { - if (jj_scan_token(DOLLAR_ID)) return true; + static final private boolean jj_3R_56() { + if (jj_3R_86()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_100()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_63() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_96()) { - jj_scanpos = xsp; - if (jj_3R_97()) return true; + static final private boolean jj_3R_55() { + if (jj_3R_42()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_104() { - if (jj_3R_106()) return true; + static final private boolean jj_3R_194() { + if (jj_scan_token(DECR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_107()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_99() { - if (jj_scan_token(HOOK)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_47()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(COLON)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_88()) return true; + static final private boolean jj_3R_54() { + if (jj_3R_85()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_49() { - if (jj_3R_59()) return true; + static final private boolean jj_3R_193() { + if (jj_scan_token(INCR)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_60()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_50() { - if (jj_scan_token(CLASSACCESS)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_61()) return true; + static final private boolean jj_3R_185() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_193()) { + jj_scanpos = xsp; + if (jj_3R_194()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_42() { + static final private boolean jj_3R_45() { Token xsp; xsp = jj_scanpos; - if (jj_3R_50()) { + if (jj_3R_53()) { jj_scanpos = xsp; - if (jj_3R_51()) return true; + if (jj_3R_54()) { + jj_scanpos = xsp; + if (jj_3R_55()) { + jj_scanpos = xsp; + if (jj_3R_56()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_198() { - if (jj_3R_42()) return true; + static final private boolean jj_3R_53() { + if (jj_3R_84()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_197() { - if (jj_3R_201()) return true; + static final private boolean jj_3R_168() { + if (jj_3R_166()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_185()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_193() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_197()) { - jj_scanpos = xsp; - if (jj_3R_198()) return true; + static final private boolean jj_3R_100() { + if (jj_scan_token(COMMA)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_50()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3_1() { - if (jj_3R_42()) return true; + static final private boolean jj_3R_99() { + if (jj_3R_50()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_108() { - if (jj_scan_token(SC_OR)) return true; + static final private boolean jj_3R_83() { + if (jj_scan_token(OBJECT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_105() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_108()) { - jj_scanpos = xsp; - if (jj_3R_109()) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_104()) return true; + static final private boolean jj_3R_44() { + if (jj_scan_token(ARRAY)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_52() { - if (jj_3R_63()) return true; + static final private boolean jj_3R_184() { + if (jj_scan_token(ARRAY)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_1()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_98() { - if (jj_3R_104()) return true; + static final private boolean jj_3R_82() { + if (jj_scan_token(INTEGER)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_105()) { jj_scanpos = xsp; break; } - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } return false; } - static final private boolean jj_3R_192() { + static final private boolean jj_3R_183() { if (jj_3R_52()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_191() { - if (jj_scan_token(IDENTIFIER)) return true; + static final private boolean jj_3R_81() { + if (jj_scan_token(INT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_182() { + static final private boolean jj_3R_167() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3R_191()) { + if (jj_3R_183()) { jj_scanpos = xsp; - if (jj_3R_192()) return true; + if (jj_3R_184()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_scan_token(RPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_139()) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_88() { - if (jj_3R_98()) return true; + static final private boolean jj_3R_80() { + if (jj_scan_token(FLOAT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_99()) jj_scanpos = xsp; - else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_188() { + static final private boolean jj_3R_43() { if (jj_3R_52()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_76() { - if (jj_scan_token(TILDEEQUAL)) return true; + static final private boolean jj_3R_79() { + if (jj_scan_token(DOUBLE)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_190() { - if (jj_scan_token(DECR)) return true; + static final private boolean jj_3R_85() { + if (jj_scan_token(LIST)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_187() { - if (jj_scan_token(NEW)) return true; + if (jj_scan_token(LPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_182()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_99()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + while (true) { + xsp = jj_scanpos; + if (jj_3R_100()) { jj_scanpos = xsp; break; } + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } + if (jj_scan_token(RPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + xsp = jj_scanpos; + if (jj_3R_101()) jj_scanpos = xsp; + else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_75() { - if (jj_scan_token(DOTASSIGN)) return true; + static final private boolean jj_3R_78() { + if (jj_scan_token(REAL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_186() { - if (jj_scan_token(IDENTIFIER)) return true; + static final private boolean jj_3R_77() { + if (jj_scan_token(BOOLEAN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_177() { + static final private boolean jj_3_4() { + if (jj_scan_token(LPAREN)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; Token xsp; xsp = jj_scanpos; - if (jj_3R_186()) { + if (jj_3R_43()) { jj_scanpos = xsp; - if (jj_3R_187()) { - jj_scanpos = xsp; - if (jj_3R_188()) return true; + if (jj_3R_44()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_74() { - if (jj_scan_token(ORASSIGN)) return true; + if (jj_scan_token(RPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_73() { - if (jj_scan_token(XORASSIGN)) return true; + static final private boolean jj_3R_76() { + if (jj_scan_token(BOOL)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_72() { - if (jj_scan_token(ANDASSIGN)) return true; + static final private boolean jj_3R_84() { + if (jj_scan_token(PRINT)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_71() { - if (jj_scan_token(RSIGNEDSHIFTASSIGN)) return true; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_70() { - if (jj_scan_token(LSHIFTASSIGN)) return true; + static final private boolean jj_3R_75() { + if (jj_scan_token(STRING)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_48() { - if (jj_scan_token(IDENTIFIER)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_scan_token(COLON)) return true; + static final private boolean jj_3R_52() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_75()) { + jj_scanpos = xsp; + if (jj_3R_76()) { + jj_scanpos = xsp; + if (jj_3R_77()) { + jj_scanpos = xsp; + if (jj_3R_78()) { + jj_scanpos = xsp; + if (jj_3R_79()) { + jj_scanpos = xsp; + if (jj_3R_80()) { + jj_scanpos = xsp; + if (jj_3R_81()) { + jj_scanpos = xsp; + if (jj_3R_82()) { + jj_scanpos = xsp; + if (jj_3R_83()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_69() { - if (jj_scan_token(MINUSASSIGN)) return true; + static final private boolean jj_3R_165() { + if (jj_scan_token(LPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_68() { - if (jj_scan_token(PLUSASSIGN)) return true; + if (jj_3R_45()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - return false; - } - - static final private boolean jj_3R_67() { - if (jj_scan_token(REMASSIGN)) return true; + if (jj_scan_token(RPAREN)) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_66() { - if (jj_scan_token(SLASHASSIGN)) return true; + static final private boolean jj_3R_164() { + if (jj_3R_169()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_65() { - if (jj_scan_token(STARASSIGN)) return true; + static final private boolean jj_3R_163() { + if (jj_3R_168()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_178() { - if (jj_scan_token(ARRAY)) return true; - if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - if (jj_3R_194()) return true; + static final private boolean jj_3R_162() { + if (jj_3R_167()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_53() { + static final private boolean jj_3R_158() { Token xsp; xsp = jj_scanpos; - if (jj_3R_64()) { - jj_scanpos = xsp; - if (jj_3R_65()) { - jj_scanpos = xsp; - if (jj_3R_66()) { - jj_scanpos = xsp; - if (jj_3R_67()) { - jj_scanpos = xsp; - if (jj_3R_68()) { - jj_scanpos = xsp; - if (jj_3R_69()) { - jj_scanpos = xsp; - if (jj_3R_70()) { - jj_scanpos = xsp; - if (jj_3R_71()) { - jj_scanpos = xsp; - if (jj_3R_72()) { + if (jj_3R_161()) { jj_scanpos = xsp; - if (jj_3R_73()) { + if (jj_3R_162()) { jj_scanpos = xsp; - if (jj_3R_74()) { + if (jj_3R_163()) { jj_scanpos = xsp; - if (jj_3R_75()) { + if (jj_3R_164()) { jj_scanpos = xsp; - if (jj_3R_76()) return true; + if (jj_3R_165()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; - } else if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } - static final private boolean jj_3R_64() { - if (jj_scan_token(ASSIGN)) return true; + static final private boolean jj_3R_161() { + if (jj_scan_token(BANG)) return true; + if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; + if (jj_3R_139()) return true; if (jj_la == 0 && jj_scanpos == jj_lastpos) return false; return false; } @@ -6169,7 +6529,7 @@ final int pos = jj_input_stream.getPosition(); static public boolean lookingAhead = false; static private boolean jj_semLA; static private int jj_gen; - static final private int[] jj_la1 = new int[126]; + static final private int[] jj_la1 = new int[123]; static private int[] jj_la1_0; static private int[] jj_la1_1; static private int[] jj_la1_2; @@ -6183,19 +6543,19 @@ final int pos = jj_input_stream.getPosition(); jj_la1_4(); } private static void jj_la1_0() { - jj_la1_0 = new int[] {0xfcb0001e,0x6,0x6,0xfcb0001e,0x0,0xfcb00000,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x34000000,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x4000000,0x0,0x0,0x4000000,0x4000000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x4000000,0x0,0x0,0x34000000,0x34000000,0x0,0x0,0x0,0x34000000,0x0,0x0,0xc4800000,0xfc800000,0x8,0x6,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0xfcb00010,0xfcb00010,0xfcb00000,0xf4b00000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0xf4b00010,0xf4b00010,0x8000000,0x34000000,0x0,0xfc800010,0xfc800010,0x1000000,0x2000000,0xfc800010,0x1000000,0x2000000,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800000,0xfc800000,0x0,0x0,0x4000000,0x34000000,0x4000000,0xfc800000,0xfc800000,0x4000000,0x0,0x34000000,0x34000000,}; + jj_la1_0 = new int[] {0xfcb0001e,0x6,0x6,0xfcb0001e,0x0,0xfcb00000,0x0,0x600000,0x600000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x0,0x34000000,0x0,0x0,0x0,0x0,0x0,0x0,0x30000000,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x4000000,0x4000000,0x0,0x4000000,0x0,0x0,0x4000000,0x4000000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x4000000,0x0,0x0,0x34000000,0x34000000,0x0,0x0,0x34000000,0x0,0x0,0xc4800000,0xfc800000,0x8,0x6,0x80000000,0x0,0x0,0x0,0x0,0x0,0x0,0xfcb00010,0xfcb00010,0xfcb00000,0xf4b00000,0x0,0x0,0x0,0x0,0x4000000,0x0,0x0,0x0,0xf4b00010,0xf4b00010,0x8000000,0x0,0x34000000,0xfc800010,0xfc800010,0x1000000,0x2000000,0xfc800010,0x1000000,0x2000000,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800010,0xfc800000,0xfc800000,0x4000000,0x34000000,0x4000000,0xfc800000,0xfc800000,0x4000000,0x0,0x34000000,0x34000000,}; } private static void jj_la1_1() { - jj_la1_1 = new int[] {0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x21d7541f,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc20000,0x80,0xc30000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0xc30000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc30000,0x0,0xc30000,0x0,0x0,0xc30000,0x80000000,0x0,0x0,0x20,0x20,0x10000,0x10000,0x10000,0x0,0x20,0x80c30000,0x80c30000,0x20,0xc20000,0xc00000,0xc30000,0x0,0x0,0x2115541f,0x21d7541f,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x0,0x0,0x0,0x0,0x10000,0x0,0x900,0x900,0x21d7541f,0x21d7541f,0x0,0xc30000,0x900,0x21d7541f,0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x20,0x80,0x10000,0xc30000,0x10000,0x21d7541f,0x21d7541f,0x10000,0x0,0xc30000,0xc30000,}; + jj_la1_1 = new int[] {0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x21d7541f,0x2000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc20000,0x80,0xc30000,0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0xc30000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xc30000,0xc30000,0x0,0xc30000,0x0,0x0,0xc30000,0x80000000,0x0,0x0,0x20,0x20,0x10000,0x10000,0x10000,0x0,0x20,0x80c30000,0x80c30000,0x20,0xc20000,0xc30000,0x0,0x0,0x2115541f,0x21d7541f,0x0,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x0,0x0,0x0,0x0,0x10000,0x0,0x900,0x900,0x21d7541f,0x21d7541f,0x0,0x900,0xc30000,0x21d7541f,0x21d7541f,0x0,0x0,0x21d7541f,0x0,0x0,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x21d7541f,0x10000,0xc30000,0x10000,0x21d7541f,0x21d7541f,0x10000,0x0,0xc30000,0xc30000,}; } private static void jj_la1_2() { - jj_la1_2 = new int[] {0x45114400,0x0,0x0,0x45114400,0x40000000,0x45114400,0x0,0x0,0x0,0x80000000,0x0,0x4000000,0x0,0x4000000,0x4100000,0x4400,0x4400,0x114400,0x0,0x1114400,0x80000000,0x0,0x80000000,0x0,0x0,0xff,0x0,0x1114400,0x0,0x0,0x100,0x100,0x200,0x200,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1114400,0x0,0x1114400,0x0,0x0,0x1114400,0xff,0x0,0x0,0x11000000,0x11000000,0x100000,0x100000,0x100000,0x100000,0x11000000,0x11144ff,0x11144ff,0x10000000,0x14400,0x0,0x1114400,0x80000000,0x0,0x44100000,0x45114400,0x0,0x0,0x0,0x0,0x80000000,0x0,0x80000000,0x80000000,0x80000000,0x45114400,0x45114400,0x45114400,0x45114400,0x80000000,0x0,0x0,0x0,0x100000,0x4000000,0x0,0x0,0x45114400,0x45114400,0x0,0x1114400,0x0,0x45114400,0x45114400,0x0,0x0,0x45114400,0x0,0x0,0x45114400,0x45114400,0x45114400,0x45114400,0x45114400,0x45114400,0x45114400,0x10000000,0x0,0x100000,0x1114400,0x100000,0x45114400,0x45114400,0x100000,0x80000000,0x1114400,0x1114400,}; + jj_la1_2 = new int[] {0x804f0700,0x0,0x0,0x804f0700,0x0,0x804f0700,0x0,0x0,0x0,0x0,0x0,0x0,0x200,0x0,0x200,0x80000000,0x80000000,0x800c0000,0x0,0x804f0700,0x0,0x400000,0x0,0x400200,0x400000,0xff,0x0,0x804f0700,0x0,0x1000,0x20004000,0x20004000,0x40008000,0x40008000,0x0,0x800000,0x1000000,0x400000,0x0,0x0,0x0,0x0,0x1c000000,0x1c000000,0xc0000,0xc0000,0x2300000,0x2300000,0x804f0700,0x800f0700,0xc0000,0x800f0600,0x30000,0x400,0x80000200,0xff,0x30000,0x30000,0x0,0x0,0x200,0x200,0x200,0x200,0x0,0x804f07ff,0x804f07ff,0x0,0x80000000,0x804f0700,0x0,0x100,0x30300,0x804f0700,0x0,0x0,0x0,0x200,0x0,0x0,0x0,0x0,0x0,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x0,0x0,0x30000,0x30000,0x30200,0x2000,0x0,0x0,0x804f0700,0x804f0700,0x0,0x0,0x804f0700,0x804f0700,0x804f0700,0x0,0x0,0x804f0700,0x0,0x0,0x804f2700,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x804f0700,0x804f2700,0x30200,0x804f0700,0x30200,0x804f0700,0x804f2700,0x30200,0x0,0x804f0700,0x804f0700,}; } private static void jj_la1_3() { - jj_la1_3 = new int[] {0xe0e00000,0x0,0x0,0xe0e00000,0x0,0xe0e00000,0x0,0x0,0x0,0x0,0x400,0x0,0x400000,0x0,0x400000,0x0,0x0,0x80000000,0x0,0xe0e00000,0x0,0x0,0x0,0x400000,0x0,0x0,0x0,0xe0e00000,0x1ffc00,0x2000000,0x8000000,0x8000000,0x10000000,0x10000000,0x1,0x0,0x0,0x0,0x3c8,0x3c8,0x36,0x36,0x0,0x0,0x80000000,0x80000000,0x0,0x0,0x200000,0xe0e00000,0x80000000,0xe0c00000,0x60000000,0x800000,0x400000,0x0,0x60000000,0x60000000,0x0,0x0,0x400000,0x400000,0x400000,0x400000,0x0,0xe0e00000,0xe0e00000,0x0,0x0,0x0,0xe0e00000,0x0,0x200000,0x60600000,0xe0e00000,0x0,0x0,0x0,0x400000,0x0,0x400,0x0,0x0,0x0,0xe0e00000,0xe0e00000,0xe0e00000,0xe0e00000,0x0,0x400,0x601ffc00,0x601ffc00,0x60400000,0x4000000,0x0,0x0,0xe0e00000,0xe0e00000,0x0,0xe0e00000,0x0,0xe0e00000,0xe0e00000,0x0,0x0,0xe0e00000,0x0,0x0,0xe4e00000,0xe0e00000,0xe0e00000,0xe0e00000,0xe0e00000,0xe0e00000,0xe4e00000,0x0,0x0,0x60400000,0xe0e00000,0x60400000,0xe0e00000,0xe4e00000,0x60400000,0x0,0xe0e00000,0xe0e00000,}; + jj_la1_3 = new int[] {0x8a228,0x0,0x0,0x8a228,0x80000,0x8a228,0x0,0x0,0x0,0x100000,0x80000000,0x8000,0x0,0x8000,0x8200,0x8,0x8,0x228,0x0,0x2228,0x100000,0x0,0x100000,0x0,0x0,0x0,0x0,0x2228,0x80000000,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,0x0,0x0,0x79000000,0x79000000,0x6c00000,0x6c00000,0x0,0x0,0x0,0x0,0x0,0x0,0x2228,0x2228,0x0,0x2228,0x0,0x0,0x2228,0x0,0x0,0x0,0x22000,0x22000,0x200,0x200,0x200,0x200,0x22000,0x2228,0x2228,0x20000,0x28,0x2228,0x100000,0x0,0x88200,0x8a228,0x0,0x0,0x0,0x0,0x100000,0x80000000,0x100000,0x100000,0x100000,0x8a228,0x8a228,0x8a228,0x8a228,0x100000,0x80000000,0x80000000,0x80000000,0x200,0x8000,0x0,0x0,0x8a228,0x8a228,0x0,0x0,0x2228,0x8a228,0x8a228,0x0,0x0,0x8a228,0x0,0x0,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x8a228,0x200,0x2228,0x200,0x8a228,0x8a228,0x200,0x100000,0x2228,0x2228,}; } private static void jj_la1_4() { - jj_la1_4 = new int[] {0x1009,0x0,0x0,0x1009,0x0,0x1009,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x1,0x0,0x1009,0x0,0x8,0x0,0x1008,0x8,0x0,0x0,0x1009,0xc00,0x0,0x0,0x0,0x0,0x0,0x0,0x10,0x20,0x8,0x0,0x0,0x0,0x0,0x380,0x380,0x1,0x1,0x46,0x46,0x0,0x1009,0x1,0x1001,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x0,0x1009,0x1009,0x0,0x0,0x0,0x1009,0x0,0x0,0x1000,0x1009,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1009,0x1009,0x1009,0x1009,0x0,0x0,0xc00,0xc00,0x1000,0x0,0x0,0x0,0x1009,0x1009,0x0,0x1009,0x0,0x1009,0x1009,0x0,0x0,0x1009,0x0,0x0,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x1009,0x0,0x0,0x1000,0x1009,0x1000,0x1009,0x1009,0x1000,0x0,0x1009,0x1009,}; + jj_la1_4 = new int[] {0x1000,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x0,0x1000,0x0,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x1000,0xfff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x0,0x1000,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x0,0x0,0x1000,0x1000,0x0,0x0,0x0,0x1000,0x0,0x0,0x0,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x0,0x0,0xfff,0xfff,0x1000,0x0,0x0,0x0,0x1000,0x1000,0x0,0x0,0x1000,0x1000,0x1000,0x0,0x0,0x1000,0x0,0x0,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x1000,0x0,0x1000,0x1000,}; } static final private JJCalls[] jj_2_rtns = new JJCalls[8]; static private boolean jj_rescan = false; @@ -6214,7 +6574,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6224,7 +6584,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6241,7 +6601,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6251,7 +6611,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6267,7 +6627,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6276,7 +6636,7 @@ final int pos = jj_input_stream.getPosition(); token = new Token(); jj_ntk = -1; jj_gen = 0; - for (int i = 0; i < 126; i++) jj_la1[i] = -1; + for (int i = 0; i < 123; i++) jj_la1[i] = -1; for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls(); } @@ -6391,7 +6751,7 @@ final int pos = jj_input_stream.getPosition(); la1tokens[jj_kind] = true; jj_kind = -1; } - for (int i = 0; i < 126; i++) { + for (int i = 0; i < 123; i++) { if (jj_la1[i] == jj_gen) { for (int j = 0; j < 32; j++) { if ((jj_la1_0[i] & (1< TOKEN : { - : PHPPARSING -| : PHPPARSING -| {PHPParser.createNewHTMLCode();} : PHPPARSING +| {PHPParser.createNewHTMLCode();} : PHPPARSING +| "> : DEFAULT + "> {PHPParser.htmlStart = SimpleCharStream.getPosition();} : DEFAULT } /* Skip any character if we are not in php mode */ @@ -435,10 +482,37 @@ MORE : | } +//Misc token TOKEN : { - <_ORL : "OR"> -| <_ANDL : "AND"> + +| +| +| +| +| +} + +/* OPERATORS */ + TOKEN : +{ + +| +| +| +| +| +| +| +| +| +| +| +| +| >"> +| >>"> +| <_ORL : "OR"> +| <_ANDL : "AND"> } /* LITERALS */ @@ -535,10 +609,10 @@ MORE : { "> | -| +| | ="> -| "> | | @@ -558,32 +632,6 @@ MORE : | -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| >"> -| >>"> | >="> } @@ -598,6 +646,7 @@ void phpTest() : { Php() + {PHPParser.createNewHTMLCode();} } void phpFile() : @@ -653,10 +702,18 @@ void PhpBlock() : } } -void phpEchoBlock() : -{} +PHPEchoBlock phpEchoBlock() : { - Expression() [ ] + final Expression expr; + final int pos = SimpleCharStream.getPosition(); + PHPEchoBlock echoBlock; +} +{ + expr = Expression() [ ] + { + echoBlock = new PHPEchoBlock(expr,pos,SimpleCharStream.getPosition()); + pushOnAstNodes(echoBlock); + return echoBlock;} } void Php() : @@ -665,10 +722,11 @@ void Php() : (BlockStatement())* } -void ClassDeclaration() : +ClassDeclaration ClassDeclaration() : { - final PHPClassDeclaration classDeclaration; + final ClassDeclaration classDeclaration; final Token className; + Token superclassName = null; final int pos; } { @@ -686,7 +744,7 @@ void ClassDeclaration() : [ try { - + superclassName = } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; errorLevel = ERROR; @@ -696,21 +754,29 @@ void ClassDeclaration() : } ] { - if (currentSegment != null) { - classDeclaration = new PHPClassDeclaration(currentSegment,className.image,pos); + if (superclassName == null) { + classDeclaration = new ClassDeclaration(currentSegment, + className.image.toCharArray(), + superclassName.image.toCharArray(), + pos, + 0); + } else { + classDeclaration = new ClassDeclaration(currentSegment, + className.image.toCharArray(), + pos, + 0); + } currentSegment.add(classDeclaration); currentSegment = classDeclaration; - } - } - ClassBody() - { - if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); - } } + ClassBody(classDeclaration) + {currentSegment = (OutlineableWithChildren) currentSegment.getParent(); + classDeclaration.sourceEnd = SimpleCharStream.getPosition(); + pushOnAstNodes(classDeclaration); + return classDeclaration;} } -void ClassBody() : +void ClassBody(ClassDeclaration classDeclaration) : {} { try { @@ -722,7 +788,7 @@ void ClassBody() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - ( ClassBodyDeclaration() )* + ( ClassBodyDeclaration(classDeclaration) )* try { } catch (ParseException e) { @@ -737,24 +803,27 @@ void ClassBody() : /** * A class can contain only methods and fields. */ -void ClassBodyDeclaration() : -{} +void ClassBodyDeclaration(ClassDeclaration classDeclaration) : { - MethodDeclaration() -| FieldDeclaration() + MethodDeclaration method; + FieldDeclaration field; +} +{ + method = MethodDeclaration() {classDeclaration.addMethod(method);} +| field = FieldDeclaration() {classDeclaration.addVariable(field);} } /** * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;. */ -void FieldDeclaration() : +FieldDeclaration FieldDeclaration() : { - PHPVarDeclaration variableDeclaration; + VariableDeclaration variableDeclaration; } { variableDeclaration = VariableDeclarator() { - outlineInfo.addVariable(variableDeclaration.getVariable().getName()); + outlineInfo.addVariable(new String(variableDeclaration.name)); if (currentSegment != null) { currentSegment.add(variableDeclaration); } @@ -778,9 +847,10 @@ void FieldDeclaration() : } } -PHPVarDeclaration VariableDeclarator() : +VariableDeclaration VariableDeclarator() : { final String varName, varValue; + Expression initializer = null; final int pos = jj_input_stream.getPosition(); } { @@ -788,8 +858,7 @@ PHPVarDeclaration VariableDeclarator() : [ try { - varValue = VariableInitializer() - {return new PHPVarDeclaration(currentSegment,varName,pos,varValue);} + initializer = VariableInitializer() } catch (ParseException e) { errorMessage = "Literal expression expected in variable initializer"; errorLevel = ERROR; @@ -798,19 +867,33 @@ PHPVarDeclaration VariableDeclarator() : throw e; } ] - {return new PHPVarDeclaration(currentSegment,varName,pos);} + {return new VariableDeclaration(currentSegment, + varName.toCharArray(), + initializer, + pos);} } +/** + * A Variable name. + * @return the variable name (with suffix) + */ String VariableDeclaratorId() : { String expr; + Expression expression; final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); + ConstantIdentifier ex; } { try { expr = Variable() {buff.append(expr);} ( LOOKAHEAD(2) - expr = VariableSuffix() {buff.append(expr);} + {ex = new ConstantIdentifier(expr.toCharArray(), + pos, + SimpleCharStream.getPosition());} + expression = VariableSuffix(ex) + {buff.append(expression.toStringExpression());} )* {return buff.toString();} } catch (ParseException e) { @@ -824,22 +907,22 @@ String VariableDeclaratorId() : String Variable(): { - String expr = null; + final StringBuffer buff; + Expression expression = null; final Token token; + final String expr; } { - token = [ expr = Expression() ] + token = [ expression = Expression() ] { - if (expr == null && !assigning) { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image.substring(1)); - if (var != null) { - var.getVariable().setUsed(true); - } - } + if (expression == null && !assigning) { return token.image.substring(1); } - return token + "{" + expr + "}"; + buff = new StringBuffer(token.image); + buff.append('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + return buff.toString(); } | expr = VariableName() @@ -848,127 +931,113 @@ String Variable(): String VariableName(): { -String expr = null; -final Token token; + final StringBuffer buff; + String expr = null; + Expression expression = null; + final Token token; } { - expr = Expression() - {return "{"+expr+"}";} + expression = Expression() + {buff = new StringBuffer('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + return buff.toString();} | - token = [ expr = Expression() ] + token = [ expression = Expression() ] { - if (expr == null) { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image); - if (var != null) { - var.getVariable().setUsed(true); - } - } + if (expression == null) { return token.image; } - return token + "{" + expr + "}"; + buff = new StringBuffer(token.image); + buff.append('{'); + buff.append(expression.toStringExpression()); + buff.append('}'); + return buff.toString(); } | expr = VariableName() { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(expr); - if (var != null) { - var.getVariable().setUsed(true); - } - } - return "$" + expr; + buff = new StringBuffer('$'); + buff.append(expr); + return buff.toString(); } | - token = - { - if (currentFunction != null) { - PHPVarDeclaration var = currentFunction.getParameter(token.image.substring(1)); - if (var != null) { - var.getVariable().setUsed(true); - } - } - return token.image + expr; - } -/*| pas besoin ? - token = [expr = VariableName()] - { - if (expr == null) { - return token.image; - } - return token.image + expr; - }*/ + token = {return token.image;} } -String VariableInitializer() : +Expression VariableInitializer() : { - final String expr; + final Expression expr; final Token token; + final int pos = SimpleCharStream.getPosition(); } { expr = Literal() {return expr;} | (token = | token = ) - {return "-" + token.image;} + {return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + OperatorIds.MINUS, + pos);} | (token = | token = ) - {return "+" + token.image;} + {return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + OperatorIds.PLUS, + pos);} | expr = ArrayDeclarator() {return expr;} | token = - {return token.image;} + {return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());} } -String ArrayVariable() : +ArrayVariableDeclaration ArrayVariable() : { -String expr; -final StringBuffer buff = new StringBuffer(); +Expression expr; +Expression expr2 = null; } { - expr = Expression() - {buff.append(expr);} - [ expr = Expression() - {buff.append("=>").append(expr);}] - {return buff.toString();} + expr = Expression() [ expr2 = Expression()] + {return new ArrayVariableDeclaration(expr,expr2);} } -String ArrayInitializer() : +ArrayVariableDeclaration[] ArrayInitializer() : { -String expr; -final StringBuffer buff = new StringBuffer("("); + ArrayVariableDeclaration expr; + final ArrayList list = new ArrayList(); } { [ expr = ArrayVariable() - {buff.append(expr);} + {list.add(expr);} ( LOOKAHEAD(2) expr = ArrayVariable() - {buff.append(",").append(expr);} + {list.add(expr);} )* ] - [ {buff.append(",");}] + [ {list.add(null);}] - { - buff.append(")"); - return buff.toString(); - } + {return (ArrayVariableDeclaration[]) list.toArray();} } /** * A Method Declaration. * function MetodDeclarator() Block() */ -void MethodDeclaration() : +MethodDeclaration MethodDeclaration() : { - final PHPFunctionDeclaration functionDeclaration; + final MethodDeclaration functionDeclaration; Token functionToken; + final Block block; } { functionToken = try { functionDeclaration = MethodDeclarator() - {outlineInfo.addVariable(functionDeclaration.getName());} + {outlineInfo.addVariable(new String(functionDeclaration.name));} } catch (ParseException e) { if (errorMessage != null) { throw e; @@ -986,28 +1055,14 @@ void MethodDeclaration() : } currentFunction = functionDeclaration; } - Block() + block = Block() { - Hashtable parameters = currentFunction.getParameters(); - Enumeration vars = parameters.elements(); - while (vars.hasMoreElements()) { - PHPVarDeclaration o = (PHPVarDeclaration) vars.nextElement(); - if (!o.getVariable().isUsed()) { - try { - setMarker(fileToParse, - "Parameter "+o.getVariable().getName()+" is never used in function", - functionToken.beginLine, - WARNING, - "Line " + token.beginLine); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } - } + functionDeclaration.statements = block.statements; currentFunction = null; if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); + currentSegment = (OutlineableWithChildren) currentSegment.getParent(); } + return functionDeclaration; } } @@ -1016,21 +1071,23 @@ void MethodDeclaration() : * [&] IDENTIFIER(parameters ...). * @return a function description for the outline */ -PHPFunctionDeclaration MethodDeclarator() : +MethodDeclaration MethodDeclarator() : { final Token identifier; - final StringBuffer methodDeclaration = new StringBuffer(); + Token reference = null; final Hashtable formalParameters; - final int pos = jj_input_stream.getPosition(); + final int pos = SimpleCharStream.getPosition(); } { - [ {methodDeclaration.append("&");} ] + [ reference = ] identifier = formalParameters = FormalParameters() - { - methodDeclaration.append(identifier); - return new PHPFunctionDeclaration(currentSegment,methodDeclaration.toString(),pos,formalParameters); - } + {return new MethodDeclaration(currentSegment, + identifier.image.toCharArray(), + formalParameters, + reference != null, + pos, + SimpleCharStream.getPosition());} } /** @@ -1041,7 +1098,7 @@ Hashtable FormalParameters() : { String expr; final StringBuffer buff = new StringBuffer("("); - PHPVarDeclaration var; + VariableDeclaration var; final Hashtable parameters = new Hashtable(); } { @@ -1055,10 +1112,10 @@ Hashtable FormalParameters() : throw e; } [ var = FormalParameter() - {parameters.put(var.getVariable().getName(),var);} + {parameters.put(new String(var.name),var);} ( var = FormalParameter() - {parameters.put(var.getVariable().getName(),var);} + {parameters.put(new String(var.name),var);} )* ] try { @@ -1077,40 +1134,55 @@ Hashtable FormalParameters() : * A formal parameter. * $varname[=value] (,$varname[=value]) */ -PHPVarDeclaration FormalParameter() : +VariableDeclaration FormalParameter() : { - final PHPVarDeclaration variableDeclaration; + final VariableDeclaration variableDeclaration; Token token = null; } { [token = ] variableDeclaration = VariableDeclarator() { if (token != null) { - variableDeclaration.getVariable().setReference(true); + variableDeclaration.setReference(true); } - return variableDeclaration; - } -} - -String Type() : -{} -{ - {return "string";} -| {return "bool";} -| {return "boolean";} -| {return "real";} -| {return "double";} -| {return "float";} -| {return "int";} -| {return "integer";} -| {return "object";} -} - -String Expression() : -{ - final String expr; - final String assignOperator; - final String expr2; + return variableDeclaration;} +} + +ConstantIdentifier Type() : +{final int pos;} +{ + {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.STRING, + pos,pos-6);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.BOOL, + pos,pos-4);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.BOOLEAN, + pos,pos-7);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.REAL, + pos,pos-4);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.DOUBLE, + pos,pos-5);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.FLOAT, + pos,pos-5);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.INT, + pos,pos-3);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.INTEGER, + pos,pos-7);} +| {pos = SimpleCharStream.getPosition(); + return new ConstantIdentifier(Types.OBJECT, + pos,pos-6);} +} + +Expression Expression() : +{ + final Expression expr; } { expr = PrintExpression() {return expr;} @@ -1124,17 +1196,18 @@ String Expression() : * A Variable assignation. * varName (an assign operator) any expression */ -String varAssignation() : +VarAssignation varAssignation() : { - String varName,assignOperator,expr2; - PHPVarDeclaration variable; + String varName; + final Expression expression; + final int assignOperator; final int pos = SimpleCharStream.getPosition(); } { varName = VariableDeclaratorId() assignOperator = AssignmentOperator() try { - expr2 = Expression() + expression = Expression() } catch (ParseException e) { if (errorMessage != null) { throw e; @@ -1145,300 +1218,286 @@ String varAssignation() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {return varName + assignOperator + expr2;} + {return new VarAssignation(varName.toCharArray(), + expression, + assignOperator, + pos, + SimpleCharStream.getPosition());} } -String AssignmentOperator() : +int AssignmentOperator() : {} { - {return "=";} -| {return "*=";} -| {return "/=";} -| {return "%=";} -| {return "+=";} -| {return "-=";} -| {return "<<=";} -| {return ">>=";} -| {return "&=";} -| {return "|=";} -| {return "|=";} -| {return ".=";} -| {return "~=";} + {return VarAssignation.EQUAL;} +| {return VarAssignation.STAR_EQUAL;} +| {return VarAssignation.SLASH_EQUAL;} +| {return VarAssignation.REM_EQUAL;} +| {return VarAssignation.PLUS_EQUAL;} +| {return VarAssignation.MINUS_EQUAL;} +| {return VarAssignation.LSHIFT_EQUAL;} +| {return VarAssignation.RSIGNEDSHIFT_EQUAL;} +| {return VarAssignation.AND_EQUAL;} +| {return VarAssignation.XOR_EQUAL;} +| {return VarAssignation.OR_EQUAL;} +| {return VarAssignation.DOT_EQUAL;} +| {return VarAssignation.TILDE_EQUAL;} } -String ConditionalExpression() : +Expression ConditionalExpression() : { - final String expr; - String expr2 = null; - String expr3 = null; + final Expression expr; + Expression expr2 = null; + Expression expr3 = null; } { expr = ConditionalOrExpression() [ expr2 = Expression() expr3 = ConditionalExpression() ] { if (expr3 == null) { return expr; - } else { - return expr + "?" + expr2 + ":" + expr3; } + return new ConditionalExpression(expr,expr2,expr3); } } -String ConditionalOrExpression() : +Expression ConditionalOrExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = ConditionalAndExpression() - {buff.append(expr);} ( - (operator = | operator = <_ORL>) expr = ConditionalAndExpression() + ( + {operator = OperatorIds.OR_OR;} + | <_ORL> {operator = OperatorIds.ORL;} + ) expr2 = ConditionalAndExpression() { - buff.append(operator.image); - buff.append(expr); + expr = new BinaryExpression(expr,expr2,operator); } )* - { - return buff.toString(); - } + {return expr;} } -String ConditionalAndExpression() : +Expression ConditionalAndExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = ConcatExpression() - {buff.append(expr);} ( - (operator = | operator = <_ANDL>) expr = ConcatExpression() - { - buff.append(operator.image); - buff.append(expr); - } + ( {operator = OperatorIds.AND_AND;} + | <_ANDL> {operator = OperatorIds.ANDL;}) + expr2 = ConcatExpression() {expr = new BinaryExpression(expr,expr2,operator);} )* - {return buff.toString();} + {return expr;} } -String ConcatExpression() : +Expression ConcatExpression() : { - String expr; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; } { expr = InclusiveOrExpression() - {buff.append(expr);} ( - expr = InclusiveOrExpression() - {buff.append(".").append(expr);} + expr2 = InclusiveOrExpression() + {expr = new BinaryExpression(expr,expr2,OperatorIds.DOT);} )* - {return buff.toString();} + {return expr;} } -String InclusiveOrExpression() : +Expression InclusiveOrExpression() : { - String expr; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; } { expr = ExclusiveOrExpression() - {buff.append(expr);} - ( - expr = ExclusiveOrExpression() - {buff.append("|").append(expr);} + ( expr2 = ExclusiveOrExpression() + {expr = new BinaryExpression(expr,expr2,OperatorIds.OR);} )* - {return buff.toString();} + {return expr;} } -String ExclusiveOrExpression() : +Expression ExclusiveOrExpression() : { - String expr; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; } { expr = AndExpression() - { - buff.append(expr); - } ( - expr = AndExpression() - { - buff.append("^"); - buff.append(expr); - } + expr2 = AndExpression() + {expr = new BinaryExpression(expr,expr2,OperatorIds.XOR);} )* - { - return buff.toString(); - } + {return expr;} } -String AndExpression() : +Expression AndExpression() : { - String expr; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; } { expr = EqualityExpression() - { - buff.append(expr); - } ( - expr = EqualityExpression() - { - buff.append("&").append(expr); - } + expr2 = EqualityExpression() + {expr = new BinaryExpression(expr,expr2,OperatorIds.AND);} )* - {return buff.toString();} + {return expr;} } -String EqualityExpression() : +Expression EqualityExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = RelationalExpression() - {buff.append(expr);} ( - ( operator = - | operator = - | operator = - | operator = - | operator = + ( {operator = OperatorIds.EQUAL_EQUAL;} + | {operator = OperatorIds.DIF;} + | {operator = OperatorIds.DIF;} + | {operator = OperatorIds.BANG_EQUAL_EQUAL;} + | {operator = OperatorIds.EQUAL_EQUAL_EQUAL;} ) try { - expr = RelationalExpression() + expr2 = RelationalExpression() } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected after '"+operator.image+"'"; + if (errorMessage != null) { + throw e; + } + errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; errorLevel = ERROR; errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = jj_input_stream.getPosition() + 1; throw e; } { - buff.append(operator.image); - buff.append(expr); + expr = new BinaryExpression(expr,expr2,operator); } )* - {return buff.toString();} + {return expr;} } -String RelationalExpression() : +Expression RelationalExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = ShiftExpression() - {buff.append(expr);} ( - ( operator = | operator = | operator = | operator = ) expr = ShiftExpression() - {buff.append(operator.image).append(expr);} + ( {operator = OperatorIds.LESS;} + | {operator = OperatorIds.GREATER;} + | {operator = OperatorIds.LESS_EQUAL;} + | {operator = OperatorIds.GREATER_EQUAL;}) + expr2 = ShiftExpression() + {expr = new BinaryExpression(expr,expr2,operator);} )* - {return buff.toString();} + {return expr;} } -String ShiftExpression() : +Expression ShiftExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = AdditiveExpression() - {buff.append(expr);} ( - (operator = | operator = | operator = ) expr = AdditiveExpression() - { - buff.append(operator.image); - buff.append(expr); - } + ( {operator = OperatorIds.LEFT_SHIFT;} + | {operator = OperatorIds.RIGHT_SHIFT;} + | {operator = OperatorIds.UNSIGNED_RIGHT_SHIFT;}) + expr2 = AdditiveExpression() + {expr = new BinaryExpression(expr,expr2,operator);} )* - {return buff.toString();} + {return expr;} } -String AdditiveExpression() : +Expression AdditiveExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); + Expression expr,expr2; + int operator; } { expr = MultiplicativeExpression() - {buff.append(expr);} ( - ( operator = | operator = ) expr = MultiplicativeExpression() - { - buff.append(operator.image); - buff.append(expr); - } + ( {operator = OperatorIds.PLUS;} + | {operator = OperatorIds.MINUS;} ) + expr2 = MultiplicativeExpression() + {expr = new BinaryExpression(expr,expr2,operator);} )* - {return buff.toString();} + {return expr;} } -String MultiplicativeExpression() : +Expression MultiplicativeExpression() : { - String expr; - Token operator; - final StringBuffer buff = new StringBuffer();} + Expression expr,expr2; + int operator; +} { try { expr = UnaryExpression() } catch (ParseException e) { + if (errorMessage != null) { + throw e; + } errorMessage = "unexpected token '"+e.currentToken.next.image+"'"; errorLevel = ERROR; errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {buff.append(expr);} ( - ( operator = | operator = | operator = ) expr = UnaryExpression() - { - buff.append(operator.image); - buff.append(expr); - } + ( {operator = OperatorIds.MULTIPLY;} + | {operator = OperatorIds.DIVIDE;} + | {operator = OperatorIds.REMAINDER;}) + expr2 = UnaryExpression() + {expr = new BinaryExpression(expr,expr2,operator);} )* - {return buff.toString();} + {return expr;} } /** * An unary expression starting with @, & or nothing */ -String UnaryExpression() : +Expression UnaryExpression() : { - final String expr; - final Token token; - final StringBuffer buff = new StringBuffer(); + Expression expr; + final int pos = SimpleCharStream.getPosition(); } { - token = expr = UnaryExpressionNoPrefix() - { - if (token == null) { - return expr; - } - return token.image + expr; - } -| ( {buff.append("@");})* + expr = UnaryExpressionNoPrefix() + {return new PrefixedUnaryExpression(expr,OperatorIds.AND,pos);} +| + expr = AtUnaryExpression() + {return expr;} +} + +Expression AtUnaryExpression() : +{ + Expression expr; + final int pos = SimpleCharStream.getPosition(); +} +{ + + expr = AtUnaryExpression() + {return new PrefixedUnaryExpression(expr,OperatorIds.AT,pos);} +| expr = UnaryExpressionNoPrefix() - {return buff.append(expr).toString();} + {return expr;} } -String UnaryExpressionNoPrefix() : + +Expression UnaryExpressionNoPrefix() : { - final String expr; - final Token token; + Expression expr; + int operator; + final int pos = SimpleCharStream.getPosition(); } { - ( token = | token = ) expr = UnaryExpression() - { - return token.image + expr; - } + ( {operator = OperatorIds.PLUS;} + | {operator = OperatorIds.MINUS;}) + expr = UnaryExpression() + {return new PrefixedUnaryExpression(expr,operator,pos);} | expr = PreIncDecExpression() {return expr;} @@ -1448,22 +1507,26 @@ String UnaryExpressionNoPrefix() : } -String PreIncDecExpression() : +Expression PreIncDecExpression() : { -final String expr; -final Token token; +final Expression expr; +final int operator; + final int pos = SimpleCharStream.getPosition(); } { - (token = | token = ) expr = PrimaryExpression() - {return token.image + expr;} + ( {operator = OperatorIds.PLUS_PLUS;} + | {operator = OperatorIds.MINUS_MINUS;}) + expr = PrimaryExpression() + {return new PrefixedUnaryExpression(expr,operator,pos);} } -String UnaryExpressionNotPlusMinus() : +Expression UnaryExpressionNotPlusMinus() : { - final String expr; + Expression expr; + final int pos = SimpleCharStream.getPosition(); } { - expr = UnaryExpression() {return "!" + expr;} + expr = UnaryExpression() {return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);} | LOOKAHEAD( (Type() | ) ) expr = CastExpression() {return expr;} | expr = PostfixExpression() {return expr;} @@ -1478,114 +1541,146 @@ String UnaryExpressionNotPlusMinus() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {return "("+expr+")";} + {return expr;} } -String CastExpression() : +CastExpression CastExpression() : { -final String type, expr; +final ConstantIdentifier type; +final Expression expr; +final int pos = SimpleCharStream.getPosition(); } { - (type = Type() | {type = "array";}) expr = UnaryExpression() - {return "(" + type + ")" + expr;} + + (type = Type() + | {type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition());}) + expr = UnaryExpression() + {return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());} } -String PostfixExpression() : +Expression PostfixExpression() : { - final String expr; - Token operator = null; + Expression expr; + int operator = -1; + final int pos = SimpleCharStream.getPosition(); } { - expr = PrimaryExpression() [ operator = | operator = ] + expr = PrimaryExpression() + [ {operator = OperatorIds.PLUS_PLUS;} + | {operator = OperatorIds.MINUS_MINUS;}] { - if (operator == null) { + if (operator == -1) { return expr; } - return expr + operator.image; + return new PostfixedUnaryExpression(expr,operator,pos); } } -String PrimaryExpression() : +Expression PrimaryExpression() : { final Token identifier; - String expr; + Expression expr; final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); } { LOOKAHEAD(2) identifier = expr = ClassIdentifier() - {buff.append(identifier.image).append("::").append(expr);} - ( - expr = PrimarySuffix() - {buff.append(expr);} - )* - {return buff.toString();} + {expr = new ClassAccess(new ConstantIdentifier(identifier.image.toCharArray(), + pos, + SimpleCharStream.getPosition()), + expr, + ClassAccess.STATIC);} + (expr = PrimarySuffix(expr))* + {return expr;} | - expr = PrimaryPrefix() {buff.append(expr);} - ( expr = PrimarySuffix() {buff.append(expr);} )* - {return buff.toString();} + expr = PrimaryPrefix() + (expr = PrimarySuffix(expr))* + {return expr;} | expr = ArrayDeclarator() - {return "array" + expr;} + {return expr;} } -String ArrayDeclarator() : +ArrayInitializer ArrayDeclarator() : { - final String expr; + final ArrayVariableDeclaration[] vars; + final int pos = SimpleCharStream.getPosition(); } { - expr = ArrayInitializer() - {return "array" + expr;} + vars = ArrayInitializer() + {return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());} } -String PrimaryPrefix() : +Expression PrimaryPrefix() : { - final String expr; + final Expression expr; final Token token; + final String var; + final int pos = SimpleCharStream.getPosition(); } { - token = {return token.image;} -| expr = ClassIdentifier() {return "new " + expr;} -| expr = VariableDeclaratorId() {return expr;} + token = {return new ConstantIdentifier(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition());} +| expr = ClassIdentifier() {return new PrefixedUnaryExpression(expr, + OperatorIds.NEW, + pos);} +| var = VariableDeclaratorId() {return new ConstantIdentifier(var.toCharArray(), + pos, + SimpleCharStream.getPosition());} } -String classInstantiation() : +PrefixedUnaryExpression classInstantiation() : { - String expr; - final StringBuffer buff = new StringBuffer("new "); + Expression expr; + final StringBuffer buff; + final int pos = SimpleCharStream.getPosition(); } { expr = ClassIdentifier() - {buff.append(expr);} [ + {buff = new StringBuffer(expr.toStringExpression());} expr = PrimaryExpression() - {buff.append(expr);} + {buff.append(expr.toStringExpression()); + expr = new ConstantIdentifier(buff.toString().toCharArray(), + pos, + SimpleCharStream.getPosition());} ] - {return buff.toString();} + {return new PrefixedUnaryExpression(expr, + OperatorIds.NEW, + pos);} } -String ClassIdentifier(): +ConstantIdentifier ClassIdentifier(): { final String expr; final Token token; + final int pos = SimpleCharStream.getPosition(); } { - token = {return token.image;} -| expr = VariableDeclaratorId() {return expr;} + token = {return new ConstantIdentifier(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition());} +| expr = VariableDeclaratorId() {return new ConstantIdentifier(expr.toCharArray(), + pos, + SimpleCharStream.getPosition());} } -String PrimarySuffix() : +AbstractSuffixExpression PrimarySuffix(Expression prefix) : { - final String expr; + final AbstractSuffixExpression expr; } { - expr = Arguments() {return expr;} -| expr = VariableSuffix() {return expr;} + expr = Arguments(prefix) {return expr;} +| expr = VariableSuffix(prefix) {return expr;} } -String VariableSuffix() : +AbstractSuffixExpression VariableSuffix(Expression prefix) : { String expr = null; + final int pos = SimpleCharStream.getPosition(); + Expression expression = null; } { @@ -1598,9 +1693,11 @@ String VariableSuffix() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {return "->" + expr;} + {return new ClassAccess(prefix, + new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()), + ClassAccess.NORMAL);} | - [ expr = Expression() | expr = Type() ] //Not good + [ expression = Expression() | expression = Type() ] //Not good try { } catch (ParseException e) { @@ -1610,40 +1707,35 @@ String VariableSuffix() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - { - if(expr == null) { - return "[]"; - } - return "[" + expr + "]"; - } + {return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());} } -String Literal() : +Literal Literal() : { - final String expr; final Token token; + final int pos; } { - token = {return token.image;} -| token = {return token.image;} -| token = {return token.image;} -| expr = BooleanLiteral() {return expr;} -| {return "null";} -} - -String BooleanLiteral() : -{} -{ - {return "true";} -| {return "false";} + token = {pos = SimpleCharStream.getPosition(); + return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} +| token = {pos = SimpleCharStream.getPosition(); + return new NumberLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} +| token = {pos = SimpleCharStream.getPosition(); + return new StringLiteral(token.image.toCharArray(),pos-token.image.length(),pos);} +| {pos = SimpleCharStream.getPosition(); + return new TrueLiteral(pos-4,pos);} +| {pos = SimpleCharStream.getPosition(); + return new FalseLiteral(pos-4,pos);} +| {pos = SimpleCharStream.getPosition(); + return new NullLiteral(pos-4,pos);} } -String Arguments() : +FunctionCall Arguments(Expression func) : { -String expr = null; +ArgumentDeclaration[] args = null; } { - [ expr = ArgumentList() ] + [ args = ArgumentList() ] try { } catch (ParseException e) { @@ -1653,25 +1745,21 @@ String expr = null; errorEnd = jj_input_stream.getPosition() + 1; throw e; } - { - if (expr == null) { - return "()"; - } - return "(" + expr + ")"; - } + {return new FunctionCall(func,args,SimpleCharStream.getPosition());} } -String ArgumentList() : +ArgumentDeclaration[] ArgumentList() : { -String expr; -final StringBuffer buff = new StringBuffer(); +Expression expr; +final ArrayList list = new ArrayList(); } { expr = Expression() - {buff.append(expr);} + {list.add(expr);} ( try { expr = Expression() + {list.add(expr);} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list"; errorLevel = ERROR; @@ -1679,19 +1767,21 @@ final StringBuffer buff = new StringBuffer(); errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {buff.append(",").append(expr);} )* - {return buff.toString();} + {return (ArgumentDeclaration[]) list.toArray();} } /** * A Statement without break. */ -void StatementNoBreak() : -{} +Statement StatementNoBreak() : +{ + final Statement statement; + Token token = null; +} { LOOKAHEAD(2) - Expression() + statement = Expression() try { } catch (ParseException e) { @@ -1703,11 +1793,12 @@ void StatementNoBreak() : throw e; } } + {return statement;} | LOOKAHEAD(2) - LabeledStatement() -| Block() -| EmptyStatement() -| StatementExpression() + statement = LabeledStatement() {return statement;} +| statement = Block() {return statement;} +| statement = EmptyStatement() {return statement;} +| statement = StatementExpression() try { } catch (ParseException e) { @@ -1717,35 +1808,46 @@ void StatementNoBreak() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } -| SwitchStatement() -| IfStatement() -| WhileStatement() -| DoStatement() -| ForStatement() -| ForeachStatement() -| ContinueStatement() -| ReturnStatement() -| EchoStatement() -| [] IncludeStatement() -| StaticStatement() -| GlobalStatement() + {return statement;} +| statement = SwitchStatement() {return statement;} +| statement = IfStatement() {return statement;} +| statement = WhileStatement() {return statement;} +| statement = DoStatement() {return statement;} +| statement = ForStatement() {return statement;} +| statement = ForeachStatement() {return statement;} +| statement = ContinueStatement() {return statement;} +| statement = ReturnStatement() {return statement;} +| statement = EchoStatement() {return statement;} +| [token=] statement = IncludeStatement() + {if (token != null) { + ((InclusionStatement)statement).silent = true; + } + return statement;} +| statement = StaticStatement() {return statement;} +| statement = GlobalStatement() {return statement;} } /** * A Normal statement. */ -void Statement() : -{} +Statement Statement() : +{ + final Statement statement; +} { - StatementNoBreak() -| BreakStatement() + statement = StatementNoBreak() {return statement;} +| statement = BreakStatement() {return statement;} } /** * An html block inside a php syntax. */ -void htmlBlock() : -{} +HTMLBlock htmlBlock() : +{ + final int startIndex = nodePtr; + AstNode[] blockNodes; + int nbNodes; +} { (phpEchoBlock())* try { @@ -1757,38 +1859,46 @@ void htmlBlock() : errorEnd = jj_input_stream.getPosition(); throw e; } + { + nbNodes = nodePtr-startIndex; + blockNodes = new AstNode[nbNodes]; + System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes); + return new HTMLBlock(nodes);} } /** * An include statement. It's "include" an expression; */ -void IncludeStatement() : +InclusionStatement IncludeStatement() : { - final String expr; + final Expression expr; final Token token; + final int keyword; final int pos = jj_input_stream.getPosition(); + final InclusionStatement inclusionStatement; } { - ( token = - | token = - | token = - | token = ) - try { - expr = Expression() - } catch (ParseException e) { - if (errorMessage != null) { - throw e; - } - errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; + ( {keyword = InclusionStatement.REQUIRE;} + | {keyword = InclusionStatement.REQUIRE_ONCE;} + | {keyword = InclusionStatement.INCLUDE;} + | {keyword = InclusionStatement.INCLUDE_ONCE;}) + try { + expr = Expression() + } catch (ParseException e) { + if (errorMessage != null) { throw e; } - { - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, token.image,pos,expr)); - } + errorMessage = "unexpected token '"+ e.currentToken.next.image+"', expression expected"; + errorLevel = ERROR; + errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; + errorEnd = jj_input_stream.getPosition() + 1; + throw e; + } + {inclusionStatement = new InclusionStatement(currentSegment, + keyword, + expr, + pos); + currentSegment.add(inclusionStatement); } try { @@ -1799,20 +1909,24 @@ void IncludeStatement() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } + {return inclusionStatement;} } -String PrintExpression() : +PrintExpression PrintExpression() : { - final String expr; + final Expression expr; + final int pos = SimpleCharStream.getPosition(); } { - expr = Expression() {return "print " + expr;} + expr = Expression() {return new PrintExpression(expr,pos,SimpleCharStream.getPosition());} } -String ListExpression() : +ListExpression ListExpression() : { - final StringBuffer buff = new StringBuffer("list("); - String expr; + String expr = null; + Expression expression = null; + ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); } { @@ -1827,8 +1941,9 @@ String ListExpression() : } [ expr = VariableDeclaratorId() - {buff.append(expr);} + {list.add(expr);} ] + {if (expr == null) list.add(null);} ( try { @@ -1840,9 +1955,8 @@ String ListExpression() : throw e; } expr = VariableDeclaratorId() - {buff.append(",").append(expr);} + {list.add(expr);} )* - {buff.append(")");} try { } catch (ParseException e) { @@ -1852,20 +1966,31 @@ String ListExpression() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - [ expr = Expression() {buff.append("(").append(expr);}] - {return buff.toString();} + [ expression = Expression() + {return new ListExpression((String[]) list.toArray(),expression,pos,SimpleCharStream.getPosition());}] + {return new ListExpression((String[]) list.toArray(),null,pos,SimpleCharStream.getPosition());} } /** * An echo statement. * echo anyexpression (, otherexpression)* */ -void EchoStatement() : -{} +EchoStatement EchoStatement() : { - Expression() ( Expression())* + final ArrayList expressions = new ArrayList(); + Expression expr; + final int pos = SimpleCharStream.getPosition(); +} +{ + expr = Expression() + {expressions.add(expr);} + ( + expr = Expression() + {expressions.add(expr);} + )* try { + {return new EchoStatement((Expression[]) expressions.toArray(),pos);} } catch (ParseException e) { if (e.currentToken.next.kind != 4) { errorMessage = "';' expected after 'echo' statement"; @@ -1877,25 +2002,29 @@ void EchoStatement() : } } -void GlobalStatement() : +GlobalStatement GlobalStatement() : { final int pos = jj_input_stream.getPosition(); String expr; + ArrayList vars = new ArrayList(); + GlobalStatement global; } { expr = VariableDeclaratorId() - {if (currentSegment != null) { - currentSegment.add(new PHPGlobalDeclaration(currentSegment, "global",pos,expr)); - }} + {vars.add(expr);} ( expr = VariableDeclaratorId() - {if (currentSegment != null) { - currentSegment.add(new PHPGlobalDeclaration(currentSegment, "global",pos,expr)); - }} + {vars.add(expr);} )* try { + {global = new GlobalStatement(currentSegment, + (String[]) vars.toArray(), + pos, + SimpleCharStream.getPosition()); + currentSegment.add(global); + return global;} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected"; errorLevel = ERROR; @@ -1905,12 +2034,20 @@ void GlobalStatement() : } } -void StaticStatement() : -{} +StaticStatement StaticStatement() : { - VariableDeclarator() ( VariableDeclarator())* + final int pos = SimpleCharStream.getPosition(); + final ArrayList vars = new ArrayList(); + VariableDeclaration expr; +} +{ + expr = VariableDeclarator() {vars.add(new String(expr.name));} + ( expr = VariableDeclarator() {vars.add(new String(expr.name));})* try { + {return new StaticStatement((String[])vars.toArray(), + pos, + SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. a ';' was expected"; errorLevel = ERROR; @@ -1920,14 +2057,28 @@ void StaticStatement() : } } -void LabeledStatement() : -{} +LabeledStatement LabeledStatement() : +{ + final int pos = SimpleCharStream.getPosition(); + final Token label; + final Statement statement; +} { - Statement() + label = statement = Statement() + {return new LabeledStatement(label.image.toCharArray(),statement,pos,SimpleCharStream.getPosition());} } -void Block() : -{} +/** + * A Block is + * { + * statements + * }. + * @return a block + */ +Block Block() : +{ + final int pos = SimpleCharStream.getPosition(); +} { try { @@ -1950,57 +2101,84 @@ void Block() : } } -void BlockStatement() : -{} +Statement BlockStatement() : +{ + final Statement statement; +} { - Statement() -| ClassDeclaration() -| MethodDeclaration() + statement = Statement() {return statement;} +| statement = ClassDeclaration() {return statement;} +| statement = MethodDeclaration() {return statement;} } /** * A Block statement that will not contain any 'break' */ -void BlockStatementNoBreak() : -{} +Statement BlockStatementNoBreak() : +{ + final Statement statement; +} { - StatementNoBreak() -| ClassDeclaration() -| MethodDeclaration() + statement = StatementNoBreak() {return statement;} +| statement = ClassDeclaration() {return statement;} +| statement = MethodDeclaration() {return statement;} } -void LocalVariableDeclaration() : -{} +VariableDeclaration[] LocalVariableDeclaration() : +{ + final ArrayList list = new ArrayList(); + VariableDeclaration var; +} { - LocalVariableDeclarator() ( LocalVariableDeclarator() )* + var = LocalVariableDeclarator() + {list.add(var);} + ( var = LocalVariableDeclarator() {list.add(var);})* + {return (VariableDeclaration[]) list.toArray();} } -void LocalVariableDeclarator() : -{} +VariableDeclaration LocalVariableDeclarator() : { - VariableDeclaratorId() [ Expression() ] + final String varName; + Expression init = null; + final int pos = SimpleCharStream.getPosition(); +} +{ + varName = VariableDeclaratorId() [ init = Expression() ] + {return new VariableDeclaration(varName.toCharArray(),init,pos);} } -void EmptyStatement() : -{} +EmptyStatement EmptyStatement() : +{ + final int pos; +} { + {pos = SimpleCharStream.getPosition(); + return new EmptyStatement(pos-1,pos);} } -void StatementExpression() : -{} +Statement StatementExpression() : +{ + Expression expr; +} { - PreIncDecExpression() + expr = PreIncDecExpression() {return expr;} | - PrimaryExpression() - [ - | + expr = PrimaryExpression() + [ {expr = new PostfixedUnaryExpression(expr, + OperatorIds.PLUS_PLUS, + SimpleCharStream.getPosition());} + | {expr = new PostfixedUnaryExpression(expr, + OperatorIds.MINUS_MINUS, + SimpleCharStream.getPosition());} | AssignmentOperator() Expression() ] } -void SwitchStatement() : +SwitchStatement SwitchStatement() : { - final int pos = jj_input_stream.getPosition(); + final Expression variable; + final AbstractCase[] cases; + final int pos = SimpleCharStream.getPosition(); } { @@ -2014,7 +2192,7 @@ void SwitchStatement() : throw e; } try { - Expression() + variable = Expression() } catch (ParseException e) { if (errorMessage != null) { throw e; @@ -2034,16 +2212,21 @@ void SwitchStatement() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - (switchStatementBrace() | switchStatementColon(pos, pos + 6)) + (cases = switchStatementBrace() | cases = switchStatementColon(pos, pos + 6)) + {return new SwitchStatement(variable,cases,pos,SimpleCharStream.getPosition());} } -void switchStatementBrace() : -{} +AbstractCase[] switchStatementBrace() : +{ + AbstractCase cas; + final ArrayList cases = new ArrayList(); +} { - ( switchLabel0() )* + ( cas = switchLabel0() {cases.add(cas);})* try { + {return (AbstractCase[]) cases.toArray();} } catch (ParseException e) { errorMessage = "'}' expected"; errorLevel = ERROR; @@ -2057,8 +2240,11 @@ void switchStatementBrace() : * @param start the begin offset of the switch * @param end the end offset of the switch */ -void switchStatementColon(final int start, final int end) : -{} +AbstractCase[] switchStatementColon(final int start, final int end) : +{ + AbstractCase cas; + final ArrayList cases = new ArrayList(); +} { {try { @@ -2071,7 +2257,7 @@ void switchStatementColon(final int start, final int end) : } catch (CoreException e) { PHPeclipsePlugin.log(e); }} - (switchLabel0())* + ( cas = switchLabel0() {cases.add(cas);})* try { } catch (ParseException e) { @@ -2083,6 +2269,7 @@ void switchStatementColon(final int start, final int end) : } try { + {return (AbstractCase[]) cases.toArray();} } catch (ParseException e) { errorMessage = "';' expected after 'endswitch' keyword"; errorLevel = ERROR; @@ -2092,56 +2279,39 @@ void switchStatementColon(final int start, final int end) : } } -void switchLabel0() : -{ - Token breakToken = null; - final int line; -} -{ - line = SwitchLabel() - ( BlockStatementNoBreak() | htmlBlock() )* - [ breakToken = BreakStatement() ] - { - try { - if (breakToken == null) { - setMarker(fileToParse, - "You should use put a 'break' at the end of your statement", - line, - INFO, - "Line " + line); - } - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } -} - -Token BreakStatement() : +AbstractCase switchLabel0() : { - final Token token; + final Expression expr; + Statement statement; + final ArrayList stmts = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); } { - token = [ Expression() ] - try { - - } catch (ParseException e) { - errorMessage = "';' expected after 'break' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; + expr = SwitchLabel() + ( statement = BlockStatementNoBreak() {stmts.add(statement);} + | statement = htmlBlock() {stmts.add(statement);})* + [ statement = BreakStatement() {stmts.add(statement);}] + {if (expr == null) {//it's a default + return new DefaultCase((Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition()); } - {return token;} + return new Case(expr,(Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition());} } -int SwitchLabel() : +/** + * A SwitchLabel. + * case Expression() : + * default : + * @return the if it was a case and null if not + */ +Expression SwitchLabel() : { final Token token; + final Expression expr; } { token = try { - Expression() + expr = Expression() } catch (ParseException e) { if (errorMessage != null) throw e; errorMessage = "expression expected after 'case' keyword"; @@ -2152,6 +2322,7 @@ int SwitchLabel() : } try { + {return expr;} } catch (ParseException e) { errorMessage = "':' expected after case expression"; errorLevel = ERROR; @@ -2159,11 +2330,11 @@ int SwitchLabel() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {return token.beginLine;} | token = <_DEFAULT> try { + {return null;} } catch (ParseException e) { errorMessage = "':' expected after 'default' keyword"; errorLevel = ERROR; @@ -2171,20 +2342,43 @@ int SwitchLabel() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - {return token.beginLine;} } -void IfStatement() : +Break BreakStatement() : +{ + Expression expression = null; + final int start = SimpleCharStream.getPosition(); +} +{ + [ expression = Expression() ] + try { + + } catch (ParseException e) { + errorMessage = "';' expected after 'break' keyword"; + errorLevel = ERROR; + errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; + errorEnd = jj_input_stream.getPosition() + 1; + throw e; + } + {return new Break(expression, start, SimpleCharStream.getPosition());} +} + +IfStatement IfStatement() : { - final Token token; final int pos = jj_input_stream.getPosition(); + Expression condition; + IfStatement ifStatement; } { - token = Condition("if") IfStatement0(pos,pos+token.image.length()) + condition = Condition("if") ifStatement = IfStatement0(condition, pos,pos+2) + {return ifStatement;} } -void Condition(final String keyword) : -{} + +Expression Condition(final String keyword) : +{ + final Expression condition; +} { try { @@ -2195,9 +2389,10 @@ void Condition(final String keyword) : errorEnd = errorStart +1; processParseException(e); } - Expression() + condition = Expression() try { + {return condition;} } catch (ParseException e) { errorMessage = "')' expected after " + keyword + " keyword"; errorLevel = ERROR; @@ -2207,10 +2402,21 @@ void Condition(final String keyword) : } } -void IfStatement0(final int start,final int end) : -{} +IfStatement IfStatement0(Expression condition, final int start,final int end) : +{ + Statement statement; + ElseIf elseifStatement; + Else elseStatement = null; + ArrayList stmts = new ArrayList(); + ArrayList elseifs = new ArrayList(); + int pos = SimpleCharStream.getPosition(); +} { - (Statement() | htmlBlock())* (ElseIfStatementColon())* [ElseStatementColon()] + + ( statement = Statement() {stmts.add(statement);} + | statement = htmlBlock() {stmts.add(statement);})* + (elseifStatement = ElseIfStatementColon() {elseifs.add(elseifStatement);})* + [elseStatement = ElseStatementColon()] {try { setMarker(fileToParse, @@ -2233,6 +2439,11 @@ void IfStatement0(final int start,final int end) : } try { + {return new IfStatement(condition, + (ElseIf[]) elseifs.toArray(), + elseStatement, + pos, + SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endif' keyword"; errorLevel = ERROR; @@ -2241,12 +2452,15 @@ void IfStatement0(final int start,final int end) : throw e; } | - (Statement() | htmlBlock()) - ( LOOKAHEAD(1) ElseIfStatement() )* + (statement = Statement() | statement = htmlBlock()) + {stmts.add(statement);} + ( LOOKAHEAD(1) elseifStatement = ElseIfStatement() {elseifs.add(elseifStatement);})* [ LOOKAHEAD(1) try { - Statement() + {pos = SimpleCharStream.getPosition();} + statement = Statement() + {elseStatement = new Else(statement,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { if (errorMessage != null) { throw e; @@ -2258,39 +2472,72 @@ void IfStatement0(final int start,final int end) : throw e; } ] + {return new IfStatement(condition, + (ElseIf[]) elseifs.toArray(), + elseStatement, + pos, + SimpleCharStream.getPosition());} } -void ElseIfStatementColon() : -{} +ElseIf ElseIfStatementColon() : { - Condition("elseif") (Statement() | htmlBlock())* + Expression condition; + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); +} +{ + condition = Condition("elseif") + ( statement = Statement() {list.add(statement);} + | statement = htmlBlock() {list.add(statement);})* + {return new ElseIf(condition,(Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} } -void ElseStatementColon() : -{} +Else ElseStatementColon() : { - (Statement() | htmlBlock())* + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); +} +{ + ( statement = Statement() {list.add(statement);} + | statement = htmlBlock() {list.add(statement);})* + {return new Else((Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} } -void ElseIfStatement() : -{} +ElseIf ElseIfStatement() : { - Condition("elseif") Statement() + Expression condition; + Statement statement; + final ArrayList list = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); +} +{ + condition = Condition("elseif") statement = Statement() {list.add(statement);/*todo:do better*/} + {return new ElseIf(condition,(Statement[]) list.toArray(),pos,SimpleCharStream.getPosition());} } -void WhileStatement() : +WhileStatement WhileStatement() : { - final Token token; - final int pos = jj_input_stream.getPosition(); + final Expression condition; + final Statement action; + final int pos = SimpleCharStream.getPosition(); } { - token = Condition("while") WhileStatement0(pos,pos + token.image.length()) + + condition = Condition("while") + action = WhileStatement0(pos,pos + 5) + {return new WhileStatement(condition,action,pos,SimpleCharStream.getPosition());} } -void WhileStatement0(final int start, final int end) : -{} +Statement WhileStatement0(final int start, final int end) : { - (Statement())* + Statement statement; + final ArrayList stmts = new ArrayList(); + final int pos = SimpleCharStream.getPosition(); +} +{ + (statement = Statement() {stmts.add(statement);})* {try { setMarker(fileToParse, "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;", @@ -2312,6 +2559,7 @@ void WhileStatement0(final int start, final int end) : } try { + {return new Block((Statement[]) stmts.toArray(),pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endwhile' keyword"; errorLevel = ERROR; @@ -2320,15 +2568,21 @@ void WhileStatement0(final int start, final int end) : throw e; } | - Statement() + statement = Statement() + {return statement;} } -void DoStatement() : -{} +DoStatement DoStatement() : +{ + final Statement action; + final Expression condition; + final int pos = SimpleCharStream.getPosition(); +} { - Statement() Condition("while") + action = Statement() condition = Condition("while") try { + {return new DoStatement(condition,action,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected"; errorLevel = ERROR; @@ -2338,8 +2592,14 @@ void DoStatement() : } } -void ForeachStatement() : -{} +ForeachStatement ForeachStatement() : +{ + Statement statement; + Expression expression; + final StringBuffer buff = new StringBuffer(); + final int pos = SimpleCharStream.getPosition(); + ArrayVariableDeclaration variable; +} { try { @@ -2352,7 +2612,7 @@ void ForeachStatement() : throw e; } try { - Variable() + expression = Expression() } catch (ParseException e) { errorMessage = "variable expected"; errorLevel = ERROR; @@ -2360,7 +2620,6 @@ void ForeachStatement() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - ( VariableSuffix() )* try { } catch (ParseException e) { @@ -2371,7 +2630,7 @@ void ForeachStatement() : throw e; } try { - Variable() + variable = ArrayVariable() } catch (ParseException e) { errorMessage = "variable expected"; errorLevel = ERROR; @@ -2379,7 +2638,6 @@ void ForeachStatement() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } - [ Expression() ] try { } catch (ParseException e) { @@ -2390,7 +2648,7 @@ void ForeachStatement() : throw e; } try { - Statement() + statement = Statement() } catch (ParseException e) { if (errorMessage != null) throw e; errorMessage = "statement expected"; @@ -2399,12 +2657,24 @@ void ForeachStatement() : errorEnd = jj_input_stream.getPosition() + 1; throw e; } + {return new ForeachStatement(expression, + variable, + statement, + pos, + SimpleCharStream.getPosition());} + } -void ForStatement() : +ForStatement ForStatement() : { final Token token; -final int pos = jj_input_stream.getPosition(); +final int pos = SimpleCharStream.getPosition(); +Statement[] initializations = null; +Expression condition = null; +Statement[] increments = null; +Statement action; +final ArrayList list = new ArrayList(); +final int startBlock, endBlock; } { token = @@ -2417,11 +2687,16 @@ final int pos = jj_input_stream.getPosition(); errorEnd = jj_input_stream.getPosition() + 1; throw e; } - [ ForInit() ] [ Expression() ] [ StatementExpressionList() ] + [ initializations = ForInit() ] + [ condition = Expression() ] + [ increments = StatementExpressionList() ] ( - Statement() + action = Statement() + {return new ForStatement(initializations,condition,increments,action,pos,SimpleCharStream.getPosition());} | - (Statement())* + + {startBlock = SimpleCharStream.getPosition();} + (action = Statement() {list.add(action);})* { try { setMarker(fileToParse, @@ -2434,6 +2709,7 @@ final int pos = jj_input_stream.getPosition(); PHPeclipsePlugin.log(e); } } + {endBlock = SimpleCharStream.getPosition();} try { } catch (ParseException e) { @@ -2445,6 +2721,7 @@ final int pos = jj_input_stream.getPosition(); } try { + {return new ForStatement(initializations,condition,increments,new Block((Statement[])list.toArray(),startBlock,endBlock),pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'endfor' keyword"; errorLevel = ERROR; @@ -2455,27 +2732,40 @@ final int pos = jj_input_stream.getPosition(); ) } -void ForInit() : -{} +Statement[] ForInit() : +{ + Statement[] statements; +} { LOOKAHEAD(LocalVariableDeclaration()) - LocalVariableDeclaration() + statements = LocalVariableDeclaration() + {return statements;} | - StatementExpressionList() + statements = StatementExpressionList() + {return statements;} } -void StatementExpressionList() : -{} +Statement[] StatementExpressionList() : { - StatementExpression() ( StatementExpression() )* + final ArrayList list = new ArrayList(); + Statement expr; +} +{ + expr = StatementExpression() {list.add(expr);} + ( StatementExpression() {list.add(expr);})* + {return (Statement[]) list.toArray();} } -void ContinueStatement() : -{} +Continue ContinueStatement() : { - [ Expression() ] + Expression expr = null; + final int pos = SimpleCharStream.getPosition(); +} +{ + [ expr = Expression() ] try { + {return new Continue(expr,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'continue' statement"; errorLevel = ERROR; @@ -2485,12 +2775,16 @@ void ContinueStatement() : } } -void ReturnStatement() : -{} +ReturnStatement ReturnStatement() : +{ + Expression expr = null; + final int pos = SimpleCharStream.getPosition(); +} { - [ Expression() ] + [ expr = Expression() ] try { + {return new ReturnStatement(expr,pos,SimpleCharStream.getPosition());} } catch (ParseException e) { errorMessage = "';' expected after 'return' statement"; errorLevel = ERROR; diff --git a/net.sourceforge.phpeclipse/src/test/PHPParserConstants.java b/net.sourceforge.phpeclipse/src/test/PHPParserConstants.java index 99de374..00c5d6a 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParserConstants.java +++ b/net.sourceforge.phpeclipse/src/test/PHPParserConstants.java @@ -64,72 +64,72 @@ public interface PHPParserConstants { int FLOAT = 69; int INT = 70; int INTEGER = 71; - int _ORL = 72; - int _ANDL = 73; - int INTEGER_LITERAL = 74; - int DECIMAL_LITERAL = 75; - int HEX_LITERAL = 76; - int OCTAL_LITERAL = 77; - int FLOATING_POINT_LITERAL = 78; - int EXPONENT = 79; - int STRING_LITERAL = 80; - int STRING_1 = 81; - int STRING_2 = 82; - int STRING_3 = 83; - int IDENTIFIER = 84; - int LETTER = 85; - int DIGIT = 86; - int SPECIAL = 87; - int LPAREN = 88; - int RPAREN = 89; - int LBRACE = 90; - int RBRACE = 91; - int LBRACKET = 92; - int RBRACKET = 93; - int SEMICOLON = 94; - int COMMA = 95; - int DOT = 96; - int GT = 97; - int LT = 98; - int EQ = 99; - int LE = 100; - int GE = 101; - int NE = 102; - int DIF = 103; - int BANGDOUBLEEQUAL = 104; - int TRIPLEEQUAL = 105; - int ASSIGN = 106; - int PLUSASSIGN = 107; - int MINUSASSIGN = 108; - int STARASSIGN = 109; - int SLASHASSIGN = 110; - int ANDASSIGN = 111; - int ORASSIGN = 112; - int XORASSIGN = 113; - int DOTASSIGN = 114; - int REMASSIGN = 115; - int TILDEEQUAL = 116; - int AT = 117; - int DOLLAR = 118; - int BANG = 119; - int TILDE = 120; - int HOOK = 121; - int COLON = 122; - int SC_OR = 123; - int SC_AND = 124; - int INCR = 125; - int DECR = 126; - int PLUS = 127; - int MINUS = 128; - int STAR = 129; - int SLASH = 130; - int BIT_AND = 131; - int BIT_OR = 132; - int XOR = 133; - int REM = 134; - int LSHIFT = 135; - int RSIGNEDSHIFT = 136; - int RUNSIGNEDSHIFT = 137; + int AT = 72; + int DOLLAR = 73; + int BANG = 74; + int TILDE = 75; + int HOOK = 76; + int COLON = 77; + int OR_OR = 78; + int AND_AND = 79; + int INCR = 80; + int DECR = 81; + int PLUS = 82; + int MINUS = 83; + int STAR = 84; + int SLASH = 85; + int BIT_AND = 86; + int BIT_OR = 87; + int XOR = 88; + int REMAINDER = 89; + int LSHIFT = 90; + int RSIGNEDSHIFT = 91; + int RUNSIGNEDSHIFT = 92; + int _ORL = 93; + int _ANDL = 94; + int INTEGER_LITERAL = 95; + int DECIMAL_LITERAL = 96; + int HEX_LITERAL = 97; + int OCTAL_LITERAL = 98; + int FLOATING_POINT_LITERAL = 99; + int EXPONENT = 100; + int STRING_LITERAL = 101; + int STRING_1 = 102; + int STRING_2 = 103; + int STRING_3 = 104; + int IDENTIFIER = 105; + int LETTER = 106; + int DIGIT = 107; + int SPECIAL = 108; + int LPAREN = 109; + int RPAREN = 110; + int LBRACE = 111; + int RBRACE = 112; + int LBRACKET = 113; + int RBRACKET = 114; + int SEMICOLON = 115; + int COMMA = 116; + int DOT = 117; + int GT = 118; + int LT = 119; + int EQUAL_EQUAL = 120; + int LE = 121; + int GE = 122; + int NOT_EQUAL = 123; + int DIF = 124; + int BANGDOUBLEEQUAL = 125; + int TRIPLEEQUAL = 126; + int ASSIGN = 127; + int PLUSASSIGN = 128; + int MINUSASSIGN = 129; + int STARASSIGN = 130; + int SLASHASSIGN = 131; + int ANDASSIGN = 132; + int ORASSIGN = 133; + int XORASSIGN = 134; + int DOTASSIGN = 135; + int REMASSIGN = 136; + int TILDEEQUAL = 137; int LSHIFTASSIGN = 138; int RSIGNEDSHIFTASSIGN = 139; int DOLLAR_ID = 140; @@ -213,6 +213,27 @@ public interface PHPParserConstants { "\"float\"", "\"int\"", "\"integer\"", + "\"@\"", + "\"$\"", + "\"!\"", + "\"~\"", + "\"?\"", + "\":\"", + "\"||\"", + "\"&&\"", + "\"++\"", + "\"--\"", + "\"+\"", + "\"-\"", + "\"*\"", + "\"/\"", + "\"&\"", + "\"|\"", + "\"^\"", + "\"%\"", + "\"<<\"", + "\">>\"", + "\">>>\"", "\"OR\"", "\"AND\"", "", @@ -258,27 +279,6 @@ public interface PHPParserConstants { "\".=\"", "\"%=\"", "\"~=\"", - "\"@\"", - "\"$\"", - "\"!\"", - "\"~\"", - "\"?\"", - "\":\"", - "\"||\"", - "\"&&\"", - "\"++\"", - "\"--\"", - "\"+\"", - "\"-\"", - "\"*\"", - "\"/\"", - "\"&\"", - "\"|\"", - "\"^\"", - "\"%\"", - "\"<<\"", - "\">>\"", - "\">>>\"", "\"<<=\"", "\">>=\"", "", diff --git a/net.sourceforge.phpeclipse/src/test/PHPParserTokenManager.java b/net.sourceforge.phpeclipse/src/test/PHPParserTokenManager.java index bffc8ef..016518a 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParserTokenManager.java +++ b/net.sourceforge.phpeclipse/src/test/PHPParserTokenManager.java @@ -7,13 +7,15 @@ import org.eclipse.ui.texteditor.MarkerUtilities; import org.eclipse.jface.preference.IPreferenceStore; import java.util.Hashtable; import java.util.Enumeration; +import java.util.ArrayList; import java.io.StringReader; import java.io.*; import java.text.MessageFormat; import net.sourceforge.phpeclipse.actions.PHPStartApacheAction; import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpdt.internal.compiler.parser.*; import net.sourceforge.phpdt.internal.compiler.ast.*; +import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren; +import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo; public class PHPParserTokenManager implements PHPParserConstants { @@ -299,41 +301,41 @@ private static final int jjStopStringLiteralDfa_1(int pos, long active0, long ac switch (pos) { case 0: - if ((active0 & 0x4800L) != 0L || (active1 & 0x400000000000L) != 0L || (active2 & 0x4L) != 0L) + if ((active0 & 0x4800L) != 0L || (active1 & 0x200000L) != 0L || (active2 & 0x8L) != 0L) return 2; - if ((active1 & 0x40000000000000L) != 0L) + if ((active1 & 0x200L) != 0L) return 16; - if ((active1 & 0x4000100000000L) != 0L) + if ((active1 & 0x20000000000000L) != 0L || (active2 & 0x80L) != 0L) return 8; - if ((active0 & 0xffffff1ffff00000L) != 0L || (active1 & 0x3ffL) != 0L) + if ((active0 & 0xffffff1ffff00000L) != 0L || (active1 & 0x600000ffL) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; return 14; } return -1; case 1: - if ((active0 & 0xbfffef1fff700000L) != 0L || (active1 & 0x2efL) != 0L) + if ((active0 & 0x4000L) != 0L) + return 0; + if ((active0 & 0xbfffef1fff700000L) != 0L || (active1 & 0x400000efL) != 0L) { if (jjmatchedPos != 1) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 1; } return 14; } - if ((active0 & 0x4000L) != 0L) - return 0; - if ((active0 & 0x4000100000800000L) != 0L || (active1 & 0x110L) != 0L) + if ((active0 & 0x4000100000800000L) != 0L || (active1 & 0x20000010L) != 0L) return 14; return -1; case 2: - if ((active0 & 0x2001400000400000L) != 0L || (active1 & 0x2c0L) != 0L) + if ((active0 & 0x2001400000400000L) != 0L || (active1 & 0x400000c0L) != 0L) return 14; if ((active0 & 0x9ffeaf1fff300000L) != 0L || (active1 & 0x3fL) != 0L) { if (jjmatchedPos != 2) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 2; } return 14; @@ -346,28 +348,28 @@ private static final int jjStopStringLiteralDfa_1(int pos, long active0, long ac { if (jjmatchedPos != 3) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 3; } return 14; } return -1; case 4: + if ((active0 & 0x98802002c100000L) != 0L || (active1 & 0x20L) != 0L) + return 14; if ((active0 & 0xb6142c1f81200000L) != 0L || (active1 & 0x95L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 4; return 14; } - if ((active0 & 0x98802002c100000L) != 0L || (active1 & 0x20L) != 0L) - return 14; return -1; case 5: if ((active0 & 0x9014001801000000L) != 0L || (active1 & 0x11L) != 0L) return 14; if ((active0 & 0x26002c0780200000L) != 0L || (active1 & 0x84L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 5; return 14; } @@ -379,7 +381,7 @@ private static final int jjStopStringLiteralDfa_1(int pos, long active0, long ac { if (jjmatchedPos != 6) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 6; } return 14; @@ -390,25 +392,25 @@ private static final int jjStopStringLiteralDfa_1(int pos, long active0, long ac return 14; if ((active0 & 0x400000600000000L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 7; return 14; } return -1; case 8: + if ((active0 & 0x400000000000000L) != 0L) + return 14; if ((active0 & 0x600000000L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 8; return 14; } - if ((active0 & 0x400000000000000L) != 0L) - return 14; return -1; case 9: if ((active0 & 0x600000000L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 9; return 14; } @@ -416,7 +418,7 @@ private static final int jjStopStringLiteralDfa_1(int pos, long active0, long ac case 10: if ((active0 & 0x600000000L) != 0L) { - jjmatchedKind = 84; + jjmatchedKind = 105; jjmatchedPos = 10; return 14; } @@ -442,68 +444,68 @@ static private final int jjMoveStringLiteralDfa0_1() switch(curChar) { case 33: - jjmatchedKind = 119; - return jjMoveStringLiteralDfa1_1(0x0L, 0x14000000000L, 0x0L); + jjmatchedKind = 74; + return jjMoveStringLiteralDfa1_1(0x0L, 0x2800000000000000L, 0x0L); case 35: return jjStopAtPos(0, 12); case 36: - return jjStartNfaWithStates_1(0, 118, 16); + return jjStartNfaWithStates_1(0, 73, 16); case 37: - jjmatchedKind = 134; - return jjMoveStringLiteralDfa1_1(0x0L, 0x8000000000000L, 0x0L); + jjmatchedKind = 89; + return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x100L); case 38: - jjmatchedKind = 131; - return jjMoveStringLiteralDfa1_1(0x0L, 0x1000800000000000L, 0x0L); + jjmatchedKind = 86; + return jjMoveStringLiteralDfa1_1(0x0L, 0x8000L, 0x10L); case 40: - return jjStopAtPos(0, 88); + return jjStopAtPos(0, 109); case 41: - return jjStopAtPos(0, 89); + return jjStopAtPos(0, 110); case 42: - jjmatchedKind = 129; - return jjMoveStringLiteralDfa1_1(0x0L, 0x200000000000L, 0x0L); + jjmatchedKind = 84; + return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x4L); case 43: - jjmatchedKind = 127; - return jjMoveStringLiteralDfa1_1(0x0L, 0x2000080000000000L, 0x0L); + jjmatchedKind = 82; + return jjMoveStringLiteralDfa1_1(0x0L, 0x10000L, 0x1L); case 44: - return jjStopAtPos(0, 95); + return jjStopAtPos(0, 116); case 45: - jjmatchedKind = 128; - return jjMoveStringLiteralDfa1_1(0x2000000000L, 0x4000100000000000L, 0x0L); + jjmatchedKind = 83; + return jjMoveStringLiteralDfa1_1(0x2000000000L, 0x20000L, 0x2L); case 46: - jjmatchedKind = 96; - return jjMoveStringLiteralDfa1_1(0x0L, 0x4000000000000L, 0x0L); + jjmatchedKind = 117; + return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x80L); case 47: - jjmatchedKind = 130; - return jjMoveStringLiteralDfa1_1(0x4800L, 0x400000000000L, 0x0L); + jjmatchedKind = 85; + return jjMoveStringLiteralDfa1_1(0x4800L, 0x0L, 0x8L); case 58: - jjmatchedKind = 122; + jjmatchedKind = 77; return jjMoveStringLiteralDfa1_1(0x4000000000L, 0x0L, 0x0L); case 59: - return jjStopAtPos(0, 94); + return jjStopAtPos(0, 115); case 60: - jjmatchedKind = 98; - return jjMoveStringLiteralDfa1_1(0x0L, 0x9000000000L, 0x480L); + jjmatchedKind = 119; + return jjMoveStringLiteralDfa1_1(0x0L, 0x1200000004000000L, 0x400L); case 61: - jjmatchedKind = 106; - return jjMoveStringLiteralDfa1_1(0x8000000000L, 0x20800000000L, 0x0L); + jjmatchedKind = 127; + return jjMoveStringLiteralDfa1_1(0x8000000000L, 0x4100000000000000L, 0x0L); case 62: - jjmatchedKind = 97; - return jjMoveStringLiteralDfa1_1(0x0L, 0x2000000000L, 0xb00L); + jjmatchedKind = 118; + return jjMoveStringLiteralDfa1_1(0x0L, 0x400000018000000L, 0x800L); case 63: - jjmatchedKind = 121; + jjmatchedKind = 76; return jjMoveStringLiteralDfa1_1(0x10L, 0x0L, 0x0L); case 64: - return jjStopAtPos(0, 117); + return jjStopAtPos(0, 72); case 91: - return jjStopAtPos(0, 92); + return jjStopAtPos(0, 113); case 93: - return jjStopAtPos(0, 93); + return jjStopAtPos(0, 114); case 94: - jjmatchedKind = 133; - return jjMoveStringLiteralDfa1_1(0x0L, 0x2000000000000L, 0x0L); + jjmatchedKind = 88; + return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x40L); case 65: case 97: - return jjMoveStringLiteralDfa1_1(0x4000000004000000L, 0x200L, 0x0L); + return jjMoveStringLiteralDfa1_1(0x4000000004000000L, 0x40000000L, 0x0L); case 66: case 98: return jjMoveStringLiteralDfa1_1(0x8000000L, 0x6L, 0x0L); @@ -533,7 +535,7 @@ static private final int jjMoveStringLiteralDfa0_1() return jjMoveStringLiteralDfa1_1(0x3000000000000L, 0x0L, 0x0L); case 79: case 111: - return jjMoveStringLiteralDfa1_1(0x0L, 0x101L, 0x0L); + return jjMoveStringLiteralDfa1_1(0x0L, 0x20000001L, 0x0L); case 80: case 112: return jjMoveStringLiteralDfa1_1(0x20000000L, 0x0L, 0x0L); @@ -553,15 +555,15 @@ static private final int jjMoveStringLiteralDfa0_1() case 119: return jjMoveStringLiteralDfa1_1(0x100000000000000L, 0x0L, 0x0L); case 123: - return jjStopAtPos(0, 90); + return jjStopAtPos(0, 111); case 124: - jjmatchedKind = 132; - return jjMoveStringLiteralDfa1_1(0x0L, 0x801000000000000L, 0x0L); + jjmatchedKind = 87; + return jjMoveStringLiteralDfa1_1(0x0L, 0x4000L, 0x20L); case 125: - return jjStopAtPos(0, 91); + return jjStopAtPos(0, 112); case 126: - jjmatchedKind = 120; - return jjMoveStringLiteralDfa1_1(0x0L, 0x10000000000000L, 0x0L); + jjmatchedKind = 75; + return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x200L); default : return jjMoveNfa_1(3, 0); } @@ -576,20 +578,20 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l switch(curChar) { case 38: - if ((active1 & 0x1000000000000000L) != 0L) - return jjStopAtPos(1, 124); + if ((active1 & 0x8000L) != 0L) + return jjStopAtPos(1, 79); break; case 42: if ((active0 & 0x4000L) != 0L) return jjStartNfaWithStates_1(1, 14, 0); break; case 43: - if ((active1 & 0x2000000000000000L) != 0L) - return jjStopAtPos(1, 125); + if ((active1 & 0x10000L) != 0L) + return jjStopAtPos(1, 80); break; case 45: - if ((active1 & 0x4000000000000000L) != 0L) - return jjStopAtPos(1, 126); + if ((active1 & 0x20000L) != 0L) + return jjStopAtPos(1, 81); break; case 47: if ((active0 & 0x800L) != 0L) @@ -600,48 +602,48 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l return jjStopAtPos(1, 38); break; case 60: - if ((active2 & 0x80L) != 0L) + if ((active1 & 0x4000000L) != 0L) { - jjmatchedKind = 135; + jjmatchedKind = 90; jjmatchedPos = 1; } return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x400L); case 61: - if ((active1 & 0x800000000L) != 0L) + if ((active1 & 0x100000000000000L) != 0L) { - jjmatchedKind = 99; + jjmatchedKind = 120; jjmatchedPos = 1; } - else if ((active1 & 0x1000000000L) != 0L) - return jjStopAtPos(1, 100); - else if ((active1 & 0x2000000000L) != 0L) - return jjStopAtPos(1, 101); - else if ((active1 & 0x4000000000L) != 0L) + else if ((active1 & 0x200000000000000L) != 0L) + return jjStopAtPos(1, 121); + else if ((active1 & 0x400000000000000L) != 0L) + return jjStopAtPos(1, 122); + else if ((active1 & 0x800000000000000L) != 0L) { - jjmatchedKind = 102; + jjmatchedKind = 123; jjmatchedPos = 1; } - else if ((active1 & 0x80000000000L) != 0L) - return jjStopAtPos(1, 107); - else if ((active1 & 0x100000000000L) != 0L) - return jjStopAtPos(1, 108); - else if ((active1 & 0x200000000000L) != 0L) - return jjStopAtPos(1, 109); - else if ((active1 & 0x400000000000L) != 0L) - return jjStopAtPos(1, 110); - else if ((active1 & 0x800000000000L) != 0L) - return jjStopAtPos(1, 111); - else if ((active1 & 0x1000000000000L) != 0L) - return jjStopAtPos(1, 112); - else if ((active1 & 0x2000000000000L) != 0L) - return jjStopAtPos(1, 113); - else if ((active1 & 0x4000000000000L) != 0L) - return jjStopAtPos(1, 114); - else if ((active1 & 0x8000000000000L) != 0L) - return jjStopAtPos(1, 115); - else if ((active1 & 0x10000000000000L) != 0L) - return jjStopAtPos(1, 116); - return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x30000000000L, active2, 0L); + else if ((active2 & 0x1L) != 0L) + return jjStopAtPos(1, 128); + else if ((active2 & 0x2L) != 0L) + return jjStopAtPos(1, 129); + else if ((active2 & 0x4L) != 0L) + return jjStopAtPos(1, 130); + else if ((active2 & 0x8L) != 0L) + return jjStopAtPos(1, 131); + else if ((active2 & 0x10L) != 0L) + return jjStopAtPos(1, 132); + else if ((active2 & 0x20L) != 0L) + return jjStopAtPos(1, 133); + else if ((active2 & 0x40L) != 0L) + return jjStopAtPos(1, 134); + else if ((active2 & 0x80L) != 0L) + return jjStopAtPos(1, 135); + else if ((active2 & 0x100L) != 0L) + return jjStopAtPos(1, 136); + else if ((active2 & 0x200L) != 0L) + return jjStopAtPos(1, 137); + return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x6000000000000000L, active2, 0L); case 62: if ((active0 & 0x10L) != 0L) return jjStopAtPos(1, 4); @@ -649,14 +651,14 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l return jjStopAtPos(1, 37); else if ((active0 & 0x8000000000L) != 0L) return jjStopAtPos(1, 39); - else if ((active1 & 0x8000000000L) != 0L) - return jjStopAtPos(1, 103); - else if ((active2 & 0x100L) != 0L) + else if ((active1 & 0x8000000L) != 0L) { - jjmatchedKind = 136; + jjmatchedKind = 91; jjmatchedPos = 1; } - return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0xa00L); + else if ((active1 & 0x1000000000000000L) != 0L) + return jjStopAtPos(1, 124); + return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0x10000000L, active2, 0x800L); case 65: case 97: return jjMoveStringLiteralDfa2_1(active0, 0x80010000400000L, active1, 0L, active2, 0L); @@ -685,7 +687,7 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l return jjMoveStringLiteralDfa2_1(active0, 0x803100000L, active1, 0x20L, active2, 0L); case 78: case 110: - return jjMoveStringLiteralDfa2_1(active0, 0x1e00000280000000L, active1, 0x2c0L, active2, 0L); + return jjMoveStringLiteralDfa2_1(active0, 0x1e00000280000000L, active1, 0x400000c0L, active2, 0L); case 79: case 111: if ((active0 & 0x100000000000L) != 0L) @@ -696,8 +698,8 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l return jjMoveStringLiteralDfa2_1(active0, 0x2000c60000000000L, active1, 0x16L, active2, 0L); case 82: case 114: - if ((active1 & 0x100L) != 0L) - return jjStartNfaWithStates_1(1, 72, 14); + if ((active1 & 0x20000000L) != 0L) + return jjStartNfaWithStates_1(1, 93, 14); return jjMoveStringLiteralDfa2_1(active0, 0x4000002c000000L, active1, 0L, active2, 0L); case 83: case 115: @@ -717,8 +719,8 @@ static private final int jjMoveStringLiteralDfa1_1(long active0, long active1, l case 120: return jjMoveStringLiteralDfa2_1(active0, 0x200000000000L, active1, 0L, active2, 0L); case 124: - if ((active1 & 0x800000000000000L) != 0L) - return jjStopAtPos(1, 123); + if ((active1 & 0x4000L) != 0L) + return jjStopAtPos(1, 78); break; default : break; @@ -737,18 +739,18 @@ static private final int jjMoveStringLiteralDfa2_1(long old0, long active0, long switch(curChar) { case 61: - if ((active1 & 0x10000000000L) != 0L) - return jjStopAtPos(2, 104); - else if ((active1 & 0x20000000000L) != 0L) - return jjStopAtPos(2, 105); + if ((active1 & 0x2000000000000000L) != 0L) + return jjStopAtPos(2, 125); + else if ((active1 & 0x4000000000000000L) != 0L) + return jjStopAtPos(2, 126); else if ((active2 & 0x400L) != 0L) return jjStopAtPos(2, 138); else if ((active2 & 0x800L) != 0L) return jjStopAtPos(2, 139); break; case 62: - if ((active2 & 0x200L) != 0L) - return jjStopAtPos(2, 137); + if ((active1 & 0x10000000L) != 0L) + return jjStopAtPos(2, 92); break; case 65: case 97: @@ -758,8 +760,8 @@ static private final int jjMoveStringLiteralDfa2_1(long old0, long active0, long return jjMoveStringLiteralDfa3_1(active0, 0x280000000L, active1, 0L, active2, 0L); case 68: case 100: - if ((active1 & 0x200L) != 0L) - return jjStartNfaWithStates_1(2, 73, 14); + if ((active1 & 0x40000000L) != 0L) + return jjStartNfaWithStates_1(2, 94, 14); return jjMoveStringLiteralDfa3_1(active0, 0x1e00000000000000L, active1, 0L, active2, 0L); case 69: case 101: @@ -1281,14 +1283,14 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjstateSet[jjnewStateCnt++] = 2; if ((0x3fe000000000000L & l) != 0L) { - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(5, 6); } else if (curChar == 48) { - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddStates(21, 23); } break; @@ -1307,15 +1309,15 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 4: if ((0x3fe000000000000L & l) == 0L) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(5, 6); break; case 5: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(5, 6); break; case 7: @@ -1325,8 +1327,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 8: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddStates(24, 26); break; case 10: @@ -1336,15 +1338,15 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 11: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddTwoStates(11, 12); break; case 14: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 84) - kind = 84; + if (kind > 105) + kind = 105; jjstateSet[jjnewStateCnt++] = 14; break; case 15: @@ -1369,15 +1371,15 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 20: if (curChar != 46) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddStates(27, 29); break; case 21: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddStates(27, 29); break; case 23: @@ -1387,8 +1389,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 24: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddTwoStates(24, 12); break; case 25: @@ -1402,8 +1404,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 28: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 78) - kind = 78; + if (kind > 99) + kind = 99; jjCheckNAddTwoStates(28, 12); break; case 29: @@ -1421,22 +1423,22 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 33: if (curChar != 48) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddStates(21, 23); break; case 35: if ((0x3ff000000000000L & l) == 0L) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(35, 6); break; case 36: if ((0xff000000000000L & l) == 0L) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(36, 6); break; case 37: @@ -1456,8 +1458,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjstateSet[jjnewStateCnt++] = 43; break; case 44: - if (curChar == 34 && kind > 80) - kind = 80; + if (curChar == 34 && kind > 101) + kind = 101; break; case 45: if ((0xfffffffbffffffffL & l) != 0L) @@ -1472,8 +1474,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjstateSet[jjnewStateCnt++] = 50; break; case 51: - if (curChar == 34 && kind > 81) - kind = 81; + if (curChar == 34 && kind > 102) + kind = 102; break; case 52: if (curChar == 39) @@ -1488,8 +1490,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjCheckNAddStates(41, 43); break; case 56: - if (curChar == 39 && kind > 80) - kind = 80; + if (curChar == 39 && kind > 101) + kind = 101; break; case 57: if ((0xffffff7fffffffffL & l) != 0L) @@ -1500,8 +1502,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjCheckNAddStates(44, 46); break; case 60: - if (curChar == 39 && kind > 82) - kind = 82; + if (curChar == 39 && kind > 103) + kind = 103; break; case 62: jjAddStates(47, 49); @@ -1523,8 +1525,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 3: if ((0x87fffffe87fffffeL & l) != 0L) { - if (kind > 84) - kind = 84; + if (kind > 105) + kind = 105; jjCheckNAdd(14); } else if (curChar == 96) @@ -1535,23 +1537,23 @@ static private final int jjMoveNfa_1(int startState, int curPos) kind = 13; break; case 6: - if ((0x100000001000L & l) != 0L && kind > 74) - kind = 74; + if ((0x100000001000L & l) != 0L && kind > 95) + kind = 95; break; case 9: if ((0x2000000020L & l) != 0L) jjAddStates(59, 60); break; case 12: - if ((0x5000000050L & l) != 0L && kind > 78) - kind = 78; + if ((0x5000000050L & l) != 0L && kind > 99) + kind = 99; break; case 13: case 14: if ((0x87fffffe87fffffeL & l) == 0L) break; - if (kind > 84) - kind = 84; + if (kind > 105) + kind = 105; jjCheckNAdd(14); break; case 16: @@ -1581,8 +1583,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 35: if ((0x7e0000007eL & l) == 0L) break; - if (kind > 74) - kind = 74; + if (kind > 95) + kind = 95; jjCheckNAddTwoStates(35, 6); break; case 38: @@ -1654,8 +1656,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjstateSet[jjnewStateCnt++] = 63; break; case 65: - if (curChar == 96 && kind > 80) - kind = 80; + if (curChar == 96 && kind > 101) + kind = 101; break; case 66: if ((0xfffffffeffffffffL & l) != 0L) @@ -1670,8 +1672,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) jjstateSet[jjnewStateCnt++] = 67; break; case 69: - if (curChar == 96 && kind > 83) - kind = 83; + if (curChar == 96 && kind > 104) + kind = 104; break; default : break; } @@ -1689,8 +1691,8 @@ static private final int jjMoveNfa_1(int startState, int curPos) case 14: if ((jjbitVec0[i2] & l2) == 0L) break; - if (kind > 84) - kind = 84; + if (kind > 105) + kind = 105; jjCheckNAdd(14); break; case 1: @@ -1794,13 +1796,13 @@ null, null, null, null, null, null, null, null, null, null, null, null, null, nu null, null, null, null, null, null, null, null, null, null, null, null, "\55\76", "\72\72", "\75\76", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, -null, null, null, null, null, null, null, null, null, null, null, null, null, null, -null, null, null, null, null, null, null, null, null, "\50", "\51", "\173", "\175", -"\133", "\135", "\73", "\54", "\56", "\76", "\74", "\75\75", "\74\75", "\76\75", -"\41\75", "\74\76", "\41\75\75", "\75\75\75", "\75", "\53\75", "\55\75", "\52\75", -"\57\75", "\46\75", "\174\75", "\136\75", "\56\75", "\45\75", "\176\75", "\100", "\44", -"\41", "\176", "\77", "\72", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", -"\52", "\57", "\46", "\174", "\136", "\45", "\74\74", "\76\76", "\76\76\76", +null, null, null, null, null, null, null, "\100", "\44", "\41", "\176", "\77", +"\72", "\174\174", "\46\46", "\53\53", "\55\55", "\53", "\55", "\52", "\57", "\46", +"\174", "\136", "\45", "\74\74", "\76\76", "\76\76\76", null, null, null, null, null, +null, null, null, null, null, null, null, null, null, null, null, "\50", "\51", +"\173", "\175", "\133", "\135", "\73", "\54", "\56", "\76", "\74", "\75\75", "\74\75", +"\76\75", "\41\75", "\74\76", "\41\75\75", "\75\75\75", "\75", "\53\75", "\55\75", +"\52\75", "\57\75", "\46\75", "\174\75", "\136\75", "\56\75", "\45\75", "\176\75", "\74\74\75", "\76\76\75", null, }; public static final String[] lexStateNames = { "DEFAULT", @@ -1818,7 +1820,7 @@ public static final int[] jjnewLexState = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }; static final long[] jjtoToken = { - 0xfffffffffff0001fL, 0xffffffffff1f47ffL, 0x1fffL, + 0xfffffffffff0001fL, 0xffffe3e8ffffffffL, 0x1fffL, }; static final long[] jjtoSkip = { 0x7ffe0L, 0x0L, 0x0L, @@ -1977,6 +1979,7 @@ public static Token getNextToken() { matchedToken = jjFillToken(); matchedToken.specialToken = specialToken; + TokenLexicalActions(matchedToken); if (jjnewLexState[jjmatchedKind] != -1) curLexState = jjnewLexState[jjmatchedKind]; return matchedToken; @@ -2051,4 +2054,40 @@ static void SkipLexicalActions(Token matchedToken) break; } } +static void TokenLexicalActions(Token matchedToken) +{ + switch(jjmatchedKind) + { + case 1 : + if (image == null) + image = new StringBuffer(jjstrLiteralImages[1]); + else + image.append(jjstrLiteralImages[1]); + PHPParser.createNewHTMLCode(); + break; + case 2 : + if (image == null) + image = new StringBuffer(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)))); + else + image.append(new String(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)))); + PHPParser.createNewHTMLCode(); + break; + case 3 : + if (image == null) + image = new StringBuffer(jjstrLiteralImages[3]); + else + image.append(jjstrLiteralImages[3]); + PHPParser.createNewHTMLCode(); + break; + case 4 : + if (image == null) + image = new StringBuffer(jjstrLiteralImages[4]); + else + image.append(jjstrLiteralImages[4]); + PHPParser.htmlStart = SimpleCharStream.getPosition(); + break; + default : + break; + } +} } diff --git a/net.sourceforge.phpeclipse/src/test/SimpleCharStream.java b/net.sourceforge.phpeclipse/src/test/SimpleCharStream.java index 1187798..011f1f2 100644 --- a/net.sourceforge.phpeclipse/src/test/SimpleCharStream.java +++ b/net.sourceforge.phpeclipse/src/test/SimpleCharStream.java @@ -27,6 +27,7 @@ public class SimpleCharStream static protected boolean prevCharIsLF = false; static protected java.io.Reader inputStream; + static protected StringBuffer currentBuffer = new StringBuffer(); static protected char[] buffer; static protected int maxNextCharInd = 0; @@ -119,6 +120,7 @@ public class SimpleCharStream else { maxNextCharInd += i; } + currentBuffer.append(buffer); return; } catch(java.io.IOException e) { @@ -252,6 +254,7 @@ public class SimpleCharStream " either use ReInit() or set the JavaCC option STATIC to false\n" + " during the generation of this class."); inputStream = dstream; + currentBuffer = new StringBuffer(); line = startline; column = startcolumn - 1; @@ -275,6 +278,7 @@ public class SimpleCharStream int startcolumn, int buffersize) { inputStream = dstream; + currentBuffer = new StringBuffer(); line = startline; column = startcolumn - 1; -- 1.7.1