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
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,
5
2c5a8f4c254a Added very simple if support.
Anders Halager <halager@gmail.com>
parents: 1
diff changeset
14 If,
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 Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
18 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
19 this(StmtType stmtType = StmtType.Stmt)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
20 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
21 this.stmtType = stmtType;
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 StmtType stmtType;
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 ReturnStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
29 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
30 this()
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
31 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
32 super(StmtType.Return);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
33 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
34
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
35 public Exp exp;
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 class DeclStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
39 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
40 this(Decl decl)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
41 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
42 super(StmtType.Decl);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
43 this.decl = decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
44 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
45
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
46 public Decl decl;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
47 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
48
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
49 class ExpStmt : Stmt
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
50 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
51 this(Exp exp)
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
52 {
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
53 super(StmtType.Exp);
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
54 this.exp = exp;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
55 }
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
56
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
57 public Exp exp;
2168f4cb73f1 First push
johnsen@johnsen-desktop
parents:
diff changeset
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