Mercurial > projects > dil
annotate src/dil/ast/Statements.d @ 839:4063da6f3edd default tip
Refactored the config file and how it is loaded.
author | Aziz K?ksal <aziz.koeksal@gmail.com> |
---|---|
date | Thu, 21 Aug 2008 17:51:04 +0200 |
parents | bcb74c9b895c |
children |
rev | line source |
---|---|
102 | 1 /++ |
2 Author: Aziz Köksal | |
249 | 3 License: GPL3 |
102 | 4 +/ |
587
7d0ba0c93e95
Moved dil.Statements to dil.ast.Statements.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
586
diff
changeset
|
5 module dil.ast.Statements; |
580
fa6d3c52757d
Moved SyntaxTree.d to new package 'ast'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
563
diff
changeset
|
6 |
657
3bd9660f71ac
Moved class Statement to its own module.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
648
diff
changeset
|
7 public import dil.ast.Statement; |
580
fa6d3c52757d
Moved SyntaxTree.d to new package 'ast'.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
563
diff
changeset
|
8 import dil.ast.Node; |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
9 import dil.ast.Expression; |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
10 import dil.ast.Declaration; |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
11 import dil.ast.Type; |
608
fac9e8b258fc
Moved dil.ast.Parameter to dil.ast.Parameters.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
604
diff
changeset
|
12 import dil.ast.Parameters; |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
13 import dil.ast.NodeCopier; |
601
9f96fd51cb41
Moved dil.IdTable to dil.lexer.IdTable.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
596
diff
changeset
|
14 import dil.lexer.IdTable; |
102 | 15 |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
16 class CompoundStatement : Statement |
161 | 17 { |
294
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
18 this() |
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
19 { |
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
20 mixin(set_kind); |
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
21 } |
299
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
22 |
161 | 23 void opCatAssign(Statement s) |
24 { | |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
25 addChild(s); |
161 | 26 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
27 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
28 Statement[] stmnts() |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
29 { |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
30 return cast(Statement[])this.children; |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
31 } |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
32 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
33 void stmnts(Statement[] stmnts) |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
34 { |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
35 this.children = stmnts; |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
36 } |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
37 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
38 mixin(copyMethod); |
161 | 39 } |
40 | |
206 | 41 class IllegalStatement : Statement |
42 { | |
496
5a607597dc22
Improved error recovery in the Parser.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
43 this() |
206 | 44 { |
278 | 45 mixin(set_kind); |
206 | 46 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
47 mixin(copyMethod); |
206 | 48 } |
49 | |
216 | 50 class EmptyStatement : Statement |
51 { | |
52 this() | |
53 { | |
278 | 54 mixin(set_kind); |
216 | 55 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
56 mixin(copyMethod); |
216 | 57 } |
58 | |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
59 class FuncBodyStatement : Statement |
192 | 60 { |
61 Statement funcBody, inBody, outBody; | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
62 Identifier* outIdent; |
268 | 63 this() |
64 { | |
299
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
65 mixin(set_kind); |
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
66 } |
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
67 |
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
68 void finishConstruction() |
559d5d62e0c1
- Added checks for null before adding member to Node.children.
aziz
parents:
294
diff
changeset
|
69 { |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
70 addOptChild(funcBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
71 addOptChild(inBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
72 addOptChild(outBody); |
268 | 73 } |
737
f88b5285b86b
Implemented DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
74 |
f88b5285b86b
Implemented DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
75 bool isEmpty() |
f88b5285b86b
Implemented DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
76 { |
f88b5285b86b
Implemented DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
77 return funcBody is null; |
f88b5285b86b
Implemented DDocEmitter.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
682
diff
changeset
|
78 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
79 |
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
80 mixin(copyMethod); |
192 | 81 } |
82 | |
162 | 83 class ScopeStatement : Statement |
84 { | |
85 Statement s; | |
86 this(Statement s) | |
87 { | |
278 | 88 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
89 addChild(s); |
162 | 90 this.s = s; |
91 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
92 mixin(copyMethod); |
162 | 93 } |
94 | |
161 | 95 class LabeledStatement : Statement |
96 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
97 Identifier* label; |
161 | 98 Statement s; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
99 this(Identifier* label, Statement s) |
161 | 100 { |
278 | 101 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
102 addChild(s); |
161 | 103 this.label = label; |
104 this.s = s; | |
105 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
106 mixin(copyMethod); |
161 | 107 } |
108 | |
109 class ExpressionStatement : Statement | |
110 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
111 Expression e; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
112 this(Expression e) |
187 | 113 { |
278 | 114 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
115 addChild(e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
116 this.e = e; |
187 | 117 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
118 mixin(copyMethod); |
161 | 119 } |
120 | |
121 class DeclarationStatement : Statement | |
122 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
123 Declaration decl; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
124 this(Declaration decl) |
188 | 125 { |
278 | 126 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
127 addChild(decl); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
128 this.decl = decl; |
188 | 129 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
130 mixin(copyMethod); |
161 | 131 } |
132 | |
133 class IfStatement : Statement | |
134 { | |
283 | 135 Statement variable; // AutoDeclaration or VariableDeclaration |
162 | 136 Expression condition; |
137 Statement ifBody; | |
138 Statement elseBody; | |
283 | 139 this(Statement variable, Expression condition, Statement ifBody, Statement elseBody) |
162 | 140 { |
278 | 141 mixin(set_kind); |
294
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
142 if (variable) |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
143 addChild(variable); |
294
1ea6a6d97ec6
- Assigning to Node.children in several constructors that inherit from Node.
aziz
parents:
285
diff
changeset
|
144 else |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
145 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
146 addChild(ifBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
147 addOptChild(elseBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
148 |
283 | 149 this.variable = variable; |
162 | 150 this.condition = condition; |
151 this.ifBody = ifBody; | |
152 this.elseBody = elseBody; | |
153 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
154 mixin(copyMethod); |
161 | 155 } |
156 | |
157 class WhileStatement : Statement | |
158 { | |
164 | 159 Expression condition; |
160 Statement whileBody; | |
161 this(Expression condition, Statement whileBody) | |
162 { | |
278 | 163 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
164 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
165 addChild(whileBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
166 |
164 | 167 this.condition = condition; |
168 this.whileBody = whileBody; | |
169 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
170 mixin(copyMethod); |
161 | 171 } |
172 | |
165 | 173 class DoWhileStatement : Statement |
161 | 174 { |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
175 Statement doBody; |
165 | 176 Expression condition; |
177 this(Expression condition, Statement doBody) | |
178 { | |
278 | 179 mixin(set_kind); |
662
73bac90f90b2
Fixed visit() method for Statements in DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
660
diff
changeset
|
180 addChild(doBody); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
181 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
182 |
165 | 183 this.condition = condition; |
184 this.doBody = doBody; | |
185 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
186 mixin(copyMethod); |
161 | 187 } |
188 | |
189 class ForStatement : Statement | |
190 { | |
166 | 191 Statement init; |
192 Expression condition, increment; | |
193 Statement forBody; | |
169 | 194 |
166 | 195 this(Statement init, Expression condition, Expression increment, Statement forBody) |
196 { | |
278 | 197 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
198 addOptChild(init); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
199 addOptChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
200 addOptChild(increment); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
201 addChild(forBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
202 |
166 | 203 this.init = init; |
204 this.condition = condition; | |
205 this.increment = increment; | |
206 this.forBody = forBody; | |
207 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
208 mixin(copyMethod); |
161 | 209 } |
210 | |
211 class ForeachStatement : Statement | |
212 { | |
169 | 213 TOK tok; |
214 Parameters params; | |
215 Expression aggregate; | |
216 Statement forBody; | |
161 | 217 |
169 | 218 this(TOK tok, Parameters params, Expression aggregate, Statement forBody) |
219 { | |
278 | 220 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
221 addChildren([cast(Node)params, aggregate, forBody]); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
222 |
169 | 223 this.tok = tok; |
224 this.params = params; | |
225 this.aggregate = aggregate; | |
226 this.forBody = forBody; | |
227 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
228 mixin(copyMethod); |
161 | 229 } |
230 | |
635 | 231 // version(D2) |
232 // { | |
269 | 233 class ForeachRangeStatement : Statement |
234 { | |
235 TOK tok; | |
236 Parameters params; | |
237 Expression lower, upper; | |
238 Statement forBody; | |
239 | |
240 this(TOK tok, Parameters params, Expression lower, Expression upper, Statement forBody) | |
241 { | |
278 | 242 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
243 addChildren([cast(Node)params, lower, upper, forBody]); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
244 |
269 | 245 this.tok = tok; |
246 this.params = params; | |
247 this.lower = lower; | |
248 this.upper = upper; | |
249 this.forBody = forBody; | |
250 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
251 mixin(copyMethod); |
269 | 252 } |
635 | 253 // } |
269 | 254 |
161 | 255 class SwitchStatement : Statement |
256 { | |
170 | 257 Expression condition; |
258 Statement switchBody; | |
161 | 259 |
170 | 260 this(Expression condition, Statement switchBody) |
261 { | |
278 | 262 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
263 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
264 addChild(switchBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
265 |
170 | 266 this.condition = condition; |
267 this.switchBody = switchBody; | |
268 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
269 mixin(copyMethod); |
161 | 270 } |
271 | |
272 class CaseStatement : Statement | |
273 { | |
171 | 274 Expression[] values; |
275 Statement caseBody; | |
161 | 276 |
171 | 277 this(Expression[] values, Statement caseBody) |
278 { | |
278 | 279 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
280 addChildren(values); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
281 addChild(caseBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
282 |
171 | 283 this.values = values; |
284 this.caseBody = caseBody; | |
285 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
286 mixin(copyMethod); |
161 | 287 } |
288 | |
289 class DefaultStatement : Statement | |
290 { | |
172 | 291 Statement defaultBody; |
292 this(Statement defaultBody) | |
293 { | |
278 | 294 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
295 addChild(defaultBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
296 |
172 | 297 this.defaultBody = defaultBody; |
298 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
299 mixin(copyMethod); |
161 | 300 } |
301 | |
302 class ContinueStatement : Statement | |
303 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
304 Identifier* ident; |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
305 this(Identifier* ident) |
173 | 306 { |
278 | 307 mixin(set_kind); |
173 | 308 this.ident = ident; |
309 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
310 mixin(copyMethod); |
161 | 311 } |
312 | |
313 class BreakStatement : Statement | |
314 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
315 Identifier* ident; |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
316 this(Identifier* ident) |
174 | 317 { |
278 | 318 mixin(set_kind); |
174 | 319 this.ident = ident; |
320 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
321 mixin(copyMethod); |
161 | 322 } |
323 | |
324 class ReturnStatement : Statement | |
325 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
326 Expression e; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
327 this(Expression e) |
175 | 328 { |
278 | 329 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
330 addOptChild(e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
331 this.e = e; |
175 | 332 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
333 mixin(copyMethod); |
161 | 334 } |
335 | |
336 class GotoStatement : Statement | |
337 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
338 Identifier* ident; |
176 | 339 Expression caseExpr; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
340 this(Identifier* ident, Expression caseExpr) |
176 | 341 { |
278 | 342 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
343 addOptChild(caseExpr); |
176 | 344 this.ident = ident; |
345 this.caseExpr = caseExpr; | |
346 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
347 mixin(copyMethod); |
161 | 348 } |
349 | |
350 class WithStatement : Statement | |
351 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
352 Expression e; |
177 | 353 Statement withBody; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
354 this(Expression e, Statement withBody) |
177 | 355 { |
278 | 356 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
357 addChild(e); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
358 addChild(withBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
359 |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
360 this.e = e; |
177 | 361 this.withBody = withBody; |
362 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
363 mixin(copyMethod); |
161 | 364 } |
365 | |
366 class SynchronizedStatement : Statement | |
367 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
368 Expression e; |
178 | 369 Statement syncBody; |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
370 this(Expression e, Statement syncBody) |
178 | 371 { |
278 | 372 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
373 addOptChild(e); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
374 addChild(syncBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
375 |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
376 this.e = e; |
178 | 377 this.syncBody = syncBody; |
378 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
379 mixin(copyMethod); |
161 | 380 } |
381 | |
382 class TryStatement : Statement | |
383 { | |
179 | 384 Statement tryBody; |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
385 CatchStatement[] catchBodies; |
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
386 FinallyStatement finallyBody; |
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
387 this(Statement tryBody, CatchStatement[] catchBodies, FinallyStatement finallyBody) |
179 | 388 { |
278 | 389 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
390 addChild(tryBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
391 addOptChildren(catchBodies); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
392 addOptChild(finallyBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
393 |
179 | 394 this.tryBody = tryBody; |
395 this.catchBodies = catchBodies; | |
396 this.finallyBody = finallyBody; | |
397 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
398 mixin(copyMethod); |
179 | 399 } |
161 | 400 |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
401 class CatchStatement : Statement |
179 | 402 { |
403 Parameter param; | |
404 Statement catchBody; | |
405 this(Parameter param, Statement catchBody) | |
406 { | |
278 | 407 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
408 addOptChild(param); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
409 addChild(catchBody); |
179 | 410 this.param = param; |
411 this.catchBody = catchBody; | |
412 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
413 mixin(copyMethod); |
179 | 414 } |
415 | |
682
7541c64fc423
Renamed FunctionBody, CatchBody and FinallyBody.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
681
diff
changeset
|
416 class FinallyStatement : Statement |
179 | 417 { |
418 Statement finallyBody; | |
419 this(Statement finallyBody) | |
420 { | |
278 | 421 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
422 addChild(finallyBody); |
179 | 423 this.finallyBody = finallyBody; |
424 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
425 mixin(copyMethod); |
161 | 426 } |
427 | |
428 class ScopeGuardStatement : Statement | |
429 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
430 Identifier* condition; |
181 | 431 Statement scopeBody; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
432 this(Identifier* condition, Statement scopeBody) |
181 | 433 { |
278 | 434 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
435 addChild(scopeBody); |
181 | 436 this.condition = condition; |
437 this.scopeBody = scopeBody; | |
438 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
439 mixin(copyMethod); |
161 | 440 } |
441 | |
442 class ThrowStatement : Statement | |
443 { | |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
444 Expression e; |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
445 this(Expression e) |
180 | 446 { |
278 | 447 mixin(set_kind); |
660
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
448 addChild(e); |
085bac570c7e
Implemented class DefaultVisitor.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
658
diff
changeset
|
449 this.e = e; |
180 | 450 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
451 mixin(copyMethod); |
161 | 452 } |
453 | |
454 class VolatileStatement : Statement | |
455 { | |
182 | 456 Statement volatileBody; |
457 this(Statement volatileBody) | |
458 { | |
278 | 459 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
460 addOptChild(volatileBody); |
182 | 461 this.volatileBody = volatileBody; |
462 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
463 mixin(copyMethod); |
161 | 464 } |
465 | |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
466 class AsmBlockStatement : Statement |
161 | 467 { |
680
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
468 CompoundStatement statements; |
6b3e397229c5
Renamed Statements, Declarations and EnumMember.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
662
diff
changeset
|
469 this(CompoundStatement statements) |
278 | 470 { |
471 mixin(set_kind); | |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
472 addChild(statements); |
285 | 473 this.statements = statements; |
474 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
475 mixin(copyMethod); |
285 | 476 } |
477 | |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
478 class AsmStatement : Statement |
285 | 479 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
480 Identifier* ident; |
285 | 481 Expression[] operands; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
482 this(Identifier* ident, Expression[] operands) |
285 | 483 { |
484 mixin(set_kind); | |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
485 addOptChildren(operands); |
285 | 486 this.ident = ident; |
487 this.operands = operands; | |
488 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
489 mixin(copyMethod); |
285 | 490 } |
491 | |
374 | 492 class AsmAlignStatement : Statement |
493 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
494 int number; |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
495 this(int number) |
374 | 496 { |
497 mixin(set_kind); | |
498 this.number = number; | |
499 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
500 mixin(copyMethod); |
374 | 501 } |
502 | |
681
95a3c28c0f64
Renamed AsmStatement->AsmBlockStatement and AsnInstruction->AsmStatement.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
680
diff
changeset
|
503 class IllegalAsmStatement : IllegalStatement |
285 | 504 { |
496
5a607597dc22
Improved error recovery in the Parser.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
495
diff
changeset
|
505 this() |
285 | 506 { |
507 mixin(set_kind); | |
278 | 508 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
509 mixin(copyMethod); |
161 | 510 } |
511 | |
512 class PragmaStatement : Statement | |
513 { | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
514 Identifier* ident; |
184 | 515 Expression[] args; |
516 Statement pragmaBody; | |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
517 this(Identifier* ident, Expression[] args, Statement pragmaBody) |
184 | 518 { |
278 | 519 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
520 addOptChildren(args); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
521 addChild(pragmaBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
522 |
184 | 523 this.ident = ident; |
524 this.args = args; | |
525 this.pragmaBody = pragmaBody; | |
526 } | |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
527 mixin(copyMethod); |
161 | 528 } |
529 | |
530 class MixinStatement : Statement | |
531 { | |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
532 Expression templateExpr; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
533 Identifier* mixinIdent; |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
534 this(Expression templateExpr, Identifier* mixinIdent) |
185 | 535 { |
278 | 536 mixin(set_kind); |
618
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
537 addChild(templateExpr); |
07946b379006
Refactored the way dot expressions are parsed.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
608
diff
changeset
|
538 this.templateExpr = templateExpr; |
256 | 539 this.mixinIdent = mixinIdent; |
185 | 540 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
541 mixin(copyMethod); |
161 | 542 } |
186
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
543 |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
544 class StaticIfStatement : Statement |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
545 { |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
546 Expression condition; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
547 Statement ifBody, elseBody; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
548 this(Expression condition, Statement ifBody, Statement elseBody) |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
549 { |
278 | 550 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
551 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
552 addChild(ifBody); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
553 addOptChild(elseBody); |
186
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
554 this.condition = condition; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
555 this.ifBody = ifBody; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
556 this.elseBody = elseBody; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
557 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
558 mixin(copyMethod); |
186
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
559 } |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
560 |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
561 class StaticAssertStatement : Statement |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
562 { |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
563 Expression condition, message; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
564 this(Expression condition, Expression message) |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
565 { |
278 | 566 mixin(set_kind); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
567 addChild(condition); |
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
568 addOptChild(message); |
186
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
569 this.condition = condition; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
570 this.message = message; |
d4292a5a7b8b
- Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents:
185
diff
changeset
|
571 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
572 mixin(copyMethod); |
187 | 573 } |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
574 |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
575 abstract class ConditionalCompilationStatement : Statement |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
576 { |
264 | 577 Token* cond; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
578 Statement mainBody, elseBody; |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
579 this(Token* cond, Statement mainBody, Statement elseBody) |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
580 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
581 addChild(mainBody); |
489
a7291d3ee9d7
Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
396
diff
changeset
|
582 addOptChild(elseBody); |
264 | 583 this.cond = cond; |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
584 this.mainBody = mainBody; |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
585 this.elseBody = elseBody; |
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
586 } |
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
587 } |
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
588 |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
589 class DebugStatement : ConditionalCompilationStatement |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
590 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
591 this(Token* cond, Statement debugBody, Statement elseBody) |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
592 { |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
593 super(cond, debugBody, elseBody); |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
594 mixin(set_kind); |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
595 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
596 mixin(copyMethod); |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
597 } |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
598 |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
599 class VersionStatement : ConditionalCompilationStatement |
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
600 { |
264 | 601 this(Token* cond, Statement versionBody, Statement elseBody) |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
602 { |
505
3bb94ba21490
Refactored a great amount of code.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
496
diff
changeset
|
603 super(cond, versionBody, elseBody); |
278 | 604 mixin(set_kind); |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
605 } |
791
5fe89bb8cbdd
Implemented syntax tree copying.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents:
737
diff
changeset
|
606 mixin(copyMethod); |
190
d0712601fa47
- Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents:
188
diff
changeset
|
607 } |