Mercurial > projects > dil
changeset 176:3071522c0cf0
- Implemented parseGotoStatement().
author | aziz |
---|---|
date | Sat, 14 Jul 2007 11:02:00 +0000 |
parents | 522df6f0f230 |
children | 504b1b2f7c93 |
files | trunk/src/Parser.d trunk/src/Statements.d |
diffstat | 2 files changed, 35 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Parser.d Sat Jul 14 10:44:05 2007 +0000 +++ b/trunk/src/Parser.d Sat Jul 14 11:02:00 2007 +0000 @@ -1166,6 +1166,9 @@ case T.Return: s = parseReturnStatement(); break; + case T.Goto: + s = parseGotoStatement(); + break; default: // TODO: issue error msg and return IllegalStatement. } @@ -1432,6 +1435,31 @@ return new ReturnStatement(expr); } + Statement parseGotoStatement() + { + assert(token.type == T.Goto); + nT(); + string ident; + Expression caseExpr; + switch (token.type) + { + case T.Case: + nT(); + if (token.type == T.Semicolon) + break; + caseExpr = parseExpression(); + break; + case T.Default: + nT(); + break; + default: + ident = requireIdentifier(); + nT(); + } + require(T.Semicolon); + return new GotoStatement(ident, caseExpr); + } + /+++++++++++++++++++++++++++++ + Expression parsing methods + +++++++++++++++++++++++++++++/
--- a/trunk/src/Statements.d Sat Jul 14 10:44:05 2007 +0000 +++ b/trunk/src/Statements.d Sat Jul 14 11:02:00 2007 +0000 @@ -188,7 +188,13 @@ class GotoStatement : Statement { - + string ident; + Expression caseExpr; + this(string ident, Expression caseExpr) + { + this.ident = ident; + this.caseExpr = caseExpr; + } } class WithStatement : Statement