# HG changeset patch # User aziz # Date 1184423881 0 # Node ID 673b355ba0e98097760d21a10ed4614380382ee2 # Parent abfd511424772ebe55a54c96f1473bcf0f170bac - Implemented parseVolatileStatement(). diff -r abfd51142477 -r 673b355ba0e9 trunk/src/Parser.d --- a/trunk/src/Parser.d Sat Jul 14 14:10:01 2007 +0000 +++ b/trunk/src/Parser.d Sat Jul 14 14:38:01 2007 +0000 @@ -1188,6 +1188,9 @@ goto case_Declaration; s = parseScopeGuardStatement(); break; + case T.Volatile: + s = parseVolatileStatement(); + break; default: // TODO: issue error msg and return IllegalStatement. } @@ -1579,6 +1582,20 @@ return new ScopeGuardStatement(condition, scopeBody); } + Statement parseVolatileStatement() + { + assert(token.type == T.Volatile); + nT(); + Statement volatileBody; + if (token.type == T.Semicolon) + nT(); + else if (token.type == T.LBrace) + volatileBody = parseScopeStatement(); + else + volatileBody = parseNoScopeStatement(); + return new VolatileStatement(volatileBody); + } + /+++++++++++++++++++++++++++++ + Expression parsing methods + +++++++++++++++++++++++++++++/ diff -r abfd51142477 -r 673b355ba0e9 trunk/src/Statements.d --- a/trunk/src/Statements.d Sat Jul 14 14:10:01 2007 +0000 +++ b/trunk/src/Statements.d Sat Jul 14 14:38:01 2007 +0000 @@ -274,7 +274,11 @@ class VolatileStatement : Statement { - + Statement volatileBody; + this(Statement volatileBody) + { + this.volatileBody = volatileBody; + } } class AsmStatement : Statement