*** empty log message ***
[phpeclipse.git] / net.sourceforge.phpeclipse / src / test / PHPParser.jj
index d3b3e59..0eb3056 100644 (file)
@@ -870,21 +870,17 @@ void ClassBodyDeclaration(ClassDeclaration classDeclaration) :
 FieldDeclaration FieldDeclaration() :
 {
   VariableDeclaration variableDeclaration;
-  variableDeclarationPtr = 0;
-  variableDeclarationStack = new VariableDeclaration[AstStackIncrement];
   VariableDeclaration[] list;
+  final ArrayList arrayList = new ArrayList();
   final int pos = SimpleCharStream.getPosition();
 }
 {
   <VAR> variableDeclaration = VariableDeclarator()
-  {
-    pushOnVariableDeclarationStack(variableDeclaration);
-    outlineInfo.addVariable(new String(variableDeclaration.name));
-    currentSegment.add(variableDeclaration);
-  }
-  ( <COMMA>
-      variableDeclaration = VariableDeclarator()
-      {pushOnVariableDeclarationStack(variableDeclaration);
+  {arrayList.add(variableDeclaration);
+   outlineInfo.addVariable(new String(variableDeclaration.name));
+   currentSegment.add(variableDeclaration);}
+  ( <COMMA> variableDeclaration = VariableDeclarator()
+      {arrayList.add(variableDeclaration);
        outlineInfo.addVariable(new String(variableDeclaration.name));
        currentSegment.add(variableDeclaration);}
   )*
@@ -898,8 +894,8 @@ FieldDeclaration FieldDeclaration() :
     throw e;
   }
 
-  {list = new VariableDeclaration[variableDeclarationPtr];
-   System.arraycopy(variableDeclarationStack,0,list,0,variableDeclarationPtr);
+  {list = new VariableDeclaration[arrayList.size()];
+   arrayList.toArray(list);
    return new FieldDeclaration(list,
                                pos,
                                SimpleCharStream.getPosition());}
@@ -1064,12 +1060,14 @@ Expression VariableInitializer() :
 
 ArrayVariableDeclaration ArrayVariable() :
 {
-Expression expr;
-Expression expr2 = null;
+Expression expr,expr2;
 }
 {
-  expr = Expression() [<ARRAYASSIGN> expr2 = Expression()]
+  expr = Expression()
+  [<ARRAYASSIGN> expr2 = Expression()
   {return new ArrayVariableDeclaration(expr,expr2);}
+  ]
+  {return new ArrayVariableDeclaration(expr,SimpleCharStream.getPosition());}
 }
 
 ArrayVariableDeclaration[] ArrayInitializer() :
@@ -1967,7 +1965,7 @@ HTMLBlock htmlBlock() :
     throw e;
   }
   {
-  nbNodes = nodePtr-startIndex;
+  nbNodes = nodePtr-startIndex - 1;
   blockNodes = new AstNode[nbNodes];
   System.arraycopy(nodes,startIndex,blockNodes,0,nbNodes);
   return new HTMLBlock(nodes);}
@@ -2204,10 +2202,8 @@ LabeledStatement LabeledStatement() :
 Block Block() :
 {
   final int pos = SimpleCharStream.getPosition();
-  Statement[] statements;
+  final ArrayList list = new ArrayList();
   Statement statement;
-  final int startingPtr = statementPtr;
-  final int length;
 }
 {
   try {
@@ -2219,8 +2215,8 @@ Block Block() :
     errorEnd   = jj_input_stream.getPosition() + 1;
     throw e;
   }
-  ( statement = BlockStatement() {pushOnStatementStack(statement);}
-  | statement = htmlBlock()      {pushOnStatementStack(statement);})*
+  ( statement = BlockStatement() {list.add(statement);}
+  | statement = htmlBlock()      {list.add(statement);})*
   try {
     <RBRACE>
   } catch (ParseException e) {
@@ -2231,10 +2227,8 @@ Block Block() :
     throw e;
   }
   {
-  length = statementPtr-startingPtr+1;
-  statements = new Statement[length];
-  System.arraycopy(variableDeclarationStack,startingPtr+1,statements,0,length);
-  statementPtr = startingPtr;
+  Statement[] statements = new Statement[list.size()];
+  list.toArray(statements);
   return new Block(statements,pos,SimpleCharStream.getPosition());}
 }
 
@@ -2310,19 +2304,23 @@ EmptyStatement EmptyStatement() :
 
 Statement StatementExpression() :
 {
-  Expression expr;
+  Expression expr,expr2;
+  int operator;
 }
 {
   expr = PreIncDecExpression() {return expr;}
 |
   expr = PrimaryExpression()
-  [ <INCR> {expr = new PostfixedUnaryExpression(expr,
+  [ <INCR> {return new PostfixedUnaryExpression(expr,
                                                 OperatorIds.PLUS_PLUS,
                                                 SimpleCharStream.getPosition());}
-  | <DECR> {expr = new PostfixedUnaryExpression(expr,
+  | <DECR> {return new PostfixedUnaryExpression(expr,
                                                 OperatorIds.MINUS_MINUS,
                                                 SimpleCharStream.getPosition());}
-  | AssignmentOperator() Expression() ]
+  | operator = AssignmentOperator() expr2 = Expression()
+    {return new BinaryExpression(expr,expr2,operator);}
+  ]
+  {return expr;}
 }
 
 SwitchStatement SwitchStatement() :