Mercurial > projects > dil
diff trunk/src/Parser.d @ 141:7ab33ee1a641
- Implemented parseNew- and DeleteDeclaration().
- Added classes NewDeclaration and DeleteDeclaration.
author | aziz |
---|---|
date | Wed, 11 Jul 2007 20:55:02 +0000 |
parents | 64d7186b087c |
children | e760d7552f66 |
line wrap: on
line diff
--- a/trunk/src/Parser.d Wed Jul 11 19:41:04 2007 +0000 +++ b/trunk/src/Parser.d Wed Jul 11 20:55:02 2007 +0000 @@ -169,6 +169,12 @@ case T.Template: decl = parseTemplateDeclaration(); break; + case T.New: + decl = parseNewDeclaration(); + break; + case T.Delete: + decl = parseDeleteDeclaration(); + break; case T.Semicolon: nT(); decl = new EmptyDeclaration(); @@ -795,6 +801,29 @@ return new TemplateDeclaration(templateName, templateParams, decls); } + Declaration parseNewDeclaration() + { + assert(token.type == T.New); + nT(); // Skip new keyword. + auto parameters = parseParameters(); + require(T.LBrace); + auto decls = parseDeclarationDefinitions(); + require(T.RBrace); + return new NewDeclaration(parameters, decls); + } + + Declaration parseDeleteDeclaration() + { + assert(token.type == T.Delete); + nT(); // Skip delete keyword. + auto parameters = parseParameters(); + // TODO: only one parameter of type void* allowed. + require(T.LBrace); + auto decls = parseDeclarationDefinitions(); + require(T.RBrace); + return new DeleteDeclaration(parameters, decls); + } + /+++++++++++++++++++++++++++++ + Expression parsing methods + +++++++++++++++++++++++++++++/