annotate trunk/src/Statements.d @ 283:df657dd98ffa

- Fix: added member type to VariableDeclaration. - Changed class IfStatement. parseIfStatement() parses a DeclarationStatement if the condition is not an expression.
author aziz
date Tue, 07 Aug 2007 14:56:02 +0000
parents e5a6b56c7716
children 104343e0f097
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
102
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
1 /++
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
2 Author: Aziz Köksal
249
32d354584b28 - Upgraded license notices to GPL3.
aziz
parents: 245
diff changeset
3 License: GPL3
102
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
4 +/
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
5 module Statements;
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 238
diff changeset
6 import SyntaxTree;
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
7 import Expressions;
185
35c93b776be0 - Added code for parsing MixinStatements.
aziz
parents: 184
diff changeset
8 import Declarations;
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
9 import Types;
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
10 import Token;
102
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
11
277
38a68e534a3b - Made classes Declaration, Expression and Statement abstract.
aziz
parents: 275
diff changeset
12 abstract class Statement : Node
102
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
13 {
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 238
diff changeset
14 this()
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 238
diff changeset
15 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
16 super(NodeCategory.Statement);
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 238
diff changeset
17 }
102
6e8b67ae15b7 - Added modules Declarations and Statements.
aziz
parents:
diff changeset
18 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
19
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
20 class Statements : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
21 {
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
22 Statement[] ss;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
23 void opCatAssign(Statement s)
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
24 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
25 mixin(set_kind);
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
26 this.ss ~= s;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
27 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
28 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
29
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
30 class IllegalStatement : Statement
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
31 {
250
1b9494591ad6 - Changed type of member tok to Token*.
aziz
parents: 249
diff changeset
32 Token* tok;
1b9494591ad6 - Changed type of member tok to Token*.
aziz
parents: 249
diff changeset
33 this(Token* tok)
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
34 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
35 mixin(set_kind);
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
36 this.tok = tok;
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
37 }
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
38 }
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
39
216
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
40 class EmptyStatement : Statement
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
41 {
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
42 this()
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
43 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
44 mixin(set_kind);
216
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
45 }
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
46 }
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
47
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
48 class FunctionBody : Node
192
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
49 {
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
50 Statement funcBody, inBody, outBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
51 Token* outIdent;
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
52 this()
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
53 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
54 super(NodeCategory.Other);
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
55 mixin(set_kind);
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
56 }
192
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
57 }
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
58
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
59 class ScopeStatement : Statement
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
60 {
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
61 Statement s;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
62 this(Statement s)
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
63 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
64 mixin(set_kind);
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
65 this.s = s;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
66 }
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
67 }
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
68
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
69 class LabeledStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
70 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
71 Token* label;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
72 Statement s;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
73 this(Token* label, Statement s)
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
74 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
75 mixin(set_kind);
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
76 this.label = label;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
77 this.s = s;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
78 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
79 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
80
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
81 class ExpressionStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
82 {
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
83 Expression expression;
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
84 this(Expression expression)
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
85 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
86 mixin(set_kind);
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
87 this.expression = expression;
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
88 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
89 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
90
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
91 class DeclarationStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
92 {
188
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
93 Declaration declaration;
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
94 this(Declaration declaration)
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
95 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
96 mixin(set_kind);
188
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
97 this.declaration = declaration;
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
98 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
99 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
100
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
101 class IfStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
102 {
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
103 Statement variable; // AutoDeclaration or VariableDeclaration
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
104 Expression condition;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
105 Statement ifBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
106 Statement elseBody;
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
107 this(Statement variable, Expression condition, Statement ifBody, Statement elseBody)
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
108 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
109 mixin(set_kind);
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
110 this.variable = variable;
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
111 this.condition = condition;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
112 this.ifBody = ifBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
113 this.elseBody = elseBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
114 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
115 }
261
966756c5d5d3 - Added begin variables and calls to set().
aziz
parents: 256
diff changeset
116 /+
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
117 class ConditionalStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
118 {
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
119
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
120 }
261
966756c5d5d3 - Added begin variables and calls to set().
aziz
parents: 256
diff changeset
121 +/
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
122 class WhileStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
123 {
164
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
124 Expression condition;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
125 Statement whileBody;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
126 this(Expression condition, Statement whileBody)
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
127 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
128 mixin(set_kind);
164
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
129 this.condition = condition;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
130 this.whileBody = whileBody;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
131 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
132 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
133
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
134 class DoWhileStatement : Statement
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
135 {
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
136 Expression condition;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
137 Statement doBody;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
138 this(Expression condition, Statement doBody)
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
139 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
140 mixin(set_kind);
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
141 this.condition = condition;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
142 this.doBody = doBody;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
143 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
144 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
145
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
146 class ForStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
147 {
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
148 Statement init;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
149 Expression condition, increment;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
150 Statement forBody;
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
151
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
152 this(Statement init, Expression condition, Expression increment, Statement forBody)
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
153 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
154 mixin(set_kind);
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
155 this.init = init;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
156 this.condition = condition;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
157 this.increment = increment;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
158 this.forBody = forBody;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
159 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
160 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
162 class ForeachStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
163 {
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
164 TOK tok;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
165 Parameters params;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
166 Expression aggregate;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
167 Statement forBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
168
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
169 this(TOK tok, Parameters params, Expression aggregate, Statement forBody)
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
170 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
171 mixin(set_kind);
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
172 this.tok = tok;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
173 this.params = params;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
174 this.aggregate = aggregate;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
175 this.forBody = forBody;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
176 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
177 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
178
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
179 version(D2)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
180 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
181 class ForeachRangeStatement : Statement
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
182 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
183 TOK tok;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
184 Parameters params;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
185 Expression lower, upper;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
186 Statement forBody;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
187
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
188 this(TOK tok, Parameters params, Expression lower, Expression upper, Statement forBody)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
189 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
190 mixin(set_kind);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
191 this.tok = tok;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
192 this.params = params;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
193 this.lower = lower;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
194 this.upper = upper;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
195 this.forBody = forBody;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
196 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
197 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
198 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
199
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
200 class SwitchStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
201 {
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
202 Expression condition;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
203 Statement switchBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
204
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
205 this(Expression condition, Statement switchBody)
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
206 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
207 mixin(set_kind);
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
208 this.condition = condition;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
209 this.switchBody = switchBody;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
210 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
211 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
212
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
213 class CaseStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
214 {
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
215 Expression[] values;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
216 Statement caseBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
217
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
218 this(Expression[] values, Statement caseBody)
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
219 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
220 mixin(set_kind);
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
221 this.values = values;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
222 this.caseBody = caseBody;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
223 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
224 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
225
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
226 class DefaultStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
227 {
172
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
228 Statement defaultBody;
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
229 this(Statement defaultBody)
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
230 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
231 mixin(set_kind);
172
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
232 this.defaultBody = defaultBody;
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
233 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
234 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
235
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
236 class ContinueStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
237 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
238 Token* ident;
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
239 this(Token* ident)
173
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
240 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
241 mixin(set_kind);
173
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
242 this.ident = ident;
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
243 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
244 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
245
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
246 class BreakStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
247 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
248 Token* ident;
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
249 this(Token* ident)
174
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
250 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
251 mixin(set_kind);
174
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
252 this.ident = ident;
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
253 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
254 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
255
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
256 class ReturnStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
257 {
175
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
258 Expression expr;
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
259 this(Expression expr)
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
260 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
261 mixin(set_kind);
175
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
262 this.expr = expr;
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
263 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
264 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
265
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
266 class GotoStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
267 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
268 Token* ident;
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
269 Expression caseExpr;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
270 this(Token* ident, Expression caseExpr)
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
271 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
272 mixin(set_kind);
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
273 this.ident = ident;
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
274 this.caseExpr = caseExpr;
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
275 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
276 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
277
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
278 class WithStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
279 {
177
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
280 Expression expr;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
281 Statement withBody;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
282 this(Expression expr, Statement withBody)
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
283 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
284 mixin(set_kind);
177
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
285 this.expr = expr;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
286 this.withBody = withBody;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
287 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
288 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
289
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
290 class SynchronizedStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
291 {
178
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
292 Expression expr;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
293 Statement syncBody;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
294 this(Expression expr, Statement withBody)
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
295 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
296 mixin(set_kind);
178
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
297 this.expr = expr;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
298 this.syncBody = syncBody;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
299 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
300 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
301
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
302 class TryStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
303 {
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
304 Statement tryBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
305 CatchBody[] catchBodies;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
306 FinallyBody finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
307 this(Statement tryBody, CatchBody[] catchBodies, FinallyBody finallyBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
308 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
309 mixin(set_kind);
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
310 this.tryBody = tryBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
311 this.catchBodies = catchBodies;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
312 this.finallyBody = finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
313 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
314 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
315
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
316 class CatchBody : Statement
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
317 {
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
318 Parameter param;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
319 Statement catchBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
320 this(Parameter param, Statement catchBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
321 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
322 mixin(set_kind);
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
323 this.param = param;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
324 this.catchBody = catchBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
325 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
326 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
327
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
328 class FinallyBody : Statement
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
329 {
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
330 Statement finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
331 this(Statement finallyBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
332 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
333 mixin(set_kind);
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
334 this.finallyBody = finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
335 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
336 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
337
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
338 class ScopeGuardStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
339 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
340 Token* condition;
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
341 Statement scopeBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
342 this(Token* condition, Statement scopeBody)
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
343 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
344 mixin(set_kind);
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
345 this.condition = condition;
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
346 this.scopeBody = scopeBody;
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
347 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
348 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
349
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
350 class ThrowStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
351 {
180
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
352 Expression expr;
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
353 this(Expression expr)
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
354 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
355 mixin(set_kind);
180
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
356 this.expr = expr;
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
357 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
358 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
359
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
360 class VolatileStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
361 {
182
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
362 Statement volatileBody;
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
363 this(Statement volatileBody)
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
364 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
365 mixin(set_kind);
182
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
366 this.volatileBody = volatileBody;
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
367 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
368 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
369
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
370 class AsmStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
371 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
372 this()
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
373 {
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
374 mixin(set_kind);
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
375 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
376 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
377
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
378 class PragmaStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
379 {
245
93d37f874658 - Changed type of pragma identifier to Token*.
aziz
parents: 240
diff changeset
380 Token* ident;
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
381 Expression[] args;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
382 Statement pragmaBody;
245
93d37f874658 - Changed type of pragma identifier to Token*.
aziz
parents: 240
diff changeset
383 this(Token* ident, Expression[] args, Statement pragmaBody)
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
384 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
385 mixin(set_kind);
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
386 this.ident = ident;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
387 this.args = args;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
388 this.pragmaBody = pragmaBody;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
389 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
390 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
391
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
392 class MixinStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
393 {
256
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
394 Expression[] templateIdent;
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
395 Token* mixinIdent;
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
396 this(Expression[] templateIdent, Token* mixinIdent)
185
35c93b776be0 - Added code for parsing MixinStatements.
aziz
parents: 184
diff changeset
397 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
398 mixin(set_kind);
256
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
399 this.templateIdent = templateIdent;
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
400 this.mixinIdent = mixinIdent;
185
35c93b776be0 - Added code for parsing MixinStatements.
aziz
parents: 184
diff changeset
401 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
402 }
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
403
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
404 class StaticIfStatement : Statement
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
405 {
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
406 Expression condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
407 Statement ifBody, elseBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
408 this(Expression condition, Statement ifBody, Statement elseBody)
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
409 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
410 mixin(set_kind);
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
411 this.condition = condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
412 this.ifBody = ifBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
413 this.elseBody = elseBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
414 }
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
415 }
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
416
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
417 class StaticAssertStatement : Statement
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
418 {
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
419 Expression condition, message;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
420 this(Expression condition, Expression message)
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
421 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
422 mixin(set_kind);
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
423 this.condition = condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
424 this.message = message;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
425 }
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
426 }
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
427
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
428 class DebugStatement : Statement
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
429 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
430 Token* cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
431 Statement debugBody, elseBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
432 this(Token* cond, Statement debugBody, Statement elseBody)
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
433 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
434 mixin(set_kind);
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
435 this.cond = cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
436 this.debugBody = debugBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
437 this.elseBody = elseBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
438 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
439 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
440
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
441 class VersionStatement : Statement
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
442 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
443 Token* cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
444 Statement versionBody, elseBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
445 this(Token* cond, Statement versionBody, Statement elseBody)
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
446 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
447 mixin(set_kind);
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
448 this.cond = cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
449 this.versionBody = versionBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
450 this.elseBody = elseBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
451 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
452 }
201
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
453
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
454 class AttributeStatement : Statement
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
455 {
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
456 TOK tok;
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
457 Statement statement;
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
458 this(TOK tok, Statement statement)
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
459 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
460 mixin(set_kind);
201
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
461 this.tok = tok;
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
462 this.statement = statement;
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
463 }
70715b9e2109 - Implemented parseAttributeStatement().
aziz
parents: 192
diff changeset
464 }
238
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
465
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
466 class ExternStatement : AttributeStatement
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
467 {
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
468 Linkage linkage;
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
469 this(Linkage linkage, Statement statement)
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
470 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
471 mixin(set_kind);
238
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
472 super(TOK.Extern, statement);
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
473 this.linkage = linkage;
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
474 }
f3c6c15961bb - Added method peekNext(). Replaced code that used lx.peek() with peekNext().
aziz
parents: 216
diff changeset
475 }