X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/test/PHPParser.java b/net.sourceforge.phpeclipse/src/test/PHPParser.java deleted file mode 100644 index 76619da..0000000 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.java +++ /dev/null @@ -1,7045 +0,0 @@ -/* Generated By:JavaCC: Do not edit this line. PHPParser.java */ -package test; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.ui.texteditor.MarkerUtilities; -import org.eclipse.jface.preference.IPreferenceStore; - -import java.util.Hashtable; -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.ast.*; -import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren; -import net.sourceforge.phpdt.internal.compiler.parser.Outlineable; -import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo; - -/** - * A new php parser. - * This php parser is inspired by the Java 1.2 grammar example - * given with JavaCC. You can get JavaCC at http://www.webgain.com - * You can test the parser with the PHPParserTestCase2.java - * @author Matthieu Casanova - * @version $Reference: 1.0$ - */ -public final class PHPParser extends PHPParserSuperclass implements PHPParserConstants { - - /** The file that is parsed. */ - private static IFile fileToParse; - - /** The current segment. */ - 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; - - /** The error level of the current ParseException. */ - private static int errorLevel = ERROR; - /** The message of the current ParseException. If it's null it's because the parse exception wasn't handled */ - private static String errorMessage; - - private static int errorStart = -1; - private static int errorEnd = -1; - private static PHPDocument phpDocument; - - private static final char[] SYNTAX_ERROR_CHAR = {'s','y','n','t','a','x',' ','e','r','r','o','r'}; - /** - * 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[] nodes; - /** The cursor in expression stack. */ - private static int nodePtr; - - public final void setFileToParse(final IFile fileToParse) { - this.fileToParse = fileToParse; - } - - public PHPParser() { - } - - public PHPParser(final IFile fileToParse) { - this(new StringReader("")); - 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(final AstNode node) { - try { - nodes[++nodePtr] = node; - } catch (IndexOutOfBoundsException e) { - final int oldStackLength = nodes.length; - final AstNode[] oldStack = nodes; - nodes = new AstNode[oldStackLength + AstStackIncrement]; - System.arraycopy(oldStack, 0, nodes, 0, oldStackLength); - nodePtr = oldStackLength; - nodes[nodePtr] = node; - } - } - - public final PHPOutlineInfo parseInfo(final Object parent, final String s) { - phpDocument = new PHPDocument(parent,"_root".toCharArray()); - currentSegment = phpDocument; - outlineInfo = new PHPOutlineInfo(parent, currentSegment); - final StringReader stream = new StringReader(s); - if (jj_input_stream == null) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - } - ReInit(stream); - init(); - try { - parse(); - phpDocument.nodes = new AstNode[nodes.length]; - System.arraycopy(nodes,0,phpDocument.nodes,0,nodes.length); - if (PHPeclipsePlugin.DEBUG) { - PHPeclipsePlugin.log(1,phpDocument.toString()); - } - } catch (ParseException e) { - processParseException(e); - } - return outlineInfo; - } - - /** - * This method will process the parse exception. - * If the error message is null, the parse exception wasn't catched and a trace is written in the log - * @param e the ParseException - */ - private static void processParseException(final ParseException e) { - if (errorMessage == null) { - PHPeclipsePlugin.log(e); - errorMessage = "this exception wasn't handled by the parser please tell us how to reproduce it"; - errorStart = SimpleCharStream.getPosition(); - errorEnd = errorStart + 1; - } - setMarker(e); - errorMessage = null; - // if (PHPeclipsePlugin.DEBUG) PHPeclipsePlugin.log(e); - } - - /** - * Create marker for the parse error. - * @param e the ParseException - */ - private static void setMarker(final ParseException e) { - try { - if (errorStart == -1) { - setMarker(fileToParse, - errorMessage, - SimpleCharStream.tokenBegin, - SimpleCharStream.tokenBegin + e.currentToken.image.length(), - errorLevel, - "Line " + e.currentToken.beginLine); - } else { - setMarker(fileToParse, - errorMessage, - errorStart, - errorEnd, - errorLevel, - "Line " + e.currentToken.beginLine); - errorStart = -1; - errorEnd = -1; - } - } catch (CoreException e2) { - PHPeclipsePlugin.log(e2); - } - } - - private static void scanLine(final String output, - final IFile file, - final int indx, - final int brIndx) throws CoreException { - String current; - final StringBuffer lineNumberBuffer = new StringBuffer(10); - char ch; - current = output.substring(indx, brIndx); - - if (current.indexOf(PARSE_WARNING_STRING) != -1 || current.indexOf(PARSE_ERROR_STRING) != -1) { - final int onLine = current.indexOf("on line "); - if (onLine != -1) { - lineNumberBuffer.delete(0, lineNumberBuffer.length()); - for (int i = onLine; i < current.length(); i++) { - ch = current.charAt(i); - if ('0' <= ch && '9' >= ch) { - lineNumberBuffer.append(ch); - } - } - - final int lineNumber = Integer.parseInt(lineNumberBuffer.toString()); - - final Hashtable attributes = new Hashtable(); - - current = current.replaceAll("\n", ""); - current = current.replaceAll("", ""); - current = current.replaceAll("", ""); - MarkerUtilities.setMessage(attributes, current); - - if (current.indexOf(PARSE_ERROR_STRING) != -1) - attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_ERROR)); - else if (current.indexOf(PARSE_WARNING_STRING) != -1) - attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_WARNING)); - else - attributes.put(IMarker.SEVERITY, new Integer(IMarker.SEVERITY_INFO)); - MarkerUtilities.setLineNumber(attributes, lineNumber); - MarkerUtilities.createMarker(file, attributes, IMarker.PROBLEM); - } - } - } - - public final void parse(final String s) throws CoreException { - final StringReader stream = new StringReader(s); - if (jj_input_stream == null) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - } - ReInit(stream); - init(); - try { - parse(); - } catch (ParseException e) { - processParseException(e); - } - } - - /** - * Call the php parse command ( php -l -f <filename> ) - * and create markers according to the external parser output - */ - public static void phpExternalParse(final IFile file) { - final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - final String filename = file.getLocation().toString(); - - final String[] arguments = { filename }; - final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF)); - final String command = form.format(arguments); - - final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: "); - - try { - // parse the buffer to find the errors and warnings - createMarkers(parserResult, file); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } - - /** - * Put a new html block in the stack. - */ - public static final void createNewHTMLCode() { - final int currentPosition = SimpleCharStream.getPosition(); - if (currentPosition == htmlStart || currentPosition > SimpleCharStream.currentBuffer.length()) { - return; - } - final char[] chars = SimpleCharStream.currentBuffer.substring(htmlStart,currentPosition+1).toCharArray(); - pushOnAstNodes(new HTMLCode(chars, htmlStart,currentPosition)); - } - - /** Create a new task. */ - public static final void createNewTask() { - final int currentPosition = SimpleCharStream.getPosition(); - final String todo = SimpleCharStream.currentBuffer.substring(currentPosition-3, - SimpleCharStream.currentBuffer.indexOf("\n", - currentPosition)-1); - PHPeclipsePlugin.log(1,SimpleCharStream.currentBuffer.toString()); - try { - setMarker(fileToParse, - todo, - SimpleCharStream.getBeginLine(), - TASK, - "Line "+SimpleCharStream.getBeginLine()); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } - - private static final void parse() throws ParseException { - phpFile(); - } - - static final public void phpFile() throws ParseException { - try { - label_1: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PHPSTARTSHORT: - case PHPSTARTLONG: - case PHPECHOSTART: - case PHPEND: - case CLASS: - case FUNCTION: - case IF: - case ARRAY: - case BREAK: - case LIST: - case PRINT: - case ECHO: - case INCLUDE: - case REQUIRE: - case INCLUDE_ONCE: - case REQUIRE_ONCE: - case GLOBAL: - case DEFINE: - case STATIC: - case CONTINUE: - case DO: - case FOR: - case NEW: - case NULL: - case RETURN: - case SWITCH: - case TRUE: - case FALSE: - case WHILE: - case FOREACH: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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[0] = jj_gen; - break label_1; - } - PhpBlock(); - } - PHPParser.createNewHTMLCode(); - } catch (TokenMgrError e) { - PHPeclipsePlugin.log(e); - errorStart = SimpleCharStream.getPosition(); - errorEnd = errorStart + 1; - errorMessage = e.getMessage(); - errorLevel = ERROR; - {if (true) throw generateParseException();} - } - } - -/** - * A php block is a - * or - * or - */ - static final public void PhpBlock() throws ParseException { - final int start = SimpleCharStream.getPosition(); - final PHPEchoBlock phpEchoBlock; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PHPECHOSTART: - phpEchoBlock = phpEchoBlock(); - pushOnAstNodes(phpEchoBlock); - break; - case PHPSTARTSHORT: - case PHPSTARTLONG: - case PHPEND: - case CLASS: - case FUNCTION: - case IF: - case ARRAY: - case BREAK: - case LIST: - case PRINT: - case ECHO: - case INCLUDE: - case REQUIRE: - case INCLUDE_ONCE: - case REQUIRE_ONCE: - case GLOBAL: - case DEFINE: - case STATIC: - case CONTINUE: - case DO: - case FOR: - case NEW: - case NULL: - case RETURN: - case SWITCH: - case TRUE: - case FALSE: - case WHILE: - case FOREACH: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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: - case PHPSTARTLONG: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PHPSTARTLONG: - jj_consume_token(PHPSTARTLONG); - break; - case PHPSTARTSHORT: - jj_consume_token(PHPSTARTSHORT); - try { - setMarker(fileToParse, - "You should use '' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - break; - default: - jj_la1[3] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - - static final public PHPEchoBlock phpEchoBlock() throws ParseException { - final Expression expr; - final int pos = SimpleCharStream.getPosition(); - final PHPEchoBlock echoBlock; - jj_consume_token(PHPECHOSTART); - expr = Expression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case SEMICOLON: - jj_consume_token(SEMICOLON); - break; - default: - jj_la1[4] = jj_gen; - ; - } - 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 { - label_2: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case CLASS: - case FUNCTION: - case IF: - case ARRAY: - case BREAK: - case LIST: - case PRINT: - case ECHO: - case INCLUDE: - case REQUIRE: - case INCLUDE_ONCE: - case REQUIRE_ONCE: - case GLOBAL: - case DEFINE: - case STATIC: - case CONTINUE: - case DO: - case FOR: - case NEW: - case NULL: - case RETURN: - case SWITCH: - case TRUE: - case FALSE: - case WHILE: - case FOREACH: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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[5] = jj_gen; - break label_2; - } - BlockStatement(); - } - } - - static final public ClassDeclaration ClassDeclaration() throws ParseException { - final ClassDeclaration classDeclaration; - final Token className,superclassName; - final int pos; - char[] classNameImage = SYNTAX_ERROR_CHAR; - char[] superclassNameImage = null; - jj_consume_token(CLASS); - pos = SimpleCharStream.getPosition(); - try { - className = jj_consume_token(IDENTIFIER); - classNameImage = className.image.toCharArray(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EXTENDS: - jj_consume_token(EXTENDS); - try { - superclassName = jj_consume_token(IDENTIFIER); - superclassNameImage = superclassName.image.toCharArray(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - superclassNameImage = SYNTAX_ERROR_CHAR; - } - break; - default: - jj_la1[6] = jj_gen; - ; - } - if (superclassNameImage == null) { - classDeclaration = new ClassDeclaration(currentSegment, - classNameImage, - pos, - 0); - } else { - classDeclaration = new ClassDeclaration(currentSegment, - classNameImage, - superclassNameImage, - pos, - 0); - } - currentSegment.add(classDeclaration); - currentSegment = classDeclaration; - 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(final ClassDeclaration classDeclaration) throws ParseException { - try { - jj_consume_token(LBRACE); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image + "'. '{' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - label_3: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case FUNCTION: - case VAR: - ; - break; - default: - jj_la1[7] = jj_gen; - break label_3; - } - ClassBodyDeclaration(classDeclaration); - } - try { - jj_consume_token(RBRACE); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. 'var', 'function' or '}' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - } - -/** - * A class can contain only methods and fields. - */ - static final public void ClassBodyDeclaration(final ClassDeclaration classDeclaration) throws ParseException { - final MethodDeclaration method; - final FieldDeclaration field; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case FUNCTION: - method = MethodDeclaration(); - classDeclaration.addMethod(method); - break; - case VAR: - field = FieldDeclaration(); - classDeclaration.addField(field); - break; - default: - jj_la1[8] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - -/** - * A class field declaration : it's var VariableDeclarator() (, VariableDeclarator())*;. - */ - static final public FieldDeclaration FieldDeclaration() throws ParseException { - VariableDeclaration variableDeclaration; - final VariableDeclaration[] list; - final ArrayList arrayList = new ArrayList(); - final int pos = SimpleCharStream.getPosition(); - jj_consume_token(VAR); - variableDeclaration = VariableDeclarator(); - arrayList.add(variableDeclaration); - outlineInfo.addVariable(new String(variableDeclaration.name)); - label_4: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[9] = jj_gen; - break label_4; - } - jj_consume_token(COMMA); - variableDeclaration = VariableDeclarator(); - arrayList.add(variableDeclaration); - outlineInfo.addVariable(new String(variableDeclaration.name)); - } - try { - jj_consume_token(SEMICOLON); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected after variable declaration"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - list = new VariableDeclaration[arrayList.size()]; - arrayList.toArray(list); - {if (true) return new FieldDeclaration(list, - pos, - SimpleCharStream.getPosition(), - currentSegment);} - throw new Error("Missing return statement in function"); - } - - static final public VariableDeclaration VariableDeclarator() throws ParseException { - final String varName; - Expression initializer = null; - final int pos = SimpleCharStream.getPosition(); - varName = VariableDeclaratorId(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ASSIGN: - jj_consume_token(ASSIGN); - try { - initializer = VariableInitializer(); - } catch (ParseException e) { - errorMessage = "Literal expression expected in variable initializer"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - break; - default: - jj_la1[10] = jj_gen; - ; - } - if (initializer == null) { - {if (true) return new VariableDeclaration(currentSegment, - varName.toCharArray(), - pos, - SimpleCharStream.getPosition());} - } - {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 { - final String expr; - Expression expression = null; - final int pos = SimpleCharStream.getPosition(); - ConstantIdentifier ex; - try { - expr = Variable(); - label_5: - while (true) { - if (jj_2_1(2)) { - ; - } else { - break label_5; - } - ex = new ConstantIdentifier(expr.toCharArray(), - pos, - SimpleCharStream.getPosition()); - expression = VariableSuffix(ex); - } - if (expression == null) { - {if (true) return expr;} - } - {if (true) return expression.toStringExpression();} - } catch (ParseException e) { - errorMessage = "'$' expected for variable identifier"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - throw new Error("Missing return statement in function"); - } - -/** - * Return a variablename without the $. - * @return a variable name - */ - static final public String Variable() throws ParseException { - 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); - expression = Expression(); - jj_consume_token(RBRACE); - break; - default: - jj_la1[11] = jj_gen; - ; - } - if (expression == null) { - {if (true) return token.image.substring(1);} - } - 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 (true) return expr;} - break; - default: - jj_la1[12] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - -/** - * A Variable name (without the $) - * @return a variable name String - */ - static final public String VariableName() throws ParseException { - final StringBuffer buff; - final String expr; - Expression expression = null; - final Token token; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LBRACE: - jj_consume_token(LBRACE); - expression = Expression(); - jj_consume_token(RBRACE); - 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); - expression = Expression(); - jj_consume_token(RBRACE); - break; - default: - jj_la1[13] = jj_gen; - ; - } - if (expression == null) { - {if (true) return token.image;} - } - 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(); - buff = new StringBuffer("$"); - buff.append(expr); - {if (true) return buff.toString();} - break; - case DOLLAR_ID: - token = jj_consume_token(DOLLAR_ID); - {if (true) return token.image;} - break; - default: - jj_la1[14] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - 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: - case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - expr = Literal(); - {if (true) return expr;} - break; - case MINUS: - jj_consume_token(MINUS); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INTEGER_LITERAL: - token = jj_consume_token(INTEGER_LITERAL); - break; - case FLOATING_POINT_LITERAL: - token = jj_consume_token(FLOATING_POINT_LITERAL); - break; - default: - jj_la1[15] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition()), - OperatorIds.MINUS, - pos);} - break; - case PLUS: - jj_consume_token(PLUS); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case INTEGER_LITERAL: - token = jj_consume_token(INTEGER_LITERAL); - break; - case FLOATING_POINT_LITERAL: - token = jj_consume_token(FLOATING_POINT_LITERAL); - break; - default: - jj_la1[16] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - {if (true) return new PrefixedUnaryExpression(new NumberLiteral(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition()), - OperatorIds.PLUS, - pos);} - break; - case ARRAY: - expr = ArrayDeclarator(); - {if (true) return expr;} - break; - case IDENTIFIER: - token = jj_consume_token(IDENTIFIER); - {if (true) return new ConstantIdentifier(token.image.toCharArray(),pos,SimpleCharStream.getPosition());} - break; - default: - jj_la1[17] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public ArrayVariableDeclaration ArrayVariable() throws ParseException { -final Expression expr,expr2; - expr = Expression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAYASSIGN: - jj_consume_token(ARRAYASSIGN); - expr2 = Expression(); - {if (true) return new ArrayVariableDeclaration(expr,expr2);} - break; - default: - jj_la1[18] = jj_gen; - ; - } - {if (true) return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - - 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: - case LIST: - case PRINT: - case NEW: - case NULL: - case TRUE: - case FALSE: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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(); - list.add(expr); - label_6: - while (true) { - if (jj_2_2(2)) { - ; - } else { - break label_6; - } - jj_consume_token(COMMA); - expr = ArrayVariable(); - list.add(expr); - } - break; - default: - jj_la1[19] = jj_gen; - ; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - jj_consume_token(COMMA); - list.add(null); - break; - default: - jj_la1[20] = jj_gen; - ; - } - jj_consume_token(RPAREN); - final ArrayVariableDeclaration[] vars = new ArrayVariableDeclaration[list.size()]; - list.toArray(vars); - {if (true) return vars;} - throw new Error("Missing return statement in function"); - } - -/** - * A Method Declaration. - * function MetodDeclarator() Block() - */ - static final public MethodDeclaration MethodDeclaration() throws ParseException { - final MethodDeclaration functionDeclaration; - final Block block; - final OutlineableWithChildren seg = currentSegment; - jj_consume_token(FUNCTION); - try { - functionDeclaration = MethodDeclarator(); - outlineInfo.addVariable(new String(functionDeclaration.name)); - } catch (ParseException e) { - if (errorMessage != null) {if (true) throw e;} - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - currentSegment = functionDeclaration; - block = Block(); - functionDeclaration.statements = block.statements; - currentSegment = seg; - {if (true) return functionDeclaration;} - throw new Error("Missing return statement in function"); - } - -/** - * A MethodDeclarator. - * [&] IDENTIFIER(parameters ...). - * @return a function description for the outline - */ - static final public MethodDeclaration MethodDeclarator() throws ParseException { - final Token identifier; - Token reference = null; - final Hashtable formalParameters; - final int pos = SimpleCharStream.getPosition(); - char[] identifierChar = SYNTAX_ERROR_CHAR; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BIT_AND: - reference = jj_consume_token(BIT_AND); - break; - default: - jj_la1[21] = jj_gen; - ; - } - try { - identifier = jj_consume_token(IDENTIFIER); - identifierChar = identifier.image.toCharArray(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - formalParameters = FormalParameters(); - {if (true) return new MethodDeclaration(currentSegment, - identifierChar, - formalParameters, - reference != null, - pos, - SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - -/** - * FormalParameters follows method identifier. - * (FormalParameter()) - */ - static final public Hashtable FormalParameters() throws ParseException { - VariableDeclaration var; - final Hashtable parameters = new Hashtable(); - try { - jj_consume_token(LPAREN); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected after function identifier"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DOLLAR: - case BIT_AND: - case DOLLAR_ID: - var = FormalParameter(); - parameters.put(new String(var.name),var); - label_7: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[22] = jj_gen; - break label_7; - } - jj_consume_token(COMMA); - var = FormalParameter(); - parameters.put(new String(var.name),var); - } - break; - default: - jj_la1[23] = jj_gen; - ; - } - try { - jj_consume_token(RPAREN); - } catch (ParseException e) { - errorMessage = "')' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - {if (true) return parameters;} - throw new Error("Missing return statement in function"); - } - -/** - * A formal parameter. - * $varname[=value] (,$varname[=value]) - */ - static final public VariableDeclaration FormalParameter() throws ParseException { - final VariableDeclaration variableDeclaration; - Token token = null; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BIT_AND: - token = jj_consume_token(BIT_AND); - break; - default: - jj_la1[24] = jj_gen; - ; - } - variableDeclaration = VariableDeclarator(); - if (token != null) { - variableDeclaration.setReference(true); - } - {if (true) return variableDeclaration;} - throw new Error("Missing return statement in function"); - } - - static final public ConstantIdentifier Type() throws ParseException { - final int pos; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case STRING: - jj_consume_token(STRING); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.STRING,pos,pos-6);} - break; - case BOOL: - jj_consume_token(BOOL); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.BOOL,pos,pos-4);} - break; - case BOOLEAN: - jj_consume_token(BOOLEAN); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.BOOLEAN,pos,pos-7);} - break; - case REAL: - jj_consume_token(REAL); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.REAL,pos,pos-4);} - break; - case DOUBLE: - jj_consume_token(DOUBLE); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.DOUBLE,pos,pos-5);} - break; - case FLOAT: - jj_consume_token(FLOAT); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.FLOAT,pos,pos-5);} - break; - case INT: - jj_consume_token(INT); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.INT,pos,pos-3);} - break; - case INTEGER: - jj_consume_token(INTEGER); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.INTEGER,pos,pos-7);} - break; - case OBJECT: - jj_consume_token(OBJECT); - pos = SimpleCharStream.getPosition(); - {if (true) return new ConstantIdentifier(Types.OBJECT,pos,pos-6);} - break; - default: - jj_la1[25] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public Expression Expression() throws ParseException { - final Expression expr; - Expression initializer = null; - int assignOperator = -1; - final int pos = SimpleCharStream.getPosition(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAY: - case NEW: - case NULL: - case TRUE: - case FALSE: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ASSIGN: - case PLUSASSIGN: - case MINUSASSIGN: - case STARASSIGN: - case SLASHASSIGN: - case ANDASSIGN: - case ORASSIGN: - case XORASSIGN: - case DOTASSIGN: - case REMASSIGN: - case TILDEEQUAL: - case LSHIFTASSIGN: - case RSIGNEDSHIFTASSIGN: - assignOperator = AssignmentOperator(); - try { - initializer = Expression(); - } catch (ParseException e) { - if (errorMessage != null) { - {if (true) throw e;} - } - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; - errorLevel = ERROR; - errorEnd = SimpleCharStream.getPosition(); - {if (true) throw e;} - } - break; - default: - jj_la1[26] = jj_gen; - ; - } - if (assignOperator == -1) {if (true) return expr;} - {if (true) return new VarAssignation(expr, - initializer, - assignOperator, - pos, - SimpleCharStream.getPosition());} - {if (true) return expr;} - break; - case LIST: - case PRINT: - expr = ExpressionWBang(); - {if (true) return expr;} - break; - default: - jj_la1[27] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public Expression ExpressionWBang() throws ParseException { - final Expression expr; - final int pos = SimpleCharStream.getPosition(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BANG: - jj_consume_token(BANG); - expr = ExpressionWBang(); - {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);} - break; - case LIST: - case PRINT: - expr = ExpressionNoBang(); - {if (true) return expr;} - break; - default: - jj_la1[28] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public Expression ExpressionNoBang() throws ParseException { - final Expression expr; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PRINT: - expr = PrintExpression(); - {if (true) return expr;} - break; - case LIST: - expr = ListExpression(); - {if (true) return expr;} - break; - default: - jj_la1[29] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - -/** - * Any assignement operator. - * @return the assignement operator id - */ - static final public int AssignmentOperator() throws ParseException { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ASSIGN: - jj_consume_token(ASSIGN); - {if (true) return VarAssignation.EQUAL;} - break; - case STARASSIGN: - jj_consume_token(STARASSIGN); - {if (true) return VarAssignation.STAR_EQUAL;} - break; - case SLASHASSIGN: - jj_consume_token(SLASHASSIGN); - {if (true) return VarAssignation.SLASH_EQUAL;} - break; - case REMASSIGN: - jj_consume_token(REMASSIGN); - {if (true) return VarAssignation.REM_EQUAL;} - break; - case PLUSASSIGN: - jj_consume_token(PLUSASSIGN); - {if (true) return VarAssignation.PLUS_EQUAL;} - break; - case MINUSASSIGN: - jj_consume_token(MINUSASSIGN); - {if (true) return VarAssignation.MINUS_EQUAL;} - break; - case LSHIFTASSIGN: - jj_consume_token(LSHIFTASSIGN); - {if (true) return VarAssignation.LSHIFT_EQUAL;} - break; - case RSIGNEDSHIFTASSIGN: - jj_consume_token(RSIGNEDSHIFTASSIGN); - {if (true) return VarAssignation.RSIGNEDSHIFT_EQUAL;} - break; - case ANDASSIGN: - jj_consume_token(ANDASSIGN); - {if (true) return VarAssignation.AND_EQUAL;} - break; - case XORASSIGN: - jj_consume_token(XORASSIGN); - {if (true) return VarAssignation.XOR_EQUAL;} - break; - case ORASSIGN: - jj_consume_token(ORASSIGN); - {if (true) return VarAssignation.OR_EQUAL;} - break; - case DOTASSIGN: - jj_consume_token(DOTASSIGN); - {if (true) return VarAssignation.DOT_EQUAL;} - break; - case TILDEEQUAL: - jj_consume_token(TILDEEQUAL); - {if (true) return VarAssignation.TILDE_EQUAL;} - break; - default: - jj_la1[30] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - 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: - jj_consume_token(HOOK); - expr2 = Expression(); - jj_consume_token(COLON); - expr3 = ConditionalExpression(); - break; - default: - jj_la1[31] = jj_gen; - ; - } - if (expr3 == null) { - {if (true) return expr;} - } - {if (true) return new ConditionalExpression(expr,expr2,expr3);} - throw new Error("Missing return statement in function"); - } - - static final public Expression ConditionalOrExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = ConditionalAndExpression(); - label_8: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case OR_OR: - case _ORL: - ; - break; - default: - jj_la1[32] = jj_gen; - break label_8; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case OR_OR: - jj_consume_token(OR_OR); - operator = OperatorIds.OR_OR; - break; - case _ORL: - jj_consume_token(_ORL); - operator = OperatorIds.ORL; - break; - default: - jj_la1[33] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = ConditionalAndExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression ConditionalAndExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = ConcatExpression(); - label_9: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AND_AND: - case _ANDL: - ; - break; - default: - jj_la1[34] = jj_gen; - break label_9; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AND_AND: - jj_consume_token(AND_AND); - operator = OperatorIds.AND_AND; - break; - case _ANDL: - jj_consume_token(_ANDL); - operator = OperatorIds.ANDL; - break; - default: - jj_la1[35] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = ConcatExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression ConcatExpression() throws ParseException { - Expression expr,expr2; - expr = InclusiveOrExpression(); - label_10: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case DOT: - ; - break; - default: - jj_la1[36] = jj_gen; - break label_10; - } - jj_consume_token(DOT); - expr2 = InclusiveOrExpression(); - expr = new BinaryExpression(expr,expr2,OperatorIds.DOT); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression InclusiveOrExpression() throws ParseException { - Expression expr,expr2; - expr = ExclusiveOrExpression(); - label_11: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BIT_OR: - ; - break; - default: - jj_la1[37] = jj_gen; - break label_11; - } - jj_consume_token(BIT_OR); - expr2 = ExclusiveOrExpression(); - expr = new BinaryExpression(expr,expr2,OperatorIds.OR); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression ExclusiveOrExpression() throws ParseException { - Expression expr,expr2; - expr = AndExpression(); - label_12: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case XOR: - ; - break; - default: - jj_la1[38] = jj_gen; - break label_12; - } - jj_consume_token(XOR); - expr2 = AndExpression(); - expr = new BinaryExpression(expr,expr2,OperatorIds.XOR); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression AndExpression() throws ParseException { - Expression expr,expr2; - expr = EqualityExpression(); - label_13: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BIT_AND: - ; - break; - default: - jj_la1[39] = jj_gen; - break label_13; - } - jj_consume_token(BIT_AND); - expr2 = EqualityExpression(); - expr = new BinaryExpression(expr,expr2,OperatorIds.AND); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression EqualityExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = RelationalExpression(); - label_14: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQUAL_EQUAL: - case NOT_EQUAL: - case DIF: - case BANGDOUBLEEQUAL: - case TRIPLEEQUAL: - ; - break; - default: - jj_la1[40] = jj_gen; - break label_14; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case EQUAL_EQUAL: - jj_consume_token(EQUAL_EQUAL); - operator = OperatorIds.EQUAL_EQUAL; - break; - case DIF: - jj_consume_token(DIF); - operator = OperatorIds.DIF; - break; - case NOT_EQUAL: - jj_consume_token(NOT_EQUAL); - operator = OperatorIds.DIF; - break; - case BANGDOUBLEEQUAL: - jj_consume_token(BANGDOUBLEEQUAL); - operator = OperatorIds.BANG_EQUAL_EQUAL; - break; - case TRIPLEEQUAL: - jj_consume_token(TRIPLEEQUAL); - operator = OperatorIds.EQUAL_EQUAL_EQUAL; - break; - default: - jj_la1[41] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - try { - expr2 = RelationalExpression(); - } catch (ParseException e) { - if (errorMessage != null) { - {if (true) throw e;} - } - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression RelationalExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = ShiftExpression(); - label_15: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case GT: - case LT: - case LE: - case GE: - ; - break; - default: - jj_la1[42] = jj_gen; - break label_15; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LT: - jj_consume_token(LT); - operator = OperatorIds.LESS; - break; - case GT: - jj_consume_token(GT); - operator = OperatorIds.GREATER; - break; - case LE: - jj_consume_token(LE); - operator = OperatorIds.LESS_EQUAL; - break; - case GE: - jj_consume_token(GE); - operator = OperatorIds.GREATER_EQUAL; - break; - default: - jj_la1[43] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = ShiftExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression ShiftExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = AdditiveExpression(); - label_16: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LSHIFT: - case RSIGNEDSHIFT: - case RUNSIGNEDSHIFT: - ; - break; - default: - jj_la1[44] = jj_gen; - break label_16; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LSHIFT: - jj_consume_token(LSHIFT); - operator = OperatorIds.LEFT_SHIFT; - break; - case RSIGNEDSHIFT: - jj_consume_token(RSIGNEDSHIFT); - operator = OperatorIds.RIGHT_SHIFT; - break; - case RUNSIGNEDSHIFT: - jj_consume_token(RUNSIGNEDSHIFT); - operator = OperatorIds.UNSIGNED_RIGHT_SHIFT; - break; - default: - jj_la1[45] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = AdditiveExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - static final public Expression AdditiveExpression() throws ParseException { - Expression expr,expr2; - int operator; - expr = MultiplicativeExpression(); - label_17: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS: - case MINUS: - ; - break; - default: - jj_la1[46] = jj_gen; - break label_17; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS: - jj_consume_token(PLUS); - operator = OperatorIds.PLUS; - break; - case MINUS: - jj_consume_token(MINUS); - operator = OperatorIds.MINUS; - break; - default: - jj_la1[47] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = MultiplicativeExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - - 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 = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - label_18: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case STAR: - case SLASH: - case REMAINDER: - ; - break; - default: - jj_la1[48] = jj_gen; - break label_18; - } - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case STAR: - jj_consume_token(STAR); - operator = OperatorIds.MULTIPLY; - break; - case SLASH: - jj_consume_token(SLASH); - operator = OperatorIds.DIVIDE; - break; - case REMAINDER: - jj_consume_token(REMAINDER); - operator = OperatorIds.REMAINDER; - break; - default: - jj_la1[49] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr2 = UnaryExpression(); - expr = new BinaryExpression(expr,expr2,operator); - } - {if (true) return expr;} - throw new Error("Missing return statement in function"); - } - -/** - * An unary expression starting with @, & or nothing - */ - static final public Expression UnaryExpression() throws ParseException { - final Expression expr; - final int pos = SimpleCharStream.getPosition(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BIT_AND: - jj_consume_token(BIT_AND); - expr = UnaryExpressionNoPrefix(); - {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 PLUS_PLUS: - case MINUS_MINUS: - 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[50] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public Expression AtUnaryExpression() throws ParseException { - final 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 PLUS_PLUS: - case MINUS_MINUS: - case PLUS: - case MINUS: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case DOLLAR_ID: - expr = UnaryExpressionNoPrefix(); - {if (true) return expr;} - break; - default: - jj_la1[51] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public Expression UnaryExpressionNoPrefix() throws ParseException { - final Expression expr; - final 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: - jj_consume_token(PLUS); - operator = OperatorIds.PLUS; - break; - case MINUS: - jj_consume_token(MINUS); - operator = OperatorIds.MINUS; - break; - default: - jj_la1[52] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr = UnaryExpression(); - {if (true) return new PrefixedUnaryExpression(expr,operator,pos);} - break; - case PLUS_PLUS: - case MINUS_MINUS: - expr = PreIncDecExpression(); - {if (true) return expr;} - break; - case ARRAY: - case NEW: - 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_ID: - expr = UnaryExpressionNotPlusMinus(); - {if (true) return expr;} - break; - default: - jj_la1[53] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - 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 PLUS_PLUS: - jj_consume_token(PLUS_PLUS); - operator = OperatorIds.PLUS_PLUS; - break; - case MINUS_MINUS: - jj_consume_token(MINUS_MINUS); - operator = OperatorIds.MINUS_MINUS; - break; - default: - jj_la1[54] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - expr = PrimaryExpression(); - {if (true) return new PrefixedUnaryExpression(expr,operator,pos);} - throw new Error("Missing return statement in function"); - } - - static final public Expression UnaryExpressionNotPlusMinus() throws ParseException { - final Expression expr; - final int pos = SimpleCharStream.getPosition(); - if (jj_2_3(2147483647)) { - expr = CastExpression(); - {if (true) return expr;} - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case BANG: - jj_consume_token(BANG); - expr = UnaryExpression(); - {if (true) return new PrefixedUnaryExpression(expr,OperatorIds.NOT,pos);} - break; - case ARRAY: - case NEW: - case DOLLAR: - case IDENTIFIER: - case DOLLAR_ID: - expr = PostfixExpression(); - {if (true) return expr;} - break; - case NULL: - case TRUE: - case FALSE: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - expr = Literal(); - {if (true) return expr;} - break; - case LPAREN: - jj_consume_token(LPAREN); - expr = Expression(); - try { - jj_consume_token(RPAREN); - } catch (ParseException e) { - errorMessage = "')' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return expr;} - break; - default: - jj_la1[55] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - throw new Error("Missing return statement in function"); - } - - 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: - case OBJECT: - case BOOL: - case BOOLEAN: - case REAL: - case DOUBLE: - case FLOAT: - case INT: - case INTEGER: - type = Type(); - break; - case ARRAY: - jj_consume_token(ARRAY); - type = new ConstantIdentifier(Types.ARRAY,pos,SimpleCharStream.getPosition()); - break; - default: - jj_la1[56] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - jj_consume_token(RPAREN); - expr = UnaryExpression(); - {if (true) return new CastExpression(type,expr,pos,SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - - static final public Expression PostfixExpression() throws ParseException { - final Expression expr; - int operator = -1; - final int pos = SimpleCharStream.getPosition(); - expr = PrimaryExpression(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS_PLUS: - case MINUS_MINUS: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PLUS_PLUS: - jj_consume_token(PLUS_PLUS); - operator = OperatorIds.PLUS_PLUS; - break; - case MINUS_MINUS: - jj_consume_token(MINUS_MINUS); - operator = OperatorIds.MINUS_MINUS; - break; - default: - jj_la1[57] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - break; - default: - jj_la1[58] = jj_gen; - ; - } - if (operator == -1) { - {if (true) return expr;} - } - {if (true) return new PostfixedUnaryExpression(expr,operator,pos);} - throw new Error("Missing return statement in function"); - } - - static final public Expression PrimaryExpression() throws ParseException { - Expression expr; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case NEW: - case DOLLAR: - case IDENTIFIER: - case DOLLAR_ID: - expr = PrimaryPrefix(); - label_19: - while (true) { - if (jj_2_4(2147483647)) { - ; - } else { - break label_19; - } - expr = PrimarySuffix(expr); - } - {if (true) return expr;} - break; - case ARRAY: - expr = ArrayDeclarator(); - {if (true) return expr;} - break; - default: - jj_la1[59] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - 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 new ConstantIdentifier(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition());} - break; - case NEW: - jj_consume_token(NEW); - expr = ClassIdentifier(); - {if (true) return new PrefixedUnaryExpression(expr, - OperatorIds.NEW, - pos);} - break; - case DOLLAR: - case DOLLAR_ID: - var = VariableDeclaratorId(); - {if (true) return new VariableDeclaration(currentSegment, - var.toCharArray(), - pos, - SimpleCharStream.getPosition());} - break; - default: - jj_la1[60] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public AbstractSuffixExpression PrimarySuffix(final Expression prefix) throws ParseException { - final AbstractSuffixExpression suffix; - final Expression expr; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LPAREN: - suffix = Arguments(prefix); - {if (true) return suffix;} - break; - case CLASSACCESS: - case LBRACKET: - suffix = VariableSuffix(prefix); - {if (true) return suffix;} - break; - case STATICCLASSACCESS: - jj_consume_token(STATICCLASSACCESS); - expr = ClassIdentifier(); - suffix = new ClassAccess(prefix, - expr, - ClassAccess.STATIC); - {if (true) return suffix;} - break; - default: - jj_la1[61] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - -/** - * An array declarator. - * array(vars) - * @return an array - */ - static final public ArrayInitializer ArrayDeclarator() throws ParseException { - final ArrayVariableDeclaration[] vars; - final int pos = SimpleCharStream.getPosition(); - jj_consume_token(ARRAY); - vars = ArrayInitializer(); - {if (true) return new ArrayInitializer(vars,pos,SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - - static final public PrefixedUnaryExpression classInstantiation() throws ParseException { - Expression expr; - final StringBuffer buff; - final int pos = SimpleCharStream.getPosition(); - jj_consume_token(NEW); - expr = ClassIdentifier(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAY: - case NEW: - case DOLLAR: - case IDENTIFIER: - case DOLLAR_ID: - buff = new StringBuffer(expr.toStringExpression()); - expr = PrimaryExpression(); - buff.append(expr.toStringExpression()); - expr = new ConstantIdentifier(buff.toString().toCharArray(), - pos, - SimpleCharStream.getPosition()); - break; - default: - jj_la1[62] = jj_gen; - ; - } - {if (true) return new PrefixedUnaryExpression(expr, - OperatorIds.NEW, - pos);} - throw new Error("Missing return statement in function"); - } - - static final public ConstantIdentifier ClassIdentifier() throws ParseException { - final String expr; - final Token token; - final int pos = SimpleCharStream.getPosition(); - final ConstantIdentifier type; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IDENTIFIER: - token = jj_consume_token(IDENTIFIER); - {if (true) return new ConstantIdentifier(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition());} - break; - case STRING: - case OBJECT: - case BOOL: - case BOOLEAN: - case REAL: - case DOUBLE: - case FLOAT: - case INT: - case INTEGER: - type = Type(); - {if (true) return type;} - break; - case DOLLAR: - case DOLLAR_ID: - expr = VariableDeclaratorId(); - {if (true) return new ConstantIdentifier(expr.toCharArray(), - pos, - SimpleCharStream.getPosition());} - break; - default: - jj_la1[63] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public AbstractSuffixExpression VariableSuffix(final 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); - try { - expr = VariableName(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return new ClassAccess(prefix, - new ConstantIdentifier(expr.toCharArray(),pos,SimpleCharStream.getPosition()), - ClassAccess.NORMAL);} - break; - case LBRACKET: - jj_consume_token(LBRACKET); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case ARRAY: - case LIST: - case PRINT: - case NEW: - case NULL: - case TRUE: - case FALSE: - case STRING: - case OBJECT: - case BOOL: - case BOOLEAN: - case REAL: - case DOUBLE: - case FLOAT: - case INT: - case INTEGER: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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: - case LIST: - case PRINT: - case NEW: - case NULL: - case TRUE: - case FALSE: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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; - case STRING: - case OBJECT: - case BOOL: - case BOOLEAN: - case REAL: - case DOUBLE: - case FLOAT: - case INT: - case INTEGER: - expression = Type(); - break; - default: - jj_la1[64] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - break; - default: - jj_la1[65] = jj_gen; - ; - } - try { - jj_consume_token(RBRACKET); - } catch (ParseException e) { - errorMessage = "']' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return new ArrayDeclarator(prefix,expression,SimpleCharStream.getPosition());} - break; - default: - jj_la1[66] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - 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); - 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); - 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); - pos = SimpleCharStream.getPosition(); - {if (true) return new StringLiteral(token.image.toCharArray(),pos-token.image.length());} - break; - case TRUE: - jj_consume_token(TRUE); - pos = SimpleCharStream.getPosition(); - {if (true) return new TrueLiteral(pos-4,pos);} - break; - case FALSE: - jj_consume_token(FALSE); - pos = SimpleCharStream.getPosition(); - {if (true) return new FalseLiteral(pos-4,pos);} - break; - case NULL: - jj_consume_token(NULL); - pos = SimpleCharStream.getPosition(); - {if (true) return new NullLiteral(pos-4,pos);} - break; - default: - jj_la1[67] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - throw new Error("Missing return statement in function"); - } - - static final public FunctionCall Arguments(final Expression func) throws ParseException { -Expression[] args = null; - jj_consume_token(LPAREN); - 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 PLUS_PLUS: - case MINUS_MINUS: - case PLUS: - case MINUS: - case BIT_AND: - case INTEGER_LITERAL: - case FLOATING_POINT_LITERAL: - case STRING_LITERAL: - case IDENTIFIER: - case LPAREN: - case DOLLAR_ID: - args = ArgumentList(); - break; - default: - jj_la1[68] = jj_gen; - ; - } - try { - jj_consume_token(RPAREN); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return new FunctionCall(func,args,SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - -/** - * An argument list is a list of arguments separated by comma : - * argumentDeclaration() (, argumentDeclaration)* - * @return an array of arguments - */ - static final public Expression[] ArgumentList() throws ParseException { -Expression arg; -final ArrayList list = new ArrayList(); - arg = Expression(); - list.add(arg); - label_20: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case COMMA: - ; - break; - default: - jj_la1[69] = jj_gen; - break label_20; - } - jj_consume_token(COMMA); - try { - arg = Expression(); - list.add(arg); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. An expression expected after a comma in argument list"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - } - final Expression[] arguments = new Expression[list.size()]; - list.toArray(arguments); - {if (true) return arguments;} - throw new Error("Missing return statement in function"); - } - -/** - * A Statement without break. - */ - static final public Statement StatementNoBreak() throws ParseException { - final Statement statement; - Token token = null; - if (jj_2_5(2)) { - statement = Expression(); - try { - jj_consume_token(SEMICOLON); - } catch (ParseException e) { - if (e.currentToken.next.kind != PHPParserConstants.PHPEND) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - } - {if (true) return statement;} - } else if (jj_2_6(2)) { - statement = LabeledStatement(); - {if (true) return statement;} - } else { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case LBRACE: - statement = Block(); - {if (true) return statement;} - break; - case SEMICOLON: - statement = EmptyStatement(); - {if (true) return statement;} - break; - case ARRAY: - case NEW: - case DOLLAR: - case PLUS_PLUS: - case MINUS_MINUS: - case IDENTIFIER: - case DOLLAR_ID: - statement = StatementExpression(); - try { - jj_consume_token(SEMICOLON); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"'. A ';' was expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - {if (true) return statement;} - break; - case SWITCH: - statement = SwitchStatement(); - {if (true) return statement;} - break; - case IF: - statement = IfStatement(); - {if (true) return statement;} - break; - case WHILE: - statement = WhileStatement(); - {if (true) return statement;} - break; - case DO: - statement = DoStatement(); - {if (true) return statement;} - break; - case FOR: - statement = ForStatement(); - {if (true) return statement;} - break; - case FOREACH: - statement = ForeachStatement(); - {if (true) return statement;} - break; - case CONTINUE: - statement = ContinueStatement(); - {if (true) return statement;} - break; - case RETURN: - statement = ReturnStatement(); - {if (true) return statement;} - break; - case ECHO: - statement = EchoStatement(); - {if (true) return statement;} - break; - case INCLUDE: - case REQUIRE: - case INCLUDE_ONCE: - case REQUIRE_ONCE: - case AT: - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case AT: - token = jj_consume_token(AT); - break; - default: - jj_la1[70] = jj_gen; - ; - } - statement = IncludeStatement(); - if (token != null) { - ((InclusionStatement)statement).silent = true; - } - {if (true) return statement;} - break; - case STATIC: - statement = StaticStatement(); - {if (true) return statement;} - break; - case GLOBAL: - statement = GlobalStatement(); - {if (true) return statement;} - break; - case DEFINE: - statement = defineStatement(); - currentSegment.add((Outlineable)statement);{if (true) return statement;} - break; - default: - jj_la1[71] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } - throw new Error("Missing return statement in function"); - } - - static final public Define defineStatement() throws ParseException { - final int start = SimpleCharStream.getPosition(); - Expression defineName,defineValue; - jj_consume_token(DEFINE); - try { - jj_consume_token(LPAREN); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - try { - defineName = Expression(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - try { - jj_consume_token(COMMA); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - try { - defineValue = Expression(); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - {if (true) throw e;} - } - try { - jj_consume_token(RPAREN); - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected"; - errorLevel = ERROR; - errorStart = SimpleCharStream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = SimpleCharStream.getPosition() + 1; - processParseException(e); - } - {if (true) return new Define(currentSegment, - defineName, - defineValue, - start, - SimpleCharStream.getPosition());} - throw new Error("Missing return statement in function"); - } - -/** - * A Normal statement. - */ - static final public Statement Statement() throws ParseException { - final Statement statement; - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case IF: - case ARRAY: - case LIST: - case PRINT: - case ECHO: - case INCLUDE: - case REQUIRE: - case INCLUDE_ONCE: - case REQUIRE_ONCE: - case GLOBAL: - case DEFINE: - case STATIC: - case CONTINUE: - case DO: - case FOR: - case NEW: - case NULL: - case RETURN: - case SWITCH: - case TRUE: - case FALSE: - case WHILE: - case FOREACH: - case AT: - case DOLLAR: - case BANG: - case PLUS_PLUS: - case MINUS_MINUS: - 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 = StatementNoBreak(); - {if (true) return statement;} - break; - case BREAK: - statement = BreakStatement(); - {if (true) return statement;} - break; - default: - jj_la1[72] = 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 HTMLBlock htmlBlock() throws ParseException { - final int startIndex = nodePtr; - final AstNode[] blockNodes; - final int nbNodes; - jj_consume_token(PHPEND); - label_21: - while (true) { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PHPECHOSTART: - ; - break; - default: - jj_la1[73] = jj_gen; - break label_21; - } - phpEchoBlock(); - } - try { - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case PHPSTARTLONG: - jj_consume_token(PHPSTARTLONG); - break; - case PHPSTARTSHORT: - jj_consume_token(PHPSTARTSHORT); - break; - default: - jj_la1[74] = jj_gen; - jj_consume_token(-1); - throw new ParseException(); - } - } catch (ParseException e) { - errorMessage = "unexpected end of file , ' 100) { - jj_gc = 0; - for (int i = 0; i < jj_2_rtns.length; i++) { - JJCalls c = jj_2_rtns[i]; - while (c != null) { - if (c.gen < jj_gen) c.first = null; - c = c.next; - } - } - } - return token; - } - token = oldToken; - jj_kind = kind; - throw generateParseException(); - } - - static final private boolean jj_scan_token(int kind) { - if (jj_scanpos == jj_lastpos) { - jj_la--; - if (jj_scanpos.next == null) { - jj_lastpos = jj_scanpos = jj_scanpos.next = token_source.getNextToken(); - } else { - jj_lastpos = jj_scanpos = jj_scanpos.next; - } - } else { - jj_scanpos = jj_scanpos.next; - } - if (jj_rescan) { - int i = 0; Token tok = token; - while (tok != null && tok != jj_scanpos) { i++; tok = tok.next; } - if (tok != null) jj_add_error_token(kind, i); - } - return (jj_scanpos.kind != kind); - } - - static final public Token getNextToken() { - if (token.next != null) token = token.next; - else token = token.next = token_source.getNextToken(); - jj_ntk = -1; - jj_gen++; - return token; - } - - static final public Token getToken(int index) { - Token t = lookingAhead ? jj_scanpos : token; - for (int i = 0; i < index; i++) { - if (t.next != null) t = t.next; - else t = t.next = token_source.getNextToken(); - } - return t; - } - - static final private int jj_ntk() { - if ((jj_nt=token.next) == null) - return (jj_ntk = (token.next=token_source.getNextToken()).kind); - else - return (jj_ntk = jj_nt.kind); - } - - static private java.util.Vector jj_expentries = new java.util.Vector(); - static private int[] jj_expentry; - static private int jj_kind = -1; - static private int[] jj_lasttokens = new int[100]; - static private int jj_endpos; - - static private void jj_add_error_token(int kind, int pos) { - if (pos >= 100) return; - if (pos == jj_endpos + 1) { - jj_lasttokens[jj_endpos++] = kind; - } else if (jj_endpos != 0) { - jj_expentry = new int[jj_endpos]; - for (int i = 0; i < jj_endpos; i++) { - jj_expentry[i] = jj_lasttokens[i]; - } - boolean exists = false; - for (java.util.Enumeration enum = jj_expentries.elements(); enum.hasMoreElements();) { - int[] oldentry = (int[])(enum.nextElement()); - if (oldentry.length == jj_expentry.length) { - exists = true; - for (int i = 0; i < jj_expentry.length; i++) { - if (oldentry[i] != jj_expentry[i]) { - exists = false; - break; - } - } - if (exists) break; - } - } - if (!exists) jj_expentries.addElement(jj_expentry); - if (pos != 0) jj_lasttokens[(jj_endpos = pos) - 1] = kind; - } - } - - static public ParseException generateParseException() { - jj_expentries.removeAllElements(); - boolean[] la1tokens = new boolean[143]; - for (int i = 0; i < 143; i++) { - la1tokens[i] = false; - } - if (jj_kind >= 0) { - la1tokens[jj_kind] = true; - jj_kind = -1; - } - 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< jj_gen) { - jj_la = p.arg; jj_lastpos = jj_scanpos = p.first; - switch (i) { - case 0: jj_3_1(); break; - case 1: jj_3_2(); break; - case 2: jj_3_3(); break; - case 3: jj_3_4(); break; - case 4: jj_3_5(); break; - case 5: jj_3_6(); break; - case 6: jj_3_7(); break; - } - } - p = p.next; - } while (p != null); - } - jj_rescan = false; - } - - static final private void jj_save(int index, int xla) { - JJCalls p = jj_2_rtns[index]; - while (p.gen > jj_gen) { - if (p.next == null) { p = p.next = new JJCalls(); break; } - p = p.next; - } - p.gen = jj_gen + xla - jj_la; p.first = token; p.arg = xla; - } - - static final class JJCalls { - int gen; - Token first; - int arg; - JJCalls next; - } - -}