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 daf63e2..1e7e5a2 100644 --- a/net.sourceforge.phpeclipse/src/test/PHPParser.jj +++ b/net.sourceforge.phpeclipse/src/test/PHPParser.jj @@ -765,11 +765,11 @@ FieldDeclaration FieldDeclaration() : { variableDeclaration = VariableDeclaratorNoSuffix() {arrayList.add(variableDeclaration); - outlineInfo.addVariable(new String(variableDeclaration.name));} + outlineInfo.addVariable(new String(variableDeclaration.name()));} ( variableDeclaration = VariableDeclaratorNoSuffix() {arrayList.add(variableDeclaration); - outlineInfo.addVariable(new String(variableDeclaration.name));} + outlineInfo.addVariable(new String(variableDeclaration.name()));} )* try { @@ -815,12 +815,12 @@ VariableDeclaration VariableDeclaratorNoSuffix() : { if (initializer == null) { return new VariableDeclaration(currentSegment, - varName.image.substring(1).toCharArray(), + new Variable(varName.image.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), pos, SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - varName.image.substring(1).toCharArray(), + new Variable(varName.image.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.image.length()-1,SimpleCharStream.getPosition()), initializer, VariableDeclaration.EQUAL, pos); @@ -850,15 +850,15 @@ VariableDeclaration VariableDeclarator() : { if (initializer == null) { return new VariableDeclaration(currentSegment, - varName.toCharArray(), + new Variable(varName.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.length()-1,SimpleCharStream.getPosition()), pos, SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - varName.toCharArray(), - initializer, - VariableDeclaration.EQUAL, - pos); + new Variable(varName.substring(1).toCharArray(),SimpleCharStream.getPosition()-varName.length()-1,SimpleCharStream.getPosition()), + initializer, + VariableDeclaration.EQUAL, + pos); } } @@ -1120,10 +1120,10 @@ Hashtable FormalParameters() : } [ var = FormalParameter() - {parameters.put(new String(var.name),var);} + {parameters.put(new String(var.name()),var);} ( var = FormalParameter() - {parameters.put(new String(var.name),var);} + {parameters.put(new String(var.name()),var);} )* ] try { @@ -1184,9 +1184,41 @@ Expression Expression() : final Expression expr; Expression initializer = null; final int pos = SimpleCharStream.getPosition(); + int assignOperator = -1; } { - expr = ConditionalExpression() {return expr;} + LOOKAHEAD(1) + expr = ConditionalExpression() + [ + assignOperator = AssignmentOperator() + try { + initializer = ConditionalExpression() + } catch (ParseException e) { + if (errorMessage != null) { + throw e; + } + errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; + errorLevel = ERROR; + errorEnd = SimpleCharStream.getPosition(); + throw e; + } + ] + { + char[] varName = expr.toStringExpression().substring(1).toCharArray(); + if (assignOperator == -1) { + return new VariableDeclaration(currentSegment, + new Variable(varName,SimpleCharStream.getPosition()-varName.length-1,SimpleCharStream.getPosition()), + pos, + SimpleCharStream.getPosition()); + return expr; + } + return new VariableDeclaration(currentSegment, + new Variable(varName,SimpleCharStream.getPosition()-varName.length-1,SimpleCharStream.getPosition()), + initializer, + assignOperator, + pos); + } + {return expr;} | expr = ExpressionWBang() {return expr;} } @@ -1210,36 +1242,6 @@ Expression ExpressionNoBang() : { expr = PrintExpression() {return expr;} | expr = ListExpression() {return expr;} -| - var = VariableDeclaratorId() - [ - assignOperator = AssignmentOperator() - try { - expr = Expression() - } catch (ParseException e) { - if (errorMessage != null) { - throw e; - } - errorMessage = "unexpected token : '"+ e.currentToken.next.image +"', expression expected"; - errorLevel = ERROR; - errorEnd = SimpleCharStream.getPosition(); - throw e; - } - ] - { - if (assignOperator == -1) { - return new VariableDeclaration(currentSegment, - var.toCharArray(), - pos, - SimpleCharStream.getPosition()); - } - return new VariableDeclaration(currentSegment, - var.toCharArray(), - expr, - assignOperator, - pos); - } - {return expr;} } /** @@ -1617,30 +1619,47 @@ Expression PrimaryExpression() : final int pos = SimpleCharStream.getPosition(); } { - identifier = - {expr = new ConstantIdentifier(token.image.toCharArray(), - pos, - SimpleCharStream.getPosition());} + expr = PrimaryPrefix() (expr = PrimarySuffix(expr))* + [ expr = Arguments(expr) ] {return expr;} | - expr = ArrayDeclarator() + expr = ClassIdentifier() + {expr = new PrefixedUnaryExpression(expr, + OperatorIds.NEW, + pos); + } + [ expr = Arguments(expr) ] {return expr;} | - expr = ClassIdentifier() - {expr = new PrefixedUnaryExpression(expr,OperatorIds.NEW,pos);} - [expr = Arguments(expr)] + expr = ArrayDeclarator() {return expr;} } +Expression PrimaryPrefix() : +{ + final Expression expr; + final Token token; + final String var; + final int pos = SimpleCharStream.getPosition(); +} +{ + token = {return new ConstantIdentifier(token.image.toCharArray(), + pos, + SimpleCharStream.getPosition());} +| + var = VariableDeclaratorId() {return new Variable(var.toCharArray(), + pos, + SimpleCharStream.getPosition());} +} + AbstractSuffixExpression PrimarySuffix(final Expression prefix) : { final AbstractSuffixExpression suffix; final Expression expr; } { - suffix = Arguments(prefix) {return suffix;} -| suffix = VariableSuffix(prefix) {return suffix;} + suffix = VariableSuffix(prefix) {return suffix;} | expr = ClassIdentifier() {suffix = new ClassAccess(prefix, expr, @@ -1806,6 +1825,7 @@ final ArrayList list = new ArrayList(); /** * A Statement without break. + * @return a statement */ Statement StatementNoBreak() : { @@ -1814,34 +1834,11 @@ Statement StatementNoBreak() : } { LOOKAHEAD(2) - statement = Expression() - try { - - } 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; - throw e; - } - } - {return statement;} + statement = expressionStatement() {return statement;} | LOOKAHEAD(1) - statement = LabeledStatement() {return statement;} -| statement = Block() {return statement;} -| statement = EmptyStatement() {return statement;} -/*| statement = StatementExpression() - try { - - } 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; - throw e; - } - {return statement;} */ + statement = LabeledStatement() {return statement;} +| statement = Block() {return statement;} +| statement = EmptyStatement() {return statement;} | statement = SwitchStatement() {return statement;} | statement = IfStatement() {return statement;} | statement = WhileStatement() {return statement;} @@ -1861,6 +1858,31 @@ Statement StatementNoBreak() : | statement = defineStatement() {currentSegment.add((Outlineable)statement);return statement;} } +/** + * A statement expression. + * expression ; + * @return an expression + */ +Statement expressionStatement() : +{ + final Statement statement; +} +{ + statement = Expression() + try { + + } 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; + throw e; + } + } + {return statement;} +} + Define defineStatement() : { final int start = SimpleCharStream.getPosition(); @@ -2148,8 +2170,8 @@ StaticStatement StaticStatement() : VariableDeclaration expr; } { - expr = VariableDeclarator() {vars.add(new String(expr.name));} - ( expr = VariableDeclarator() {vars.add(new String(expr.name));})* + expr = VariableDeclarator() {vars.add(new String(expr.name()));} + ( expr = VariableDeclarator() {vars.add(new String(expr.name()));})* try { { @@ -2273,12 +2295,12 @@ VariableDeclaration LocalVariableDeclarator() : { if (initializer == null) { return new VariableDeclaration(currentSegment, - varName.toCharArray(), + new Variable(varName.toCharArray(),SimpleCharStream.getPosition()-varName.length(),SimpleCharStream.getPosition()), pos, SimpleCharStream.getPosition()); } return new VariableDeclaration(currentSegment, - varName.toCharArray(), + new Variable(varName.toCharArray(),SimpleCharStream.getPosition()-varName.length(),SimpleCharStream.getPosition()), initializer, VariableDeclaration.EQUAL, pos);