Mercurial > projects > dang
annotate ast/Stmt.d @ 5:2c5a8f4c254a
Added very simple if support.
* No else
* Still no logical operators, always tests != 0
author | Anders Halager <halager@gmail.com> |
---|---|
date | Fri, 18 Apr 2008 11:46:00 +0200 |
parents | 2168f4cb73f1 |
children | 642c6a998fd9 |
rev | line source |
---|---|
1 | 1 module ast.Stmt; |
2 | |
3 import ast.Exp, | |
4 ast.Decl; | |
5 | |
6 import sema.SymbolTable; | |
7 | |
8 enum StmtType | |
9 { | |
10 Stmt, | |
11 Decl, | |
12 Exp, | |
13 Return, | |
5
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
14 If, |
1 | 15 } |
16 | |
17 class Stmt | |
18 { | |
19 this(StmtType stmtType = StmtType.Stmt) | |
20 { | |
21 this.stmtType = stmtType; | |
22 } | |
23 | |
24 StmtType stmtType; | |
25 Scope env; | |
26 } | |
27 | |
28 class ReturnStmt : Stmt | |
29 { | |
30 this() | |
31 { | |
32 super(StmtType.Return); | |
33 } | |
34 | |
35 public Exp exp; | |
36 } | |
37 | |
38 class DeclStmt : Stmt | |
39 { | |
40 this(Decl decl) | |
41 { | |
42 super(StmtType.Decl); | |
43 this.decl = decl; | |
44 } | |
45 | |
46 public Decl decl; | |
47 } | |
48 | |
49 class ExpStmt : Stmt | |
50 { | |
51 this(Exp exp) | |
52 { | |
53 super(StmtType.Exp); | |
54 this.exp = exp; | |
55 } | |
56 | |
57 public Exp exp; | |
58 } | |
5
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
59 |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
60 class IfStmt : Stmt |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
61 { |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
62 this(Exp cond, Stmt[] then) |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
63 { |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
64 super(StmtType.If); |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
65 this.cond = cond; |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
66 this.then = then; |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
67 } |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
68 |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
69 Exp cond; |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
70 Stmt[] then; |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
71 } |
2c5a8f4c254a
Added very simple if support.
Anders Halager <halager@gmail.com>
parents:
1
diff
changeset
|
72 |