Mercurial > projects > dang
diff ast/Decl.d @ 144:6e6355fb5f0f
- Parsing nested attributes.
- Creating classes and interfaces in AST.
- Updated AstPrinter to print attributes, classes and interfaces.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Mon, 21 Jul 2008 17:41:40 +0200 |
parents | 2be29b296081 |
children | a14ac9e5c858 |
line wrap: on
line diff
--- a/ast/Decl.d Mon Jul 21 01:05:20 2008 +0200 +++ b/ast/Decl.d Mon Jul 21 17:41:40 2008 +0200 @@ -20,6 +20,8 @@ ImportDecl, FuncDecl, StructDecl, + ClassDecl, + InterfaceDecl, } class Decl @@ -220,3 +222,69 @@ private DType myType; } +class ClassDecl : Decl +{ + this(Identifier identifier) + { + super(DeclType.ClassDecl); + this.identifier = identifier; + } + + void addMember(Decl decl) + { + decls ~= decl; + } + + void addBaseClass(Identifier identifier) + { + baseClasses ~= identifier; + } + + void simplify() + { + } + + override DType type() + { + return env.findType(identifier); + } + + Identifier identifier; + Identifier[] baseClasses; + Decl[] decls; + private DType myType; +} + +class InterfaceDecl : Decl +{ + this(Identifier identifier) + { + super(DeclType.InterfaceDecl); + this.identifier = identifier; + } + + void addMember(Decl decl) + { + decls ~= decl; + } + + void addBaseClass(Identifier identifier) + { + baseClasses ~= identifier; + } + + void simplify() + { + } + + override DType type() + { + return env.findType(identifier); + } + + Identifier identifier; + Identifier[] baseClasses; + Decl[] decls; + private DType myType; +} +