diff trunk/src/Parser.d @ 171:f1fa9bbdb4cb

- Implemented parseCaseStatement().
author aziz
date Sat, 14 Jul 2007 10:28:05 +0000
parents a63696d1c474
children 89d4519bd8a1
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sat Jul 14 09:57:04 2007 +0000
+++ b/trunk/src/Parser.d	Sat Jul 14 10:28:05 2007 +0000
@@ -1151,6 +1151,9 @@
     case T.Switch:
       s = parseSwitchStatement();
       break;
+    case T.Case:
+      s = parseCaseStatement();
+      break;
     default:
       // TODO: issue error msg and return IllegalStatement.
     }
@@ -1356,6 +1359,22 @@
     return new SwitchStatement(condition, switchBody);
   }
 
+  Statement parseCaseStatement()
+  {
+    assert(token.type == T.Case);
+    // T.Case skipped in do-while.
+    Expression[] values;
+    do
+    {
+      nT();
+      values ~= parseAssignExpression();
+    } while (token.type == T.Comma)
+    require(T.Colon);
+
+    auto caseBody = parseScopeStatement();
+    return new CaseStatement(values, caseBody);
+  }
+
   /+++++++++++++++++++++++++++++
   + Expression parsing methods +
   +++++++++++++++++++++++++++++/