annotate ast/Decl.d @ 22:e331e4e816e4

now handling structs to some extend
author johnsen@johnsen-laptop
date Fri, 18 Apr 2008 23:45:45 +0200
parents 2168f4cb73f1
children 495188f9078e
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,
22
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
14 StructDecl,
1
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
15 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
16
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
17 class Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
18 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
19 this(DeclType declType)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
20 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
21 this.declType = declType;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
22 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
23
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
24 DeclType declType;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
25 Scope env;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
26 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
27
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
28 class VarDecl : Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
29 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
30 this(Identifier type, Identifier identifier,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
31 Exp e = null)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
32 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
33 super(DeclType.VarDecl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
34 this.type = type;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
35 this.identifier = identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
36 this.init = e;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
37 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
38
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
39 Identifier type, identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
40 Exp init;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
41 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
42
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
43 class FuncDecl : Decl
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
44 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
45 this(Identifier type, Identifier identifier,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
46 VarDecl[] funcArgs, Stmt[] statements)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
47 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
48 super(DeclType.FuncDecl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
49 this.type = type;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
50 this.identifier = identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
51 this.funcArgs = funcArgs;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
52 this.statements = statements;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
53 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
54
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
55 Identifier type, identifier;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
56 VarDecl[] funcArgs;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
57 Stmt[] statements;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
58 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
59
22
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
60 class StructDecl : Decl
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
61 {
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
62 this(Identifier identifier,
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
63 VarDecl[] vars)
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
64 {
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
65 super(DeclType.StructDecl);
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
66 this.identifier = identifier;
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
67 this.vars = vars;
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
68 }
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
69
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
70 Identifier identifier;
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
71 VarDecl[] vars;
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
72 }
e331e4e816e4 now handling structs to some extend
johnsen@johnsen-laptop
parents: 1
diff changeset
73