diff trunk/src/Parser.d @ 165:797074d143d7

- Implemented parseDoWhileStatement().
author aziz
date Fri, 13 Jul 2007 23:02:01 +0000
parents 8ec99326752b
children 56334292a29e
line wrap: on
line diff
--- a/trunk/src/Parser.d	Fri Jul 13 22:55:05 2007 +0000
+++ b/trunk/src/Parser.d	Fri Jul 13 23:02:01 2007 +0000
@@ -1142,6 +1142,9 @@
     case T.While:
       s = parseWhileStatement();
       break;
+    case T.Do:
+      s = parseDoWhileStatement();
+      break;
     default:
       // TODO: issue error msg and return IllegalStatement.
     }
@@ -1227,6 +1230,18 @@
     return new WhileStatement(condition, parseScopeStatement());
   }
 
+  Statement parseDoWhileStatement()
+  {
+    assert(token.type == T.Do);
+    nT();
+    auto doBody = parseScopeStatement();
+    require(T.While);
+    require(T.RParen);
+    auto condition = parseExpression();
+    require(T.LParen);
+    return new DoWhileStatement(condition, doBody);
+  }
+
   /+++++++++++++++++++++++++++++
   + Expression parsing methods +
   +++++++++++++++++++++++++++++/