Mercurial > projects > dang
comparison sema/ScopeBuilder.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 | 621cedba53ea |
children | 857f0d530789 |
comparison
equal
deleted
inserted
replaced
93:621cedba53ea | 94:48bb2287c035 |
---|---|
9 import sema.Visitor, | 9 import sema.Visitor, |
10 basic.SmallArray; | 10 basic.SmallArray; |
11 | 11 |
12 class ForwardReference : Visitor!(void) | 12 class ForwardReference : Visitor!(void) |
13 { | 13 { |
14 override void visit(Decl[] decls) | |
15 { | |
16 foreach (decl; decls) | |
17 visitDecl(decl); | |
18 } | |
19 | |
20 override void visitFuncDecl(FuncDecl d) | 14 override void visitFuncDecl(FuncDecl d) |
21 { | 15 { |
22 visitExp(d.returnType); | 16 visitExp(d.returnType); |
23 visitExp(d.identifier); | 17 visitExp(d.identifier); |
24 foreach (arg; d.funcArgs) | 18 foreach (arg; d.funcArgs) |
76 table[0].types["uint"] = DType.UInt; | 70 table[0].types["uint"] = DType.UInt; |
77 table[0].types["long"] = DType.Long; | 71 table[0].types["long"] = DType.Long; |
78 table[0].types["ulong"] = DType.ULong; | 72 table[0].types["ulong"] = DType.ULong; |
79 } | 73 } |
80 | 74 |
81 override void visit(Decl[] decls) | 75 override void visit(Module m) |
82 { | 76 { |
83 foreach (decl; decls) | 77 visitModule(m); |
84 visitDecl(decl); | |
85 auto fr = new ForwardReference(); | 78 auto fr = new ForwardReference(); |
86 fr.visit(decls); | 79 fr.visit(m); |
87 } | 80 } |
88 | 81 |
89 override void visitDecl(Decl d) | 82 override void visitDecl(Decl d) |
90 { | 83 { |
91 d.env = current(); | 84 d.env = current(); |