Mercurial > projects > dang
diff sema/Visitor.d @ 94:48bb2287c035 new_gen
Added Modules. Right now it's very simple - will grow with time and need.
author | Anders Johnsen <skabet@gmail.com> |
---|---|
date | Tue, 06 May 2008 16:24:14 +0200 |
parents | 9e90694f5da0 |
children | 857f0d530789 |
line wrap: on
line diff
--- a/sema/Visitor.d Mon May 05 20:53:13 2008 +0200 +++ b/sema/Visitor.d Tue May 06 16:24:14 2008 +0200 @@ -3,25 +3,35 @@ import tango.io.Stdout; public -import ast.Decl, +import ast.Module, + ast.Decl, ast.Stmt, ast.Exp; import lexer.Token; -class Visitor(FinalT = int, DeclT = FinalT, StmtT = DeclT, ExpT = StmtT) +class Visitor(FinalT = int, ModuleT = FinalT, DeclT = ModuleT, StmtT = DeclT, ExpT = StmtT) { public: - FinalT visit(Decl[] decls) + FinalT visit(Module m) { - foreach (decl; decls) - visitDecl(decl); + visitModule(m); static if (is(FinalT == void)) return; else return FinalT.init; } + ModuleT visitModule(Module m) + { + foreach (decl; m.decls) + visitDecl(decl); + static if (is(ModuleT == void)) + return; + else + return ModuleT.init; + } + DeclT visitDecl(Decl decl) { switch(decl.declType)