changeset 170:a63696d1c474

- Implemented parseSwitchStatement().
author aziz
date Sat, 14 Jul 2007 09:57:04 +0000
parents 4666a05dfacf
children f1fa9bbdb4cb
files trunk/src/Parser.d trunk/src/Statements.d
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/trunk/src/Parser.d	Sat Jul 14 09:34:04 2007 +0000
+++ b/trunk/src/Parser.d	Sat Jul 14 09:57:04 2007 +0000
@@ -1148,6 +1148,9 @@
     case T.Foreach, T.Foreach_reverse:
       s = parseForeachStatement();
       break;
+    case T.Switch:
+      s = parseSwitchStatement();
+      break;
     default:
       // TODO: issue error msg and return IllegalStatement.
     }
@@ -1341,6 +1344,18 @@
     return new ForeachStatement(tok, params, aggregate, forBody);
   }
 
+  Statement parseSwitchStatement()
+  {
+    assert(token.type == T.Switch);
+    nT();
+
+    require(T.LParen);
+    auto condition = parseExpression();
+    require(T.RParen);
+    auto switchBody = parseScopeStatement();
+    return new SwitchStatement(condition, switchBody);
+  }
+
   /+++++++++++++++++++++++++++++
   + Expression parsing methods +
   +++++++++++++++++++++++++++++/
--- a/trunk/src/Statements.d	Sat Jul 14 09:34:04 2007 +0000
+++ b/trunk/src/Statements.d	Sat Jul 14 09:57:04 2007 +0000
@@ -128,7 +128,14 @@
 
 class SwitchStatement : Statement
 {
+  Expression condition;
+  Statement switchBody;
 
+  this(Expression condition, Statement switchBody)
+  {
+    this.condition = condition;
+    this.switchBody = switchBody;
+  }
 }
 
 class CaseStatement : Statement