X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/test/PHPParser.jj b/net.sourceforge.phpeclipse/src/test/PHPParser.jj index e3b05cf..b0bb021 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.jj +++ b/net.sourceforge.phpeclipse/src/test/PHPParser.jj @@ -64,18 +64,18 @@ public final class PHPParser extends PHPParserSuperclass { public PHPParser() { } - public final void setFileToParse(IFile fileToParse) { + public final void setFileToParse(final IFile fileToParse) { this.fileToParse = fileToParse; } - public PHPParser(IFile fileToParse) { + public PHPParser(final IFile fileToParse) { this(new StringReader("")); this.fileToParse = fileToParse; } - public static final void phpParserTester(String strEval) throws CoreException, ParseException { + public static final void phpParserTester(final String strEval) throws CoreException, ParseException { PHPParserTokenManager.SwitchTo(PHPParserTokenManager.PHPPARSING); - StringReader stream = new StringReader(strEval); + final StringReader stream = new StringReader(strEval); if (jj_input_stream == null) { jj_input_stream = new SimpleCharStream(stream, 1, 1); } @@ -83,8 +83,8 @@ public final class PHPParser extends PHPParserSuperclass { phpTest(); } - public static final void htmlParserTester(String strEval) throws CoreException, ParseException { - StringReader stream = new StringReader(strEval); + 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); } @@ -92,10 +92,10 @@ public final class PHPParser extends PHPParserSuperclass { phpFile(); } - public final PHPOutlineInfo parseInfo(Object parent, String s) { + public final PHPOutlineInfo parseInfo(final Object parent, final String s) { outlineInfo = new PHPOutlineInfo(parent); currentSegment = outlineInfo.getDeclarations(); - StringReader stream = new StringReader(s); + final StringReader stream = new StringReader(s); if (jj_input_stream == null) { jj_input_stream = new SimpleCharStream(stream, 1, 1); } @@ -124,8 +124,9 @@ public final class PHPParser extends PHPParserSuperclass { /** * Create marker for the parse error + * @param e the ParseException */ - private static void setMarker(ParseException e) { + private static void setMarker(final ParseException e) { try { setMarker(fileToParse, errorMessage, @@ -141,12 +142,12 @@ public final class PHPParser extends PHPParserSuperclass { /** * Create markers according to the external parser output */ - private static void createMarkers(String output, IFile file) throws CoreException { + 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 = 0; + int brIndx; boolean flag = true; while ((brIndx = output.indexOf("
", indx)) != -1) { // newer php error output (tested with 4.2.3) @@ -163,7 +164,10 @@ public final class PHPParser extends PHPParserSuperclass { } } - private static void scanLine(String output, IFile file, int indx, int brIndx) throws CoreException { + 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; @@ -201,8 +205,8 @@ public final class PHPParser extends PHPParserSuperclass { } } - public final void parse(String s) throws CoreException { - StringReader stream = new StringReader(s); + 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); } @@ -218,15 +222,15 @@ public final class PHPParser extends PHPParserSuperclass { * Call the php parse command ( php -l -f <filename> ) * and create markers according to the external parser output */ - public static void phpExternalParse(IFile file) { - IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); - String filename = file.getLocation().toString(); + public static void phpExternalParse(final IFile file) { + final IPreferenceStore store = PHPeclipsePlugin.getDefault().getPreferenceStore(); + final String filename = file.getLocation().toString(); - String[] arguments = { filename }; - MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF)); - String command = form.format(arguments); + final String[] arguments = { filename }; + final MessageFormat form = new MessageFormat(store.getString(PHPeclipsePlugin.EXTERNAL_PARSER_PREF)); + final String command = form.format(arguments); - String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: "); + final String parserResult = PHPStartApacheAction.getParserOutput(command, "External parser: "); try { // parse the buffer to find the errors and warnings @@ -245,7 +249,9 @@ PARSER_END(PHPParser) TOKEN : { - : PHPPARSING + : PHPPARSING +| : PHPPARSING +| : PHPPARSING } - TOKEN : + SPECIAL_TOKEN : { " > : DEFAULT } @@ -319,72 +325,76 @@ MORE : | | | +| } /* LANGUAGE CONSTRUCT */ TOKEN : { - -| -| -| -| -| -| -| -| "> -| -| "> + +| +| +| +| +| +| +| +| "> +| +| "> } + TOKEN : +{ + +} /* RESERVED WORDS AND LITERALS */ TOKEN : { - < BREAK: "break" > -| < CASE: "case" > -| < CONST: "const" > -| < CONTINUE: "continue" > -| < _DEFAULT: "default" > -| < DO: "do" > -| < EXTENDS: "extends" > -| < FALSE: "false" > -| < FOR: "for" > -| < GOTO: "goto" > -| < NEW: "new" > -| < NULL: "null" > -| < RETURN: "return" > -| < SUPER: "super" > -| < SWITCH: "switch" > -| < THIS: "this" > -| < TRUE: "true" > -| < WHILE: "while" > -| < ENDWHILE : "endwhile" > -| -| -| -| + +| +| +| <_DEFAULT : "default"> +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| } /* TYPES */ TOKEN : { - -| -| + +| +| | -| -| -| -| +| +| +| +| | } TOKEN : { - < _ORL : "OR" > -| < _ANDL: "AND"> + <_ORL : "OR"> +| <_ANDL : "AND"> } /* LITERALS */ @@ -466,77 +476,79 @@ MORE : TOKEN : { - < LPAREN: "(" > -| < RPAREN: ")" > -| < LBRACE: "{" > -| < RBRACE: "}" > -| < LBRACKET: "[" > -| < RBRACKET: "]" > -| < SEMICOLON: ";" > -| < COMMA: "," > -| < DOT: "." > + +| +| +| +| +| +| +| +| } -/* OPERATORS */ +/* COMPARATOR */ TOKEN : { - -| -| " > -| -| -| -| -| -| =" > -| " > -| -| -| -| -| -| -| -| -| -| -| -| -| -| >" > -| >>" > -| -| >=" > -| -| -| "> +| +| +| ="> +| "> +| +| } +/* ASSIGNATION */ TOKEN : { - < DOLLAR_ID: > + +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| +| >"> +| >>"> +| >="> +} -/* - * Program structuring syntax follows. - */ + TOKEN : +{ + < DOLLAR_ID: > +} void phpTest() : {} @@ -549,7 +561,35 @@ void phpFile() : {} { try { - ( Php() + (PhpBlock())* + + } catch (TokenMgrError e) { + errorMessage = e.getMessage(); + errorLevel = ERROR; + throw generateParseException(); + } +} + +void PhpBlock() : +{ + final int start = jj_input_stream.bufpos; +} +{ + Expression() [ ] +| + [ + | + {try { + setMarker(fileToParse, + "You should use ' } catch (ParseException e) { @@ -557,13 +597,6 @@ void phpFile() : errorLevel = ERROR; throw e; } - )* - - } catch (TokenMgrError e) { - errorMessage = e.getMessage(); - errorLevel = ERROR; - throw generateParseException(); - } } void Php() : @@ -574,8 +607,8 @@ void Php() : void ClassDeclaration() : { - PHPClassDeclaration classDeclaration; - Token className; + final PHPClassDeclaration classDeclaration; + final Token className; final int pos = jj_input_stream.bufpos; } { @@ -653,7 +686,7 @@ void FieldDeclaration() : PHPVarDeclaration VariableDeclarator() : { - String varName; + final String varName; String varValue = null; final int pos = jj_input_stream.bufpos; } @@ -663,18 +696,14 @@ PHPVarDeclaration VariableDeclarator() : try { varValue = VariableInitializer() + {return new PHPVarDeclaration(currentSegment,varName,pos,varValue);} } catch (ParseException e) { errorMessage = "Literal expression expected in variable initializer"; errorLevel = ERROR; throw e; } ] - { - if (varValue == null) { - return new PHPVarDeclaration(currentSegment,varName,pos); - } - return new PHPVarDeclaration(currentSegment,varName,pos,varValue); - } + {return new PHPVarDeclaration(currentSegment,varName,pos);} } String VariableDeclaratorId() : @@ -700,7 +729,7 @@ String VariableDeclaratorId() : String Variable(): { String expr = null; - Token token; + final Token token; } { token = [ expr = Expression() ] @@ -718,7 +747,7 @@ String Variable(): String VariableName(): { String expr = null; -Token token; +final Token token; } { expr = Expression() @@ -746,8 +775,8 @@ Token token; String VariableInitializer() : { - String expr; - Token token; + final String expr; + final Token token; } { expr = Literal() @@ -781,7 +810,7 @@ final StringBuffer buff = new StringBuffer(); String ArrayInitializer() : { -String expr = null; +String expr; final StringBuffer buff = new StringBuffer("("); } { @@ -799,7 +828,7 @@ final StringBuffer buff = new StringBuffer("("); void MethodDeclaration() : { - PHPFunctionDeclaration functionDeclaration; + final PHPFunctionDeclaration functionDeclaration; } { functionDeclaration = MethodDeclarator() @@ -819,9 +848,9 @@ void MethodDeclaration() : PHPFunctionDeclaration MethodDeclarator() : { - Token identifier; - StringBuffer methodDeclaration = new StringBuffer(); - String formalParameters; + final Token identifier; + final StringBuffer methodDeclaration = new StringBuffer(); + final String formalParameters; final int pos = jj_input_stream.bufpos; } { @@ -870,7 +899,7 @@ String FormalParameters() : String FormalParameter() : { - PHPVarDeclaration variableDeclaration; + final PHPVarDeclaration variableDeclaration; final StringBuffer buff = new StringBuffer(); } { @@ -914,32 +943,30 @@ String Type() : String Expression() : { - String expr; - String assignOperator = null; - String expr2 = null; + 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; throw e; } ] - { - if (expr2 == null) { - return expr; - } else { - return expr + assignOperator + expr2; - } - } + {return expr;} } String AssignmentOperator() : @@ -975,7 +1002,7 @@ String AssignmentOperator() : String ConditionalExpression() : { - String expr; + final String expr; String expr2 = null; String expr3 = null; } @@ -994,19 +1021,16 @@ String ConditionalOrExpression() : { String expr; Token operator; - String expr2 = null; final StringBuffer buff = new StringBuffer(); } { expr = ConditionalAndExpression() - { - buff.append(expr); - } + {buff.append(expr);} ( - (operator = | operator = <_ORL>) expr2 = ConditionalAndExpression() + (operator = | operator = <_ORL>) expr = ConditionalAndExpression() { buff.append(operator.image); - buff.append(expr2); + buff.append(expr); } )* { @@ -1018,76 +1042,54 @@ String ConditionalAndExpression() : { String expr; Token operator; - String expr2 = null; final StringBuffer buff = new StringBuffer(); } { expr = ConcatExpression() - { - buff.append(expr); - } + {buff.append(expr);} ( - (operator = | operator = <_ANDL>) expr2 = ConcatExpression() + (operator = | operator = <_ANDL>) expr = ConcatExpression() { buff.append(operator.image); - buff.append(expr2); + buff.append(expr); } )* - { - return buff.toString(); - } + {return buff.toString();} } String ConcatExpression() : { String expr; - String expr2 = null; final StringBuffer buff = new StringBuffer(); } { expr = InclusiveOrExpression() - { - buff.append(expr); - } + {buff.append(expr);} ( - expr2 = InclusiveOrExpression() - { - buff.append("."); - buff.append(expr2); - } + expr = InclusiveOrExpression() + {buff.append(".").append(expr);} )* - { - return buff.toString(); - } + {return buff.toString();} } String InclusiveOrExpression() : { String expr; - String expr2 = null; final StringBuffer buff = new StringBuffer(); } { expr = ExclusiveOrExpression() - { - buff.append(expr); - } + {buff.append(expr);} ( - expr2 = ExclusiveOrExpression() - { - buff.append("|"); - buff.append(expr2); - } + expr = ExclusiveOrExpression() + {buff.append("|").append(expr);} )* - { - return buff.toString(); - } + {return buff.toString();} } String ExclusiveOrExpression() : { String expr; - String expr2 = null; final StringBuffer buff = new StringBuffer(); } { @@ -1096,10 +1098,10 @@ String ExclusiveOrExpression() : buff.append(expr); } ( - expr2 = AndExpression() + expr = AndExpression() { buff.append("^"); - buff.append(expr2); + buff.append(expr); } )* { @@ -1109,8 +1111,7 @@ String ExclusiveOrExpression() : String AndExpression() : { - final String expr; - String expr2 = null; + String expr; final StringBuffer buff = new StringBuffer(); } { @@ -1119,22 +1120,18 @@ String AndExpression() : buff.append(expr); } ( - expr2 = EqualityExpression() + expr = EqualityExpression() { - buff.append("&"); - buff.append(expr2); + buff.append("&").append(expr); } )* - { - return buff.toString(); - } + {return buff.toString();} } String EqualityExpression() : { String expr; Token operator; - String expr2; final StringBuffer buff = new StringBuffer(); } { @@ -1147,10 +1144,10 @@ String EqualityExpression() : | operator = | operator = ) - expr2 = RelationalExpression() + expr = RelationalExpression() { buff.append(operator.image); - buff.append(expr2); + buff.append(expr); } )* {return buff.toString();} @@ -1160,18 +1157,14 @@ String RelationalExpression() : { String expr; Token operator; - String expr2; final StringBuffer buff = new StringBuffer(); } { expr = ShiftExpression() {buff.append(expr);} ( - ( operator = | operator = | operator = | operator = ) expr2 = ShiftExpression() - { - buff.append(operator.image); - buff.append(expr2); - } + ( operator = | operator = | operator = | operator = ) expr = ShiftExpression() + {buff.append(operator.image).append(expr);} )* {return buff.toString();} } @@ -1237,8 +1230,8 @@ String MultiplicativeExpression() : */ String UnaryExpression() : { - String expr; - Token token; + final String expr; + final Token token; final StringBuffer buff = new StringBuffer(); } { @@ -1256,8 +1249,8 @@ String UnaryExpression() : String UnaryExpressionNoPrefix() : { - String expr; - Token token; + final String expr; + final Token token; } { ( token = | token = ) expr = UnaryExpression() @@ -1278,7 +1271,7 @@ String UnaryExpressionNoPrefix() : String PreIncrementExpression() : { -String expr; +final String expr; } { expr = PrimaryExpression() @@ -1287,7 +1280,7 @@ String expr; String PreDecrementExpression() : { -String expr; +final String expr; } { expr = PrimaryExpression() @@ -1296,7 +1289,7 @@ String expr; String UnaryExpressionNotPlusMinus() : { - String expr; + final String expr; } { expr = UnaryExpression() @@ -1327,7 +1320,7 @@ final String type, expr; String PostfixExpression() : { - String expr; + final String expr; Token operator = null; } { @@ -1342,7 +1335,7 @@ String PostfixExpression() : String PrimaryExpression() : { - Token identifier; + final Token identifier; String expr; final StringBuffer buff = new StringBuffer(); } @@ -1375,8 +1368,8 @@ String ArrayDeclarator() : String PrimaryPrefix() : { - String expr; - Token token = null; + final String expr; + final Token token; } { token = @@ -1393,8 +1386,8 @@ String PrimaryPrefix() : String ClassIdentifier(): { - String expr; - Token token; + final String expr; + final Token token; } { token = @@ -1406,7 +1399,7 @@ String ClassIdentifier(): String PrimarySuffix() : { - String expr; + final String expr; } { expr = Arguments() @@ -1442,8 +1435,8 @@ String VariableSuffix() : String Literal() : { - String expr; - Token token; + final String expr; + final Token token; } { token = @@ -1517,7 +1510,7 @@ final StringBuffer buff = new StringBuffer(); throw e; } { - buff.append(",").append("expr"); + buff.append(",").append(expr); } )* {return buff.toString();} @@ -1533,7 +1526,7 @@ void Statement() : LOOKAHEAD(2) Expression() try { - ( | "?>") + ( | ) } catch (ParseException e) { errorMessage = "';' expected"; errorLevel = ERROR; @@ -1585,7 +1578,7 @@ void Statement() : void IncludeStatement() : { - String expr; + final String expr; final int pos = jj_input_stream.bufpos; } { @@ -1653,7 +1646,7 @@ void IncludeStatement() : String PrintExpression() : { final StringBuffer buff = new StringBuffer("print "); - String expr; + final String expr; } { expr = Expression() @@ -1663,6 +1656,30 @@ String PrintExpression() : } } +String ListExpression() : +{ + final StringBuffer buff = new StringBuffer("list("); + String expr; +} +{ + + [ + expr = VariableDeclaratorId() + {buff.append(expr);} + ] + + {buff.append(",");} + [ + expr = VariableDeclaratorId() + {buff.append(expr);} + ] + + { + buff.append(")"); + return buff.toString(); + } +} + void EchoStatement() : {} { @@ -1735,7 +1752,13 @@ void BlockStatement() : void LocalVariableDeclaration() : {} { - VariableDeclarator() ( VariableDeclarator() )* + LocalVariableDeclarator() ( LocalVariableDeclarator() )* +} + +void LocalVariableDeclarator() : +{} +{ + VariableDeclaratorId() [ Expression() ] } void EmptyStatement() : @@ -1778,20 +1801,15 @@ void SwitchLabel() : } void IfStatement() : -/* - * The disambiguating algorithm of JavaCC automatically binds dangling - * else's to the innermost if statement. The LOOKAHEAD specification - * is to tell JavaCC that we know what we are doing. - */ { - Token token; + final Token token; final int pos = jj_input_stream.bufpos; } { token = Condition("if") IfStatement0(pos,pos+token.image.length()) } -void Condition(String keyword) : +void Condition(final String keyword) : {} { try { @@ -1811,7 +1829,7 @@ void Condition(String keyword) : } } -void IfStatement0(int start,int end) : +void IfStatement0(final int start,final int end) : { } { @@ -1865,7 +1883,7 @@ void ElseIfStatement() : void WhileStatement() : { - Token token; + final Token token; final int pos = jj_input_stream.bufpos; } { @@ -1935,6 +1953,7 @@ void ForeachStatement() : errorLevel = ERROR; throw e; } + [ VariableSuffix() ] try { } catch (ParseException e) { @@ -1958,7 +1977,7 @@ void ForeachStatement() : throw e; } try { - Statement() + Statement() } catch (ParseException e) { if (errorMessage != null) throw e; errorMessage = "statement expected"; @@ -1969,7 +1988,7 @@ void ForeachStatement() : void ForStatement() : { -Token token; +final Token token; final int pos = jj_input_stream.bufpos; } {