Mercurial > projects > dil
changeset 165:797074d143d7
- Implemented parseDoWhileStatement().
author | aziz |
---|---|
date | Fri, 13 Jul 2007 23:02:01 +0000 |
parents | 8ec99326752b |
children | 56334292a29e |
files | trunk/src/Parser.d trunk/src/Statements.d |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
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 + +++++++++++++++++++++++++++++/
--- a/trunk/src/Statements.d Fri Jul 13 22:55:05 2007 +0000 +++ b/trunk/src/Statements.d Fri Jul 13 23:02:01 2007 +0000 @@ -83,9 +83,15 @@ } } -class DoStatement : Statement +class DoWhileStatement : Statement { - + Expression condition; + Statement doBody; + this(Expression condition, Statement doBody) + { + this.condition = condition; + this.doBody = doBody; + } } class ForStatement : Statement