annotate ast/Decl.d @ 1:2168f4cb73f1

First push
author johnsen@johnsen-desktop
date Fri, 18 Apr 2008 02:01:38 +0200
parents
children e331e4e816e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
1 module ast.Decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
2
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
3 import ast.Exp,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
4 ast.Stmt;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
5
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
6 import lexer.Token;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
7
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
8 import sema.SymbolTable;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
9
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
10 enum DeclType
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
11 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
12 VarDecl,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
13 FuncDecl,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
14 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
15
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
16 class Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
17 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
18 this(DeclType declType)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
19 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
20 this.declType = declType;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
21 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
22
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
23 DeclType declType;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
24 Scope env;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
25 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
26
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
27 class VarDecl : Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
28 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
29 this(Identifier type, Identifier identifier,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
30 Exp e = null)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
31 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
32 super(DeclType.VarDecl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
33 this.type = type;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
34 this.identifier = identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
35 this.init = e;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
36 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
37
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
38 Identifier type, identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
39 Exp init;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
40 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
41
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
42 class FuncDecl : Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
43 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
44 this(Identifier type, Identifier identifier,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
45 VarDecl[] funcArgs, Stmt[] statements)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
46 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
47 super(DeclType.FuncDecl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
48 this.type = type;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
49 this.identifier = identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
50 this.funcArgs = funcArgs;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
51 this.statements = statements;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
52 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
53
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
54 Identifier type, identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
55 VarDecl[] funcArgs;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
56 Stmt[] statements;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
57 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
58