# HG changeset patch # User aziz # Date 1184407024 0 # Node ID a63696d1c47408c77ea1761f39fcdd25fd6c932f # Parent 4666a05dfacf9b9d99db223acc91e31145aa8844 - Implemented parseSwitchStatement(). diff -r 4666a05dfacf -r a63696d1c474 trunk/src/Parser.d --- 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 + +++++++++++++++++++++++++++++/ diff -r 4666a05dfacf -r a63696d1c474 trunk/src/Statements.d --- 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