X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/test/PHPParser.jj b/net.sourceforge.phpeclipse/src/test/PHPParser.jj deleted file mode 100644 index bb3d533..0000000 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.jj +++ /dev/null @@ -1,2442 +0,0 @@ -options { - LOOKAHEAD = 1; - CHOICE_AMBIGUITY_CHECK = 2; - OTHER_AMBIGUITY_CHECK = 1; - STATIC = true; - DEBUG_PARSER = false; - DEBUG_LOOKAHEAD = false; - DEBUG_TOKEN_MANAGER = false; - OPTIMIZE_TOKEN_MANAGER = false; - ERROR_REPORTING = true; - JAVA_UNICODE_ESCAPE = false; - UNICODE_INPUT = false; - IGNORE_CASE = true; - USER_TOKEN_MANAGER = false; - USER_CHAR_STREAM = false; - BUILD_PARSER = true; - BUILD_TOKEN_MANAGER = true; - SANITY_CHECK = true; - FORCE_LA_CHECK = false; -} - -PARSER_BEGIN(PHPParser) -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.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.PHPOutlineInfo; -import net.sourceforge.phpdt.internal.compiler.parser.PHPSegmentWithChildren; -import net.sourceforge.phpdt.internal.compiler.parser.PHPFunctionDeclaration; -import net.sourceforge.phpdt.internal.compiler.parser.PHPClassDeclaration; -import net.sourceforge.phpdt.internal.compiler.parser.PHPVarDeclaration; -import net.sourceforge.phpdt.internal.compiler.parser.PHPReqIncDeclaration; - -/** - * 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 - */ -public final class PHPParser extends PHPParserSuperclass { - - /** The file that is parsed. */ - private static IFile fileToParse; - - /** The current segment */ - private static PHPSegmentWithChildren currentSegment; - - private static final String PARSE_ERROR_STRING = "Parse error"; //$NON-NLS-1$ - private static final String PARSE_WARNING_STRING = "Warning"; //$NON-NLS-1$ - 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; - - public PHPParser() { - } - - public final void setFileToParse(final IFile fileToParse) { - this.fileToParse = fileToParse; - } - - public PHPParser(final IFile fileToParse) { - this(new StringReader("")); - this.fileToParse = fileToParse; - } - - public static final void phpParserTester(final String strEval) throws CoreException, ParseException { - PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING); - final StringReader stream = new StringReader(strEval); - if (jj_input_stream == null) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - } - ReInit(new StringReader(strEval)); - phpTest(); - } - - public static final void htmlParserTester(final File fileName) throws CoreException, ParseException { - try { - final Reader stream = new FileReader(fileName); - if (jj_input_stream == null) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - } - ReInit(stream); - phpFile(); - } catch (FileNotFoundException e) { - e.printStackTrace(); //To change body of catch statement use Options | File Templates. - } catch (ParseException e) { - e.printStackTrace(); //To change body of catch statement use Options | File Templates. - } - } - - public static final void htmlParserTester(final String strEval) throws CoreException, ParseException { - final StringReader stream = new StringReader(strEval); - if (jj_input_stream == null) { - jj_input_stream = new SimpleCharStream(stream, 1, 1); - } - ReInit(stream); - phpFile(); - } - - public final PHPOutlineInfo parseInfo(final Object parent, final String s) { - 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); - try { - parse(); - } 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 = jj_input_stream.getPosition(); - errorEnd = errorStart + 1; - } - setMarker(e); - errorMessage = null; - } - - /** - * Create marker for the parse error - * @param e the ParseException - */ - private static void setMarker(final ParseException e) { - try { - if (errorStart == -1) { - setMarker(fileToParse, - errorMessage, - jj_input_stream.tokenBegin, - jj_input_stream.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); - } - } - - /** - * Create markers according to the external parser output - */ - private static void createMarkers(final String output, final IFile file) throws CoreException { - // delete all markers - file.deleteMarkers(IMarker.PROBLEM, false, 0); - - int indx = 0; - int brIndx; - boolean flag = true; - while ((brIndx = output.indexOf("
", indx)) != -1) { - // newer php error output (tested with 4.2.3) - scanLine(output, file, indx, brIndx); - indx = brIndx + 6; - flag = false; - } - if (flag) { - while ((brIndx = output.indexOf("
", indx)) != -1) { - // older php error output (tested with 4.2.3) - scanLine(output, file, indx, brIndx); - indx = brIndx + 4; - } - } - } - - private static void scanLine(final String output, - final IFile file, - final int indx, - final int brIndx) throws CoreException { - String current; - 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) { - 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); - } - } - - int lineNumber = Integer.parseInt(lineNumberBuffer.toString()); - - 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); - 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); - } - } - - public static final void parse() throws ParseException { - phpFile(); - } -} - -PARSER_END(PHPParser) - - TOKEN : -{ - : PHPPARSING -| : PHPPARSING -| "> : DEFAULT -} - - SKIP : -{ - < ~[] > -} - - -/* WHITE SPACE */ - - SKIP : -{ - " " -| "\t" -| "\n" -| "\r" -| "\f" -} - -/* COMMENTS */ - - SPECIAL_TOKEN : -{ - "//" : IN_SINGLE_LINE_COMMENT -| - "#" : IN_SINGLE_LINE_COMMENT -| - <"/**" ~["/"]> { input_stream.backup(1); } : IN_FORMAL_COMMENT -| - "/*" : IN_MULTI_LINE_COMMENT -} - - SPECIAL_TOKEN : -{ - : PHPPARSING -} - - SPECIAL_TOKEN : -{ - " > : DEFAULT -} - - -SPECIAL_TOKEN : -{ - : PHPPARSING -} - - -SPECIAL_TOKEN : -{ - : PHPPARSING -} - - -MORE : -{ - < ~[] > -} - -/* KEYWORDS */ - TOKEN : -{ - -| -| -| -| -| -| -| -} - -/* LANGUAGE CONSTRUCT */ - TOKEN : -{ - -| -| -| -| -| -| -| -| "> -| -| "> -} - - TOKEN : -{ - -} -/* RESERVED WORDS AND LITERALS */ - - TOKEN : -{ - -| -| -| <_DEFAULT : "default"> -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -} - -/* TYPES */ - - TOKEN : -{ - -| -| -| -| -| -| -| -| -} - - TOKEN : -{ - <_ORL : "OR"> -| <_ANDL : "AND"> -} - -/* LITERALS */ - - TOKEN : -{ - < INTEGER_LITERAL: - (["l","L"])? - | (["l","L"])? - | (["l","L"])? - > -| - < #DECIMAL_LITERAL: ["1"-"9"] (["0"-"9"])* > -| - < #HEX_LITERAL: "0" ["x","X"] (["0"-"9","a"-"f","A"-"F"])+ > -| - < #OCTAL_LITERAL: "0" (["0"-"7"])* > -| - < FLOATING_POINT_LITERAL: - (["0"-"9"])+ "." (["0"-"9"])* ()? (["f","F","d","D"])? - | "." (["0"-"9"])+ ()? (["f","F","d","D"])? - | (["0"-"9"])+ (["f","F","d","D"])? - | (["0"-"9"])+ ()? ["f","F","d","D"] - > -| - < #EXPONENT: ["e","E"] (["+","-"])? (["0"-"9"])+ > -| - < STRING_LITERAL: ( | | )> -| < STRING_1: - "\"" - ( - ~["\""] - | - "\\\"" - )* - "\"" - > -| < STRING_2: - "'" - ( - ~["'"] - | - "\\'" - )* - - "'" - > -| < STRING_3: - "`" - ( - ~["`"] - | - "\\`" - )* - "`" - > -} - -/* IDENTIFIERS */ - - TOKEN : -{ - < IDENTIFIER: (|) (||)* > -| - < #LETTER: - ["a"-"z"] | ["A"-"Z"] - > -| - < #DIGIT: - ["0"-"9"] - > -| - < #SPECIAL: - "_" | ["\u007f"-"\u00ff"] - > -} - -/* SEPARATORS */ - - TOKEN : -{ - -| -| -| -| -| -| -| -| -} - - -/* COMPARATOR */ - TOKEN : -{ - "> -| -| -| ="> -| "> -| -| -} - -/* ASSIGNATION */ - TOKEN : -{ - -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| -| >"> -| >>"> -| >="> -} - - TOKEN : -{ - < DOLLAR_ID: > -} - -void phpTest() : -{} -{ - Php() - -} - -void phpFile() : -{} -{ - try { - (PhpBlock())* - - } catch (TokenMgrError e) { - errorMessage = e.getMessage(); - errorLevel = ERROR; - throw generateParseException(); - } -} - -void PhpBlock() : -{ - final int start = jj_input_stream.getPosition(); -} -{ - Expression() [ ] -| - [ - | - {try { - setMarker(fileToParse, - "You should use ' - } catch (ParseException e) { - errorMessage = "'?>' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void Php() : -{} -{ - (BlockStatement())* -} - -void ClassDeclaration() : -{ - final PHPClassDeclaration classDeclaration; - final Token className; - final int pos; -} -{ - - try { - {pos = jj_input_stream.getPosition();} - className = - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ - - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', identifier expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ] - { - if (currentSegment != null) { - classDeclaration = new PHPClassDeclaration(currentSegment,className.image,pos); - currentSegment.add(classDeclaration); - currentSegment = classDeclaration; - } - } - ClassBody() - { - if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); - } - } -} - -void ClassBody() : -{} -{ - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image + "', '{' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ( ClassBodyDeclaration() )* - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', 'var', 'function' or '}' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void ClassBodyDeclaration() : -{} -{ - MethodDeclaration() -| - FieldDeclaration() -} - -void FieldDeclaration() : -{ - PHPVarDeclaration variableDeclaration; -} -{ - variableDeclaration = VariableDeclarator() - { - if (currentSegment != null) { - currentSegment.add(variableDeclaration); - } - } - ( - variableDeclaration = VariableDeclarator() - { - if (currentSegment != null) { - currentSegment.add(variableDeclaration); - } - } - )* - try { - - } catch (ParseException e) { - errorMessage = "';' expected after variable declaration"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -PHPVarDeclaration VariableDeclarator() : -{ - final String varName; - final String varValue; - final int pos = jj_input_stream.getPosition(); -} -{ - varName = VariableDeclaratorId() - [ - - try { - varValue = VariableInitializer() - {return new PHPVarDeclaration(currentSegment,varName,pos,varValue);} - } catch (ParseException e) { - errorMessage = "Literal expression expected in variable initializer"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ] - {return new PHPVarDeclaration(currentSegment,varName,pos);} -} - -String VariableDeclaratorId() : -{ - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - try { - expr = Variable() - {buff.append(expr);} - ( LOOKAHEAD(2) expr = VariableSuffix() - {buff.append(expr);} - )* - {return buff.toString();} - } catch (ParseException e) { - errorMessage = "'$' expected for variable identifier"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -String Variable(): -{ - String expr = null; - final Token token; -} -{ - token = [ expr = Expression() ] - { - if (expr == null) { - return token.image; - } - return token + "{" + expr + "}"; - } -| - expr = VariableName() - {return "$" + expr;} -} - -String VariableName(): -{ -String expr = null; -final Token token; -} -{ - expr = Expression() - {return "{"+expr+"}";} -| - token = [ expr = Expression() ] - { - if (expr == null) { - return token.image; - } - return token + "{" + expr + "}"; - } -| - expr = VariableName() - {return "$" + expr;} -| - token = - {return token.image + expr;} -/*| pas besoin ? - token = [expr = VariableName()] - { - if (expr == null) { - return token.image; - } - return token.image + expr; - }*/ -} - -String VariableInitializer() : -{ - final String expr; - final Token token; -} -{ - expr = Literal() - {return expr;} -| - (token = | token = ) - {return "-" + token.image;} -| - (token = | token = ) - {return "+" + token.image;} -| - expr = ArrayDeclarator() - {return expr;} -| - token = - {return token.image;} -} - -String ArrayVariable() : -{ -String expr; -final StringBuffer buff = new StringBuffer(); -} -{ - expr = Expression() - {buff.append(expr);} - [ expr = Expression() - {buff.append("=>").append(expr);}] - {return buff.toString();} -} - -String ArrayInitializer() : -{ -String expr; -final StringBuffer buff = new StringBuffer("("); -} -{ - [ expr = ArrayVariable() - {buff.append(expr);} - ( LOOKAHEAD(2) expr = ArrayVariable() - {buff.append(",").append(expr);} - )* ] - - { - buff.append(")"); - return buff.toString(); - } -} - -void MethodDeclaration() : -{ - final PHPFunctionDeclaration functionDeclaration; -} -{ - - try { - functionDeclaration = MethodDeclarator() - } catch (ParseException e) { - if (errorMessage != null) { - throw e; - } - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function identifier expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - { - if (currentSegment != null) { - currentSegment.add(functionDeclaration); - currentSegment = functionDeclaration; - } - } - Block() - { - if (currentSegment != null) { - currentSegment = (PHPSegmentWithChildren) currentSegment.getParent(); - } - } -} - -/** - * A MethodDeclarator contains [&] IDENTIFIER(parameters ...). - * @return a function description for the outline - */ -PHPFunctionDeclaration MethodDeclarator() : -{ - final Token identifier; - final StringBuffer methodDeclaration = new StringBuffer(); - final String formalParameters; - final int pos = jj_input_stream.getPosition(); -} -{ - [ {methodDeclaration.append("&");} ] - identifier = - {methodDeclaration.append(identifier);} - formalParameters = FormalParameters() - { - methodDeclaration.append(formalParameters); - return new PHPFunctionDeclaration(currentSegment,methodDeclaration.toString(),pos); - } -} - -String FormalParameters() : -{ - String expr; - final StringBuffer buff = new StringBuffer("("); -} -{ - try { - - } catch (ParseException e) { - errorMessage = "Formal parameter expected after function identifier"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ expr = FormalParameter() - {buff.append(expr);} - ( - expr = FormalParameter() - {buff.append(",").append(expr);} - )* - ] - try { - - } catch (ParseException e) { - errorMessage = "')' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - { - buff.append(")"); - return buff.toString(); - } -} - -String FormalParameter() : -{ - final PHPVarDeclaration variableDeclaration; - final StringBuffer buff = new StringBuffer(); -} -{ - [ {buff.append("&");}] variableDeclaration = VariableDeclarator() - { - buff.append(variableDeclaration.toString()); - return buff.toString(); - } -} - -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; -} -{ - expr = PrintExpression() - {return expr;} -| - expr = ListExpression() - {return expr;} -| - expr = ConditionalExpression() - [ - assignOperator = AssignmentOperator() - try { - expr2 = Expression() - {return expr + assignOperator + expr2;} - } catch (ParseException e) { - errorMessage = "expression expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ] - {return expr;} -} - -String AssignmentOperator() : -{} -{ - -{return "=";} -| -{return "*=";} -| -{return "/=";} -| -{return "%=";} -| -{return "+=";} -| -{return "-=";} -| -{return "<<=";} -| -{return ">>=";} -| -{return "&=";} -| -{return "|=";} -| -{return "|=";} -| -{return ".=";} -| -{return "~=";} -} - -String ConditionalExpression() : -{ - final String expr; - String expr2 = null; - String expr3 = null; -} -{ - expr = ConditionalOrExpression() [ expr2 = Expression() expr3 = ConditionalExpression() ] -{ - if (expr3 == null) { - return expr; - } else { - return expr + "?" + expr2 + ":" + expr3; - } -} -} - -String ConditionalOrExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = ConditionalAndExpression() - {buff.append(expr);} - ( - (operator = | operator = <_ORL>) expr = ConditionalAndExpression() - { - buff.append(operator.image); - buff.append(expr); - } - )* - { - return buff.toString(); - } -} - -String ConditionalAndExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = ConcatExpression() - {buff.append(expr);} - ( - (operator = | operator = <_ANDL>) expr = ConcatExpression() - { - buff.append(operator.image); - buff.append(expr); - } - )* - {return buff.toString();} -} - -String ConcatExpression() : -{ - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = InclusiveOrExpression() - {buff.append(expr);} - ( - expr = InclusiveOrExpression() - {buff.append(".").append(expr);} - )* - {return buff.toString();} -} - -String InclusiveOrExpression() : -{ - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = ExclusiveOrExpression() - {buff.append(expr);} - ( - expr = ExclusiveOrExpression() - {buff.append("|").append(expr);} - )* - {return buff.toString();} -} - -String ExclusiveOrExpression() : -{ - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = AndExpression() - { - buff.append(expr); - } - ( - expr = AndExpression() - { - buff.append("^"); - buff.append(expr); - } - )* - { - return buff.toString(); - } -} - -String AndExpression() : -{ - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = EqualityExpression() - { - buff.append(expr); - } - ( - expr = EqualityExpression() - { - buff.append("&").append(expr); - } - )* - {return buff.toString();} -} - -String EqualityExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = RelationalExpression() - {buff.append(expr);} - ( - ( operator = - | operator = - | operator = - | operator = - | operator = - ) - try { - expr = RelationalExpression() - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected after '"+operator.image+"'"; - 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); - } - )* - {return buff.toString();} -} - -String RelationalExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = ShiftExpression() - {buff.append(expr);} - ( - ( operator = | operator = | operator = | operator = ) expr = ShiftExpression() - {buff.append(operator.image).append(expr);} - )* - {return buff.toString();} -} - -String ShiftExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = AdditiveExpression() - {buff.append(expr);} - ( - (operator = | operator = | operator = ) expr = AdditiveExpression() - { - buff.append(operator.image); - buff.append(expr); - } - )* - {return buff.toString();} -} - -String AdditiveExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer(); -} -{ - expr = MultiplicativeExpression() - {buff.append(expr);} - ( - ( operator = | operator = ) expr = MultiplicativeExpression() - { - buff.append(operator.image); - buff.append(expr); - } - )* - {return buff.toString();} -} - -String MultiplicativeExpression() : -{ - String expr; - Token operator; - final StringBuffer buff = new StringBuffer();} -{ - try { - expr = UnaryExpression() - } catch (ParseException 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); - } - )* - {return buff.toString();} -} - -/** - * An unary expression starting with @, & or nothing - */ -String UnaryExpression() : -{ - final String expr; - final Token token; - final StringBuffer buff = new StringBuffer(); -} -{ - token = expr = UnaryExpressionNoPrefix() - { - if (token == null) { - return expr; - } - return token.image + expr; - } -| - ( {buff.append("@");})* expr = UnaryExpressionNoPrefix() - {return buff.append(expr).toString();} -} - -String UnaryExpressionNoPrefix() : -{ - final String expr; - final Token token; -} -{ - ( token = | token = ) expr = UnaryExpression() - { - return token.image + expr; - } -| - expr = PreIncrementExpression() - {return expr;} -| - expr = PreDecrementExpression() - {return expr;} -| - expr = UnaryExpressionNotPlusMinus() - {return expr;} -} - - -String PreIncrementExpression() : -{ -final String expr; -} -{ - expr = PrimaryExpression() - {return "++"+expr;} -} - -String PreDecrementExpression() : -{ -final String expr; -} -{ - expr = PrimaryExpression() - {return "--"+expr;} -} - -String UnaryExpressionNotPlusMinus() : -{ - final String expr; -} -{ - expr = UnaryExpression() - {return "!" + expr;} -| - LOOKAHEAD( Type() ) - expr = CastExpression() - {return expr;} -| - expr = PostfixExpression() - {return expr;} -| - expr = Literal() - {return expr;} -| - expr = Expression() - try { - - } catch (ParseException e) { - errorMessage = "')' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - {return "("+expr+")";} -} - -String CastExpression() : -{ -final String type, expr; -} -{ - type = Type() expr = UnaryExpression() - {return "(" + type + ")" + expr;} -} - -String PostfixExpression() : -{ - final String expr; - Token operator = null; -} -{ - expr = PrimaryExpression() [ operator = | operator = ] - { - if (operator == null) { - return expr; - } - return expr + operator.image; - } -} - -String PrimaryExpression() : -{ - final Token identifier; - String expr; - final StringBuffer buff = new StringBuffer(); -} -{ - LOOKAHEAD(2) - identifier = expr = ClassIdentifier() - {buff.append(identifier.image).append("::").append(expr);} - ( - expr = PrimarySuffix() - {buff.append(expr);} - )* - {return buff.toString();} -| - expr = PrimaryPrefix() {buff.append(expr);} - ( expr = PrimarySuffix() {buff.append(expr);} )* - {return buff.toString();} -| - expr = ArrayDeclarator() - {return "array" + expr;} -} - -String ArrayDeclarator() : -{ - final String expr; -} -{ - expr = ArrayInitializer() - {return "array" + expr;} -} - -String PrimaryPrefix() : -{ - final String expr; - final Token token; -} -{ - token = - {return token.image;} -| - expr = ClassIdentifier() - { - return "new " + expr; - } -| - expr = VariableDeclaratorId() - {return expr;} -} - -String classInstantiation() : -{ - String expr; - final StringBuffer buff = new StringBuffer("new "); -} -{ - expr = ClassIdentifier() - {buff.append(expr);} - [ - expr = PrimaryExpression() - {buff.append(expr);} - ] - {return buff.toString();} -} - -String ClassIdentifier(): -{ - final String expr; - final Token token; -} -{ - token = - {return token.image;} -| - expr = VariableDeclaratorId() - {return expr;} -} - -String PrimarySuffix() : -{ - final String expr; -} -{ - expr = Arguments() - {return expr;} -| - expr = VariableSuffix() - {return expr;} -} - -String VariableSuffix() : -{ - String expr = null; -} -{ - - try { - expr = VariableName() - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', function call or field access expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - {return "->" + expr;} -| - [ expr = Expression() ] - try { - - } catch (ParseException e) { - errorMessage = "']' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - { - if(expr == null) { - return "[]"; - } - return "[" + expr + "]"; - } -} - -String Literal() : -{ - final String expr; - final Token token; -} -{ - token = - {return token.image;} -| - token = - {return token.image;} -| - token = - {return token.image;} -| - expr = BooleanLiteral() - {return expr;} -| - expr = NullLiteral() - {return expr;} -} - -String BooleanLiteral() : -{} -{ - - {return "true";} -| - - {return "false";} -} - -String NullLiteral() : -{} -{ - - {return "null";} -} - -String Arguments() : -{ -String expr = null; -} -{ - [ expr = ArgumentList() ] - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected to close the argument list"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - { - if (expr == null) { - return "()"; - } - return "(" + expr + ")"; - } -} - -String ArgumentList() : -{ -String expr; -final StringBuffer buff = new StringBuffer(); -} -{ - expr = Expression() - {buff.append(expr);} - ( - try { - expr = Expression() - } catch (ParseException e) { - errorMessage = "expression expected after a comma in argument list"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - { - buff.append(",").append(expr); - } - )* - {return buff.toString();} -} - -/** - * A Statement without break - */ -void StatementNoBreak() : -{} -{ - LOOKAHEAD(2) - Expression() - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - LOOKAHEAD(2) - LabeledStatement() -| - Block() -| - EmptyStatement() -| - StatementExpression() - try { - - } catch (ParseException e) { - errorMessage = "';' expected after expression"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - SwitchStatement() -| - IfStatement() -| - WhileStatement() -| - DoStatement() -| - ForStatement() -| - ForeachStatement() -| - ContinueStatement() -| - ReturnStatement() -| - EchoStatement() -| - [] IncludeStatement() -| - StaticStatement() -| - GlobalStatement() -} - -/** - * A Normal statement - */ -void Statement() : -{} -{ - StatementNoBreak() -| - BreakStatement() -} - -void IncludeStatement() : -{ - final String expr; - final int pos = jj_input_stream.getPosition(); -} -{ - - expr = Expression() - { - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, "require",pos,expr)); - } - } - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - - expr = Expression() - { - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, "require_once",pos,expr)); - } - } - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - - expr = Expression() - { - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, "include",pos,expr)); - } - } - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - - expr = Expression() - { - if (currentSegment != null) { - currentSegment.add(new PHPReqIncDeclaration(currentSegment, "include_once",pos,expr)); - } - } - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -String PrintExpression() : -{ - final StringBuffer buff = new StringBuffer("print "); - final String expr; -} -{ - expr = Expression() - { - buff.append(expr); - return buff.toString(); - } -} - -String ListExpression() : -{ - final StringBuffer buff = new StringBuffer("list("); - String expr; -} -{ - - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', '(' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ - expr = VariableDeclaratorId() - {buff.append(expr);} - ] - [ - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ',' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - expr = VariableDeclaratorId() - {buff.append(",").append(expr);} - ] - {buff.append(")");} - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', ')' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ expr = Expression() {buff.append("(").append(expr);}] - {return buff.toString();} -} - -void EchoStatement() : -{} -{ - Expression() ( Expression())* - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected after 'echo' statement"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void GlobalStatement() : -{} -{ - VariableDeclaratorId() ( VariableDeclaratorId())* - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void StaticStatement() : -{} -{ - VariableDeclarator() ( VariableDeclarator())* - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void LabeledStatement() : -{} -{ - Statement() -} - -void Block() : -{} -{ - try { - - } catch (ParseException e) { - errorMessage = "'{' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ( BlockStatement() )* - try { - - } catch (ParseException e) { - errorMessage = "unexpected token : '"+ e.currentToken.image +"', '}' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void BlockStatement() : -{} -{ - Statement() -| - ClassDeclaration() -| - MethodDeclaration() -} - -/** - * A Block statement that will not contain any 'break' - */ -void BlockStatementNoBreak() : -{} -{ - StatementNoBreak() -| - ClassDeclaration() -| - MethodDeclaration() -} - -void LocalVariableDeclaration() : -{} -{ - LocalVariableDeclarator() ( LocalVariableDeclarator() )* -} - -void LocalVariableDeclarator() : -{} -{ - VariableDeclaratorId() [ Expression() ] -} - -void EmptyStatement() : -{} -{ - -} - -void StatementExpression() : -{} -{ - PreIncrementExpression() -| - PreDecrementExpression() -| - PrimaryExpression() - [ - - | - - | - AssignmentOperator() Expression() - ] -} - -void SwitchStatement() : -{ - Token breakToken = null; - int line; -} -{ - - try { - - } catch (ParseException e) { - errorMessage = "'(' expected after 'switch'"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - Expression() - try { - - } catch (ParseException e) { - errorMessage = "')' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - - } catch (ParseException e) { - errorMessage = "'{' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ( - line = SwitchLabel() - ( BlockStatementNoBreak() )* - [ 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); - } - } - )* - try { - - } catch (ParseException e) { - errorMessage = "'}' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -Token BreakStatement() : -{ - final Token token; -} -{ - 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; - } - {return token;} -} - -int SwitchLabel() : -{ - final Token token; -} -{ - token = - try { - Expression() - } catch (ParseException e) { - if (errorMessage != null) throw e; - errorMessage = "expression expected after 'case' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - - } catch (ParseException e) { - errorMessage = "':' expected after case expression"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - {return token.beginLine;} -| - token = <_DEFAULT> - try { - - } catch (ParseException e) { - errorMessage = "':' expected after 'default' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - {return token.beginLine;} -} - -void IfStatement() : -{ - final Token token; - final int pos = jj_input_stream.getPosition(); -} -{ - token = Condition("if") IfStatement0(pos,pos+token.image.length()) -} - -void Condition(final String keyword) : -{} -{ - try { - - } catch (ParseException e) { - errorMessage = "'(' expected after " + keyword + " keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length(); - errorEnd = errorStart +1; - processParseException(e); - } - Expression() - try { - - } catch (ParseException e) { - errorMessage = "')' expected after " + keyword + " keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void IfStatement0(final int start,final int end) : -{} -{ - (Statement())* (ElseIfStatementColon())* [ElseStatementColon()] - - {try { - setMarker(fileToParse, - "Ugly syntax detected, you should if () {...} instead of if (): ... endif;", - start, - end, - INFO, - "Line " + token.beginLine); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - }} - try { - - } catch (ParseException e) { - errorMessage = "'endif' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - - } catch (ParseException e) { - errorMessage = "';' expected after 'endif' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - Statement() ( LOOKAHEAD(1) ElseIfStatement() )* [ LOOKAHEAD(1) Statement() ] -} - -void ElseIfStatementColon() : -{} -{ - Condition("elseif") (Statement())* -} - -void ElseStatementColon() : -{} -{ - (Statement())* -} - -void ElseIfStatement() : -{} -{ - Condition("elseif") Statement() -} - -void WhileStatement() : -{ - final Token token; - final int pos = jj_input_stream.getPosition(); -} -{ - token = Condition("while") WhileStatement0(pos,pos + token.image.length()) -} - -void WhileStatement0(final int start, final int end) : -{} -{ - (Statement())* - {try { - setMarker(fileToParse, - "Ugly syntax detected, you should while () {...} instead of while (): ... endwhile;", - start, - end, - INFO, - "Line " + token.beginLine); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - }} - try { - - } catch (ParseException e) { - errorMessage = "'endwhile' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected after 'endwhile' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -| - Statement() -} - -void DoStatement() : -{} -{ - Statement() Condition("while") - try { - ( | {PHPParserTokenManager.SwitchTo(PHPParserTokenManager.DEFAULT);}) - } catch (ParseException e) { - errorMessage = "';' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void ForeachStatement() : -{} -{ - - try { - - } catch (ParseException e) { - errorMessage = "'(' expected after 'foreach' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - Variable() - } catch (ParseException e) { - errorMessage = "variable expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ VariableSuffix() ] - try { - - } catch (ParseException e) { - errorMessage = "'as' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - Variable() - } catch (ParseException e) { - errorMessage = "variable expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ Expression() ] - try { - - } catch (ParseException e) { - errorMessage = "')' expected after 'foreach' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - Statement() - } catch (ParseException e) { - if (errorMessage != null) throw e; - errorMessage = "statement expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void ForStatement() : -{ -final Token token; -final int pos = jj_input_stream.getPosition(); -} -{ - token = - try { - - } catch (ParseException e) { - errorMessage = "'(' expected after 'for' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - [ ForInit() ] [ Expression() ] [ StatementExpressionList() ] - ( - Statement() - | - (Statement())* - { - try { - setMarker(fileToParse, - "Ugly syntax detected, you should for () {...} instead of for (): ... endfor;", - pos, - pos+token.image.length(), - INFO, - "Line " + token.beginLine); - } catch (CoreException e) { - PHPeclipsePlugin.log(e); - } - } - try { - - } catch (ParseException e) { - errorMessage = "'endfor' expected"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - try { - - } catch (ParseException e) { - errorMessage = "';' expected after 'endfor' keyword"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } - ) -} - -void ForInit() : -{} -{ - LOOKAHEAD(LocalVariableDeclaration()) - LocalVariableDeclaration() -| - StatementExpressionList() -} - -void StatementExpressionList() : -{} -{ - StatementExpression() ( StatementExpression() )* -} - -void ContinueStatement() : -{} -{ - [ ] - try { - - } catch (ParseException e) { - errorMessage = "';' expected after 'continue' statement"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} - -void ReturnStatement() : -{} -{ - [ Expression() ] - try { - - } catch (ParseException e) { - errorMessage = "';' expected after 'return' statement"; - errorLevel = ERROR; - errorStart = jj_input_stream.getPosition() - e.currentToken.next.image.length() + 1; - errorEnd = jj_input_stream.getPosition() + 1; - throw e; - } -} \ No newline at end of file