annotate trunk/src/dil/Statements.d @ 495:b60450804b6e

Attributes are evaluated during the parsing phase now. Renamed parseDeclarationDefinitionsBlock to parseDeclarationDefinitionsBody. Renamed parseDeclaration to parseVariableOrFunction. Removed class Linkage, renamed parseLinkage to parseLinkageType and modified it so that it returns a value from enum LinkageType. Fix in parseStorageAttribute(): class invariants are recognized now. Modified parseAlignAttribute() so that returns an uint - the alignment size. Removed classes AttributeStatement and ExternStatement. Using Declarations instead in parseAttributeStatement(). Added LinkageType to module Enums. Added StorageClassDeclaration and renamed ExternDeclaration to LinkageDeclaration.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Sat, 08 Dec 2007 22:20:34 +0100
parents a7291d3ee9d7
children 5a607597dc22
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 +/
327
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
5 module dil.Statements;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
6 import dil.SyntaxTree;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
7 import dil.Expressions;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
8 import dil.Declarations;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
9 import dil.Types;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
10 import dil.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 {
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
22 this()
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
23 {
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
24 mixin(set_kind);
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
25 }
299
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
26
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
27 void opCatAssign(Statement s)
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
28 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
29 addChild(s);
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
30 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
31 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
32
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
33 class IllegalStatement : Statement
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
34 {
250
1b9494591ad6 - Changed type of member tok to Token*.
aziz
parents: 249
diff changeset
35 Token* tok;
1b9494591ad6 - Changed type of member tok to Token*.
aziz
parents: 249
diff changeset
36 this(Token* tok)
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
37 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
38 mixin(set_kind);
206
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
39 this.tok = tok;
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
40 }
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
41 }
f9f5c0949a06 - Added method start().
aziz
parents: 201
diff changeset
42
216
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
43 class EmptyStatement : Statement
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
44 {
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
45 this()
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
46 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
47 mixin(set_kind);
216
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
48 }
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
49 }
984d48932bce - Added class EmptyStatement.
aziz
parents: 206
diff changeset
50
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
51 class FunctionBody : Node
192
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
52 {
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
53 Statement funcBody, inBody, outBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
54 Token* outIdent;
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
55 this()
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
56 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
57 super(NodeCategory.Other);
299
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
58 mixin(set_kind);
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
59 }
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
60
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
61 void finishConstruction()
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 294
diff changeset
62 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
63 addOptChild(funcBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
64 addOptChild(inBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
65 addOptChild(outBody);
268
c19b68a4e3db - FunctionBody inherits from Node now.
aziz
parents: 264
diff changeset
66 }
192
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
67 }
5c898f80b436 - Started implementation of parseDeclaration().
aziz
parents: 190
diff changeset
68
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
69 class ScopeStatement : Statement
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
70 {
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
71 Statement s;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
72 this(Statement s)
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
73 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
74 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
75 addChild(s);
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
76 this.s = s;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
77 }
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
78 }
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
79
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
80 class LabeledStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
81 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
82 Token* label;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
83 Statement s;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
84 this(Token* label, Statement s)
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
85 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
86 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
87 addChild(s);
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
88 this.label = label;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
89 this.s = s;
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
90 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
91 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
92
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
93 class ExpressionStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
94 {
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
95 Expression expression;
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
96 this(Expression expression)
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
97 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
98 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
99 addChild(expression);
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
100 this.expression = expression;
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
101 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
102 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
103
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
104 class DeclarationStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
105 {
188
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
106 Declaration declaration;
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
107 this(Declaration declaration)
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
108 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
109 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
110 addChild(declaration);
188
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
111 this.declaration = declaration;
5c6ebf9f60a9 - Added code for parsing DeclarationStatement.
aziz
parents: 187
diff changeset
112 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
113 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
114
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
115 class IfStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
116 {
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
117 Statement variable; // AutoDeclaration or VariableDeclaration
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
118 Expression condition;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
119 Statement ifBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
120 Statement elseBody;
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
121 this(Statement variable, Expression condition, Statement ifBody, Statement elseBody)
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
122 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
123 mixin(set_kind);
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
124 if (variable)
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
125 addChild(variable);
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
126 else
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
127 addChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
128 addChild(ifBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
129 addOptChild(elseBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
130
283
df657dd98ffa - Fix: added member type to VariableDeclaration.
aziz
parents: 278
diff changeset
131 this.variable = variable;
162
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
132 this.condition = condition;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
133 this.ifBody = ifBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
134 this.elseBody = elseBody;
c7b250662c74 - Added class ScopeStatement.
aziz
parents: 161
diff changeset
135 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
136 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
137
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
138 class WhileStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
139 {
164
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
140 Expression condition;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
141 Statement whileBody;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
142 this(Expression condition, Statement whileBody)
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
143 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
144 mixin(set_kind);
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(whileBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
147
164
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
148 this.condition = condition;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
149 this.whileBody = whileBody;
8ec99326752b - Implemented parseWhileStatement().
aziz
parents: 162
diff changeset
150 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
151 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
152
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
153 class DoWhileStatement : Statement
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
154 {
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
155 Expression condition;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
156 Statement doBody;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
157 this(Expression condition, Statement doBody)
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
158 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
159 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
160 addChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
161 addChild(doBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
162
165
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
163 this.condition = condition;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
164 this.doBody = doBody;
797074d143d7 - Implemented parseDoWhileStatement().
aziz
parents: 164
diff changeset
165 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
166 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
167
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
168 class ForStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
169 {
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
170 Statement init;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
171 Expression condition, increment;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
172 Statement forBody;
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
173
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
174 this(Statement init, Expression condition, Expression increment, Statement forBody)
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
175 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
176 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
177 addOptChild(init);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
178 addOptChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
179 addOptChild(increment);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
180 addChild(forBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
181
166
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
182 this.init = init;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
183 this.condition = condition;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
184 this.increment = increment;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
185 this.forBody = forBody;
56334292a29e - Implemented parseForStatement().
aziz
parents: 165
diff changeset
186 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
187 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
188
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
189 class ForeachStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
190 {
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
191 TOK tok;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
192 Parameters params;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
193 Expression aggregate;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
194 Statement forBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
195
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
196 this(TOK tok, Parameters params, Expression aggregate, Statement forBody)
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
197 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
198 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
199 addChildren([cast(Node)params, aggregate, forBody]);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
200
169
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
201 this.tok = tok;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
202 this.params = params;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
203 this.aggregate = aggregate;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
204 this.forBody = forBody;
4666a05dfacf - Implemented parseForeachStatement().
aziz
parents: 166
diff changeset
205 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
206 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
207
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
208 version(D2)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
209 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
210 class ForeachRangeStatement : Statement
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
211 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
212 TOK tok;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
213 Parameters params;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
214 Expression lower, upper;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
215 Statement forBody;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
216
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
217 this(TOK tok, Parameters params, Expression lower, Expression upper, Statement forBody)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
218 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
219 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
220 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
221
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
222 this.tok = tok;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
223 this.params = params;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
224 this.lower = lower;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
225 this.upper = upper;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
226 this.forBody = forBody;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
227 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
228 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
229 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 268
diff changeset
230
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
231 class SwitchStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
232 {
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
233 Expression condition;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
234 Statement switchBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
235
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
236 this(Expression condition, Statement switchBody)
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
237 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
238 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
239 addChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
240 addChild(switchBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
241
170
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
242 this.condition = condition;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
243 this.switchBody = switchBody;
a63696d1c474 - Implemented parseSwitchStatement().
aziz
parents: 169
diff changeset
244 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
245 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
246
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
247 class CaseStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
248 {
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
249 Expression[] values;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
250 Statement caseBody;
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
251
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
252 this(Expression[] values, Statement caseBody)
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
253 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
254 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
255 addChildren(values);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
256 addChild(caseBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
257
171
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
258 this.values = values;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
259 this.caseBody = caseBody;
f1fa9bbdb4cb - Implemented parseCaseStatement().
aziz
parents: 170
diff changeset
260 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
261 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
262
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
263 class DefaultStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
264 {
172
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
265 Statement defaultBody;
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
266 this(Statement defaultBody)
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
267 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
268 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
269 addChild(defaultBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
270
172
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
271 this.defaultBody = defaultBody;
89d4519bd8a1 - Implemented parseDefaultStatement().
aziz
parents: 171
diff changeset
272 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
273 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
274
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
275 class ContinueStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
276 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
277 Token* ident;
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
278 this(Token* ident)
173
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
279 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
280 mixin(set_kind);
173
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
281 this.ident = ident;
c2714ba44350 - Implemented parseContinueStatement().
aziz
parents: 172
diff changeset
282 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
283 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
284
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
285 class BreakStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
286 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
287 Token* ident;
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
288 this(Token* ident)
174
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
289 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
290 mixin(set_kind);
174
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
291 this.ident = ident;
e51c9ee66ea0 - Implemented parseBreakStatement().
aziz
parents: 173
diff changeset
292 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
293 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
294
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
295 class ReturnStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
296 {
175
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
297 Expression expr;
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
298 this(Expression expr)
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
299 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
300 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
301 addOptChild(expr);
175
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
302 this.expr = expr;
522df6f0f230 - Implemented parseReturnStatement().
aziz
parents: 174
diff changeset
303 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
304 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
305
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
306 class GotoStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
307 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
308 Token* ident;
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
309 Expression caseExpr;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
310 this(Token* ident, Expression caseExpr)
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
311 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
312 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
313 addOptChild(caseExpr);
176
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
314 this.ident = ident;
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
315 this.caseExpr = caseExpr;
3071522c0cf0 - Implemented parseGotoStatement().
aziz
parents: 175
diff changeset
316 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
317 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
318
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
319 class WithStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
320 {
177
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
321 Expression expr;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
322 Statement withBody;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
323 this(Expression expr, Statement withBody)
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
324 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
325 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
326 addChild(expr);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
327 addChild(withBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
328
177
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
329 this.expr = expr;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
330 this.withBody = withBody;
504b1b2f7c93 - Implemented parseWithStatement().
aziz
parents: 176
diff changeset
331 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
332 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
333
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
334 class SynchronizedStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
335 {
178
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
336 Expression expr;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
337 Statement syncBody;
396
0a4619735ce9 Applied fixes to Lexer, Parser and other classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 374
diff changeset
338 this(Expression expr, Statement syncBody)
178
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
339 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
340 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
341 addOptChild(expr);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
342 addChild(syncBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
343
178
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
344 this.expr = expr;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
345 this.syncBody = syncBody;
62718b29679e - Implemented parseSynchronizedStatement().
aziz
parents: 177
diff changeset
346 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
347 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
348
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
349 class TryStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
350 {
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
351 Statement tryBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
352 CatchBody[] catchBodies;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
353 FinallyBody finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
354 this(Statement tryBody, CatchBody[] catchBodies, FinallyBody finallyBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
355 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
356 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
357 addChild(tryBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
358 addOptChildren(catchBodies);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
359 addOptChild(finallyBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
360
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
361 this.tryBody = tryBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
362 this.catchBodies = catchBodies;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
363 this.finallyBody = finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
364 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
365 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
366
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
367 class CatchBody : Statement
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
368 {
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
369 Parameter param;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
370 Statement catchBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
371 this(Parameter param, Statement catchBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
372 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
373 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
374 addOptChild(param);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
375 addChild(catchBody);
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
376 this.param = param;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
377 this.catchBody = catchBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
378 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
379 }
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
380
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
381 class FinallyBody : Statement
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
382 {
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
383 Statement finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
384 this(Statement finallyBody)
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
385 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
386 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
387 addChild(finallyBody);
179
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
diff changeset
388 this.finallyBody = finallyBody;
507998c5c1ce - Implemented parseTryStatement().
aziz
parents: 178
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 ScopeGuardStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
393 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
394 Token* condition;
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
395 Statement scopeBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
396 this(Token* condition, Statement scopeBody)
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
397 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
398 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
399 addChild(scopeBody);
181
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
400 this.condition = condition;
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
401 this.scopeBody = scopeBody;
abfd51142477 - Implemented parseScopeGuardStatement().
aziz
parents: 180
diff changeset
402 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
403 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
404
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
405 class ThrowStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
406 {
180
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
407 Expression expr;
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
408 this(Expression expr)
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
409 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
410 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
411 addChild(expr);
180
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
412 this.expr = expr;
d5a67aa578a8 - Implemented parseThrowStatement().
aziz
parents: 179
diff changeset
413 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
414 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
415
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
416 class VolatileStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
417 {
182
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
418 Statement volatileBody;
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
419 this(Statement volatileBody)
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
420 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
421 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
422 addOptChild(volatileBody);
182
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
423 this.volatileBody = volatileBody;
673b355ba0e9 - Implemented parseVolatileStatement().
aziz
parents: 181
diff changeset
424 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
425 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
426
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
427 class AsmStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
428 {
285
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
429 Statements statements;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
430 this(Statements statements)
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
431 {
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
432 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
433 addChild(statements);
285
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
434 this.statements = statements;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
435 }
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
436 }
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
437
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
438 class AsmInstruction : Statement
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
439 {
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
440 Token* ident;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
441 Expression[] operands;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
442 this(Token* ident, Expression[] operands)
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
443 {
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
444 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
445 addOptChildren(operands);
285
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
446 this.ident = ident;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
447 this.operands = operands;
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
448 }
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
449 }
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
450
374
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
451 class AsmAlignStatement : Statement
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
452 {
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
453 Token* number;
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
454 this(Token* number)
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
455 {
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
456 mixin(set_kind);
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
457 this.number = number;
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
458 }
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
459 }
6d22f0b6a674 - Added class AsmAlignStatement.
aziz
parents: 359
diff changeset
460
285
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
461 class IllegalAsmInstruction : IllegalStatement
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
462 {
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
463 this(Token* token)
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
464 {
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
465 super(token);
104343e0f097 - Started implementation of asm statements parser.
aziz
parents: 283
diff changeset
466 mixin(set_kind);
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
467 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
468 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
469
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
470 class PragmaStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
471 {
245
93d37f874658 - Changed type of pragma identifier to Token*.
aziz
parents: 240
diff changeset
472 Token* ident;
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
473 Expression[] args;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
474 Statement pragmaBody;
245
93d37f874658 - Changed type of pragma identifier to Token*.
aziz
parents: 240
diff changeset
475 this(Token* ident, Expression[] args, Statement pragmaBody)
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
476 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
477 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
478 addOptChildren(args);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
479 addChild(pragmaBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
480
184
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
481 this.ident = ident;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
482 this.args = args;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
483 this.pragmaBody = pragmaBody;
30a4c8522b09 - Implemented parsePragmaStatement().
aziz
parents: 182
diff changeset
484 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
485 }
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
486
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
487 class MixinStatement : Statement
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
488 {
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
489 Expression[] templateIdents;
256
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
490 Token* mixinIdent;
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
491 this(Expression[] templateIdents, Token* mixinIdent)
185
35c93b776be0 - Added code for parsing MixinStatements.
aziz
parents: 184
diff changeset
492 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
493 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
494 addChildren(templateIdents);
294
1ea6a6d97ec6 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 285
diff changeset
495 this.templateIdents = templateIdents;
256
8f27920ae17a - Made parseMixinDeclaration() a template.
aziz
parents: 253
diff changeset
496 this.mixinIdent = mixinIdent;
185
35c93b776be0 - Added code for parsing MixinStatements.
aziz
parents: 184
diff changeset
497 }
161
82c5cfc7d6d3 - Started implementation of parsing statements.
aziz
parents: 102
diff changeset
498 }
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
499
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
500 class StaticIfStatement : Statement
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
501 {
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
502 Expression condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
503 Statement ifBody, elseBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
504 this(Expression condition, Statement ifBody, Statement elseBody)
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
505 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
506 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
507 addChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
508 addChild(ifBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
509 addOptChild(elseBody);
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
510 this.condition = condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
511 this.ifBody = ifBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
512 this.elseBody = elseBody;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
513 }
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
514 }
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
515
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
516 class StaticAssertStatement : Statement
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
517 {
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
518 Expression condition, message;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
519 this(Expression condition, Expression message)
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
520 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
521 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
522 addChild(condition);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
523 addOptChild(message);
186
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
524 this.condition = condition;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
525 this.message = message;
d4292a5a7b8b - Implemented parseStaticIfStatement() and parseStaticAssertStatement().
aziz
parents: 185
diff changeset
526 }
187
c977b8a78507 - Added code for parsing ExpressionStatement.
aziz
parents: 186
diff changeset
527 }
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
528
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
529 class DebugStatement : Statement
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
530 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
531 Token* cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
532 Statement debugBody, elseBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
533 this(Token* cond, Statement debugBody, Statement elseBody)
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
534 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
535 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
536 addChild(debugBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
537 addOptChild(elseBody);
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
538 this.cond = cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
539 this.debugBody = debugBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
540 this.elseBody = elseBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
541 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
542 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
543
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
544 class VersionStatement : Statement
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
545 {
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
546 Token* cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
547 Statement versionBody, elseBody;
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
548 this(Token* cond, Statement versionBody, Statement elseBody)
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
549 {
278
e5a6b56c7716 - Moved declarations in enum NodeKind to the top.
aziz
parents: 277
diff changeset
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(versionBody);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
552 addOptChild(elseBody);
264
50cc74026ea8 - Changed some string types to Token*.
aziz
parents: 261
diff changeset
553 this.cond = cond;
190
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
554 this.versionBody = versionBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
555 this.elseBody = elseBody;
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
556 }
d0712601fa47 - Implemented parseDebugStatement() and parseVersionStatement().
aziz
parents: 188
diff changeset
557 }