annotate ast/Stmt.d @ 1:2168f4cb73f1

First push
author johnsen@johnsen-desktop
date Fri, 18 Apr 2008 02:01:38 +0200
parents
children 2c5a8f4c254a
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.Stmt;
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.Decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
5
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
6 import sema.SymbolTable;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
7
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
8 enum StmtType
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
9 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
10 Stmt,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
11 Decl,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
12 Exp,
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
13 Return,
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 Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
17 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
18 this(StmtType stmtType = StmtType.Stmt)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
19 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
20 this.stmtType = stmtType;
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 StmtType stmtType;
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 ReturnStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
28 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
29 this()
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
30 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
31 super(StmtType.Return);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
32 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
33
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
34 public Exp exp;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
35 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
36
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
37 class DeclStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
38 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
39 this(Decl decl)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
40 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
41 super(StmtType.Decl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
42 this.decl = decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
43 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
44
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
45 public Decl decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
46 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
47
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
48 class ExpStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
49 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
50 this(Exp exp)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
51 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
52 super(StmtType.Exp);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
53 this.exp = exp;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
54 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
55
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
56 public Exp exp;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
57 }