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 861d2c6..9e3fc1d 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.jj +++ b/net.sourceforge.phpeclipse/src/test/PHPParser.jj @@ -127,7 +127,12 @@ public class PHPParser extends PHPParserSuperclass { */ private static void setMarker(ParseException e) { try { - setMarker(fileToParse, errorMessage, jj_input_stream.tokenBegin,jj_input_stream.tokenBegin+e.currentToken.image.length(), errorLevel); + setMarker(fileToParse, + errorMessage, + jj_input_stream.tokenBegin, + jj_input_stream.tokenBegin + e.currentToken.image.length(), + errorLevel, + "Line " + e.currentToken.beginLine); } catch (CoreException e2) { PHPeclipsePlugin.log(e2); } @@ -441,7 +446,7 @@ MORE : > | < #SPECIAL: - "_" + "_" | ["\u007f"-"\u00ff"] > } @@ -502,7 +507,9 @@ MORE : | >=" > -| >>=" > +| +| +| (token = | token = ) + {return "+" + token.image;} +| expr = ArrayDeclarator() {return expr;} +| + token = + {return token.image;} } String ArrayVariable() : @@ -867,7 +890,7 @@ String Expression() : } catch (ParseException e) { errorMessage = "expression expected"; errorLevel = ERROR; - throw generateParseException(); + throw e; } ] { @@ -898,8 +921,6 @@ String AssignmentOperator() : {return "<<=";} | {return ">>=";} -| -{return ">>>=";} | {return "&=";} | @@ -908,6 +929,8 @@ String AssignmentOperator() : {return "|=";} | {return ".=";} +| +{return "~=";} } String ConditionalExpression() : @@ -1078,7 +1101,12 @@ String EqualityExpression() : expr = RelationalExpression() {buff.append(expr);} ( - ( operator = | operator = ) expr2 = RelationalExpression() + ( operator = + | operator = + | operator = + | operator = + ) + expr2 = RelationalExpression() { buff.append(operator.image); buff.append(expr2); @@ -1165,15 +1193,34 @@ String MultiplicativeExpression() : {return buff.toString();} } +/** + * An unary expression starting with @, & or nothing + */ String UnaryExpression() : { String expr; Token token; + final StringBuffer buff = new StringBuffer(); } { - expr = UnaryExpression() - {return "@" + expr;} + token = expr = UnaryExpressionNoPrefix() + { + if (token == null) { + return expr; + } + return token.image + expr; + } | + ( {buff.append("@");})* expr = UnaryExpressionNoPrefix() + {return buff.append(expr).toString();} +} + +String UnaryExpressionNoPrefix() : +{ + String expr; + Token token; +} +{ ( token = | token = ) expr = UnaryExpression() { return token.image + expr; @@ -1189,6 +1236,7 @@ String UnaryExpression() : {return expr;} } + String PreIncrementExpression() : { String expr; @@ -1296,12 +1344,9 @@ String PrimaryPrefix() : token = {return token.image;} | - [token = ] expr = ClassIdentifier() + expr = ClassIdentifier() { - if (token == null) { - return "new " + expr; - } - return "new &" + expr; + return "new " + expr; } | expr = VariableDeclaratorId() @@ -1347,7 +1392,7 @@ String VariableSuffix() : } catch (ParseException e) { errorMessage = "']' expected"; errorLevel = ERROR; - throw generateParseException(); + throw e; } { if(expr == null) { @@ -1369,14 +1414,8 @@ String Literal() : token = {return token.image;} | - try { - token = + token = {return token.image;} - } catch (TokenMgrError e) { - errorMessage = "unterminated string"; - errorLevel = ERROR; - throw generateParseException(); - } | expr = BooleanLiteral() {return expr;}