misc changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / parser / Parser.java
index ab95c81..8cf9f7e 100644 (file)
@@ -20,6 +20,7 @@ import net.sourceforge.phpdt.internal.compiler.problem.ProblemReporter;
 import net.sourceforge.phpeclipse.internal.compiler.ast.AbstractMethodDeclaration;
 import net.sourceforge.phpeclipse.internal.compiler.ast.AstNode;
 import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
+import net.sourceforge.phpeclipse.internal.compiler.ast.FieldDeclaration;
 import net.sourceforge.phpeclipse.internal.compiler.ast.MethodDeclaration;
 import net.sourceforge.phpeclipse.internal.compiler.ast.SingleTypeReference;
 import net.sourceforge.phpeclipse.internal.compiler.ast.TypeDeclaration;
@@ -135,7 +136,7 @@ public class Parser //extends PHPParserSuperclass
   private void throwSyntaxError(String error) {
     int problemStartPosition = scanner.getCurrentTokenStartPosition();
     int problemEndPosition = scanner.getCurrentTokenEndPosition();
-    throwSyntaxError(error, problemStartPosition, problemEndPosition+1);
+    throwSyntaxError(error, problemStartPosition, problemEndPosition + 1);
   }
   /**
    * This method will throw the SyntaxError. It will add the good lines and
@@ -660,16 +661,16 @@ public class Parser //extends PHPParserSuperclass
       getNextToken();
       if (token == TokenNameLBRACE) {
         getNextToken();
+        if (token != TokenNameRBRACE) {
+          statementList();
+        }
+        if (token == TokenNameRBRACE) {
+          getNextToken();
+        } else {
+          throwSyntaxError("'}' expected after 'do' keyword.");
+        }
       } else {
-        throwSyntaxError("'{' expected after 'do' keyword.");
-      }
-      if (token != TokenNameRBRACE) {
-        statementList();
-      }
-      if (token == TokenNameRBRACE) {
-        getNextToken();
-      } else {
-        throwSyntaxError("'}' expected after 'do' keyword.");
+        statement(TokenNameEOF);
       }
       if (token == TokenNamewhile) {
         getNextToken();
@@ -850,9 +851,11 @@ public class Parser //extends PHPParserSuperclass
         throwSyntaxError("'{' expected in 'catch' statement.");
       }
       getNextToken();
-      statementList();
       if (token != TokenNameRBRACE) {
-        throwSyntaxError("'}' expected in 'catch' statement.");
+        statementList();
+        if (token != TokenNameRBRACE) {
+          throwSyntaxError("'}' expected in 'catch' statement.");
+        }
       }
       getNextToken();
       additional_catches();
@@ -1354,6 +1357,10 @@ public class Parser //extends PHPParserSuperclass
     // | T_VARIABLE '=' static_scalar
     do {
       if (token == TokenNameVariable) {
+        FieldDeclaration fieldDeclaration = new FieldDeclaration(null, scanner
+            .getCurrentIdentifierSource(), scanner
+            .getCurrentTokenStartPosition(), scanner
+            .getCurrentTokenEndPosition());
         getNextToken();
         if (token == TokenNameEQUAL) {
           getNextToken();
@@ -1532,10 +1539,8 @@ public class Parser //extends PHPParserSuperclass
         expr(); //constant();
         if (token == TokenNameCOLON || token == TokenNameSEMICOLON) {
           getNextToken();
-          if (token == TokenNamecase || token == TokenNamedefault) { // empty
-            // case
-            // statement
-            // ?
+          if (token == TokenNamecase || token == TokenNamedefault) { 
+            // empty case statement ?
             continue;
           }
           statementList();
@@ -1561,6 +1566,10 @@ public class Parser //extends PHPParserSuperclass
         getNextToken();
         if (token == TokenNameCOLON) {
           getNextToken();
+          if (token==TokenNameRBRACE) {
+            // empty default case
+            break;
+          }
           statementList();
         } else {
           throwSyntaxError("':' character after 'default' expected.");