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;
+}
+