202
|
1 module ast.Stmt;
|
|
2
|
|
3 /**
|
|
4 The base class for all Statements.
|
|
5 */
|
|
6 class Stmt
|
|
7 {
|
203
|
8 bool isCompundStmt() { return false; }
|
|
9 CompoundStmt asCompoundStmt() { return null; }
|
|
10
|
202
|
11 bool isDeclStmt() { return false; }
|
203
|
12 DeclStmt asDeclStmt() { return null; }
|
|
13
|
202
|
14 bool isExpStmt() { return false; }
|
203
|
15 ExpStmt asExpStmt() { return null; }
|
|
16
|
202
|
17 bool isReturnStmt() { return false; }
|
203
|
18 ReturnStmt asReturnStmt() { return null; }
|
|
19
|
202
|
20 bool isIfStmt() { return false; }
|
203
|
21 IfStmt asIfStmt() { return null; }
|
|
22
|
202
|
23 bool isWhileStmt() { return false; }
|
203
|
24 WhileStmt asWhileStmt() { return null; }
|
|
25
|
202
|
26 bool isForStmt() { return false; }
|
203
|
27 ForStmt asForStmt() { return null; }
|
|
28
|
202
|
29 bool isSwitchStmt() { return false; }
|
203
|
30 SwitchStmt asSwitchStmt() { return null; }
|
|
31
|
202
|
32 bool isForeachStmt() { return false; }
|
203
|
33 ForeachStmt asForeachStmt() { return null; }
|
|
34
|
202
|
35 bool isAssertStmt() { return false; }
|
203
|
36 AssertStmt asAssertStmt() { return null; }
|
202
|
37 }
|
|
38
|
|
39 /**
|
|
40 CompoundStmt
|
|
41 */
|
|
42 class CompoundStmt : Stmt
|
|
43 {
|
|
44 override bool isCompoundStmt() { return true; }
|
203
|
45 override CompoundStmt asCompoundStmt() { return this; }
|
202
|
46 }
|
|
47
|
|
48 /**
|
|
49 DeclStmt
|
|
50 */
|
|
51 class DeclStmt : Stmt
|
|
52 {
|
|
53 override bool isDeclStmt() { return true; }
|
203
|
54 override DeclStmt asDeclStmt() { return this; }
|
202
|
55 }
|
|
56
|
|
57 /**
|
|
58 ExpStmt
|
|
59 */
|
|
60 class ExpStmt : Stmt
|
|
61 {
|
|
62 override bool isExpStmt() { return true; }
|
203
|
63 override ExpStmt asExpStmt() { return this; }
|
202
|
64 }
|
|
65
|
|
66 /**
|
|
67 ReturnStmt
|
|
68 */
|
|
69 class ReturnStmt : Stmt
|
|
70 {
|
|
71 override bool isReturnStmt() { return true; }
|
203
|
72 override ReturnStmt asReturnStmt() { return this; }
|
202
|
73 }
|
|
74
|
|
75 /**
|
|
76 IfStmt
|
|
77 */
|
|
78 class IfStmt : Stmt
|
|
79 {
|
|
80 override bool isIfStmt() { return true; }
|
203
|
81 override IfStmt asIfStmt() { return this; }
|
202
|
82 }
|
|
83
|
|
84 /**
|
|
85 WhileStmt
|
|
86 */
|
|
87 class WhileStmt : Stmt
|
|
88 {
|
|
89 override bool isWhileStmt() { return true; }
|
203
|
90 override WhileStmt asWhileStmt() { return this; }
|
202
|
91 }
|
|
92
|
|
93 /**
|
|
94 ForStmt
|
|
95 */
|
|
96 class ForStmt : Stmt
|
|
97 {
|
|
98 override bool isForStmt() { return true; }
|
203
|
99 override ForStmt asForStmt() { return this; }
|
202
|
100 }
|
|
101
|
|
102 /**
|
|
103 SwitchStmt
|
|
104 */
|
|
105 class SwitchStmt : Stmt
|
|
106 {
|
|
107 override bool isSwitchStmt() { return true; }
|
203
|
108 override SwitchStmt asSwitchStmt() { return this; }
|
202
|
109 }
|
|
110
|
|
111 /**
|
|
112 ForeachStmt
|
|
113 */
|
|
114 class ForeachStmt : Stmt
|
|
115 {
|
|
116 override bool isForeachStmt() { return true; }
|
203
|
117 override ForeachStmt asForeachStmt() { return this; }
|
202
|
118 }
|
|
119
|
|
120 /**
|
|
121 AssertStmt
|
|
122 */
|
|
123 class AssertStmt : Stmt
|
|
124 {
|
|
125 override bool isAssertStmt() { return true; }
|
203
|
126 override AssertStmt asAssertStmt() { return this; }
|
202
|
127 }
|