fixed some parser bugs
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / parser / Parser.java
index aec5e9f..1bc55b9 100644 (file)
@@ -2943,16 +2943,9 @@ public class Parser //extends PHPParserSuperclass
           break;
         case TokenNameVariable :
         case TokenNameDOLLAR_LBRACE :
-        case TokenNameCURLY_OPEN :
+        case TokenNameLBRACE_DOLLAR :
           encaps_var();
           break;
-        //        case TokenNameDOLLAR :
-        //          getNextToken();
-        //          if (token == TokenNameLBRACE) {
-        //            token = TokenNameDOLLAR_LBRACE;
-        //            encaps_var();
-        //          }
-        //          break;
         default :
           char encapsedChar = ((Character) scanner.encapsedStringStack.peek()).charValue();
           if (encapsedChar == '$') {
@@ -3053,7 +3046,9 @@ public class Parser //extends PHPParserSuperclass
         break;
       case TokenNameDOLLAR_LBRACE :
         getNextToken();
-        if (token == TokenNameIdentifier) {
+        if (token == TokenNameDOLLAR_LBRACE) {
+          encaps_var();
+        } else if (token == TokenNameIdentifier) {
           getNextToken();
           if (token == TokenNameLBRACKET) {
             getNextToken();
@@ -3067,23 +3062,19 @@ public class Parser //extends PHPParserSuperclass
             getNextToken();
             //            }
           }
-          if (token != TokenNameRBRACE) {
-            throwSyntaxError("'}' expected after '${'.");
-          }
-          //          scanner.encapsedStringStack.pop();
-          getNextToken();
         } else {
           expr();
-          if (token != TokenNameRBRACE) {
-            throwSyntaxError("'}' expected.");
-          }
-          //          scanner.encapsedStringStack.pop();
-          getNextToken();
         }
+        if (token != TokenNameRBRACE) {
+          throwSyntaxError("'}' expected.");
+        }
+        getNextToken();
         break;
-      case TokenNameCURLY_OPEN :
+      case TokenNameLBRACE_DOLLAR :
         getNextToken();
-        if (token == TokenNameIdentifier || token > TokenNameKEYWORD) {
+        if (token == TokenNameLBRACE_DOLLAR) {
+          encaps_var();
+        } else if (token == TokenNameIdentifier || token > TokenNameKEYWORD) {
           getNextToken();
           if (token == TokenNameLBRACKET) {
             getNextToken();