Mercurial > projects > dil
changeset 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 | 50251b408965 |
files | trunk/src/Declarations.d trunk/src/Parser.d |
diffstat | 2 files changed, 53 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Declarations.d Wed Jul 11 19:41:04 2007 +0000 +++ b/trunk/src/Declarations.d Wed Jul 11 20:55:02 2007 +0000 @@ -279,3 +279,27 @@ this.decls = decls; } } + +class NewDeclaration : Declaration +{ + Parameters parameters; + Declaration[] decls; + this(Parameters parameters, Declaration[] decls) + { + super(true); + this.parameters = parameters; + this.decls = decls; + } +} + +class DeleteDeclaration : Declaration +{ + Parameters parameters; + Declaration[] decls; + this(Parameters parameters, Declaration[] decls) + { + super(true); + this.parameters = parameters; + this.decls = decls; + } +}
--- 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 + +++++++++++++++++++++++++++++/