Mercurial > projects > dil
diff trunk/src/Parser.d @ 164:8ec99326752b
- Implemented parseWhileStatement().
- Renamed parseScopeBlockStatement() to parseScopeStatement().
author | aziz |
---|---|
date | Fri, 13 Jul 2007 22:55:05 +0000 |
parents | f27a98bb17c7 |
children | 797074d143d7 |
line wrap: on
line diff
--- a/trunk/src/Parser.d Fri Jul 13 22:41:03 2007 +0000 +++ b/trunk/src/Parser.d Fri Jul 13 22:55:05 2007 +0000 @@ -1139,7 +1139,11 @@ case T.If: s = parseIfStatement(); break; + case T.While: + s = parseWhileStatement(); + break; default: + // TODO: issue error msg and return IllegalStatement. } return s; } @@ -1152,7 +1156,7 @@ { } { StatementList } +/ - Statement parseScopeBlockStatement() + Statement parseScopeStatement() { Statement s; if (token.type == T.LBrace) @@ -1204,15 +1208,25 @@ } condition = parseExpression(); require(T.RParen); - ifBody = parseScopeBlockStatement(); + ifBody = parseScopeStatement(); if (token.type == T.Else) { nT(); - elseBody = parseScopeBlockStatement(); + elseBody = parseScopeStatement(); } return new IfStatement(type, ident, condition, ifBody, elseBody); } + Statement parseWhileStatement() + { + assert(token.type == T.While); + nT(); + require(T.RParen); + auto condition = parseExpression(); + require(T.LParen); + return new WhileStatement(condition, parseScopeStatement()); + } + /+++++++++++++++++++++++++++++ + Expression parsing methods + +++++++++++++++++++++++++++++/