Mercurial > projects > dil
diff trunk/src/Parser.d @ 171:f1fa9bbdb4cb
- Implemented parseCaseStatement().
author | aziz |
---|---|
date | Sat, 14 Jul 2007 10:28:05 +0000 |
parents | a63696d1c474 |
children | 89d4519bd8a1 |
line wrap: on
line diff
--- a/trunk/src/Parser.d Sat Jul 14 09:57:04 2007 +0000 +++ b/trunk/src/Parser.d Sat Jul 14 10:28:05 2007 +0000 @@ -1151,6 +1151,9 @@ case T.Switch: s = parseSwitchStatement(); break; + case T.Case: + s = parseCaseStatement(); + break; default: // TODO: issue error msg and return IllegalStatement. } @@ -1356,6 +1359,22 @@ return new SwitchStatement(condition, switchBody); } + Statement parseCaseStatement() + { + assert(token.type == T.Case); + // T.Case skipped in do-while. + Expression[] values; + do + { + nT(); + values ~= parseAssignExpression(); + } while (token.type == T.Comma) + require(T.Colon); + + auto caseBody = parseScopeStatement(); + return new CaseStatement(values, caseBody); + } + /+++++++++++++++++++++++++++++ + Expression parsing methods + +++++++++++++++++++++++++++++/