annotate trunk/src/dil/Expressions.d @ 502:4e14cd1b24da

Refactored code and added modules related to tabulated Identifiers. Rearranged members of struct Identifier and added new member ID identID. Moved idTableLookup to module dil.IdTable. Renamed module TokenIDs to TokensEnum. Added member Identifier* ident to struct Token. Changed string switchtes in Parser to integer switches using enum ID.
author Aziz K?ksal <aziz.koeksal@gmail.com>
date Tue, 11 Dec 2007 14:19:30 +0100
parents 47be6bfe39cd
children 3bb94ba21490
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
1 /++
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
2 Author: Aziz Köksal
249
32d354584b28 - Upgraded license notices to GPL3.
aziz
parents: 248
diff changeset
3 License: GPL3
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
4 +/
326
4a7359b88c11 - Added package 'dil' to module declarations.
aziz
parents: 325
diff changeset
5 module dil.Expressions;
327
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.Token;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
8 import dil.Types;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
9 import dil.Declarations;
a48a987f7515 - Added package dil to import declarations.
aziz
parents: 326
diff changeset
10 import dil.Statements;
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 490
diff changeset
11 import dil.Identifier;
490
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
12 import dil.Scope;
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
13
277
38a68e534a3b - Made classes Declaration, Expression and Statement abstract.
aziz
parents: 276
diff changeset
14 abstract class Expression : Node
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
15 {
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 198
diff changeset
16 this()
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 198
diff changeset
17 {
275
e8de572e4d01 - Changed enum NodeType to NodeCategory.
aziz
parents: 269
diff changeset
18 super(NodeCategory.Expression);
240
deab661906ae - Classes Declaration, Expression, Statement and Type inherit from Node now.
aziz
parents: 198
diff changeset
19 }
490
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
20
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
21 Expression semantic(Scope scop)
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
22 {
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
23 return null;
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
24 }
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
25
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
26 import dil.Messages;
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
27 void error(Scope scop, MID mid)
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
28 {
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
29 scop.error(this.begin, mid);
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
30 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
31 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
32
136
96468715ea79 - Returning EmptyExpression in parsePrimaryExpression() when no token matched.
aziz
parents: 133
diff changeset
33 class EmptyExpression : Expression
96468715ea79 - Returning EmptyExpression in parsePrimaryExpression() when no token matched.
aziz
parents: 133
diff changeset
34 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
35 this()
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
36 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
37 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
38 }
136
96468715ea79 - Returning EmptyExpression in parsePrimaryExpression() when no token matched.
aziz
parents: 133
diff changeset
39 }
96468715ea79 - Returning EmptyExpression in parsePrimaryExpression() when no token matched.
aziz
parents: 133
diff changeset
40
286
0c1a2eba0c91 - Made classes BinaryExpression, CmpExpression and UnaryExpression abstract. Removed mixin(set_kind) from their constructors.
aziz
parents: 277
diff changeset
41 abstract class BinaryExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
42 {
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
43 Expression left, right;
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
44 Token* tok;
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
45 this(Expression left, Expression right, Token* tok)
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
46 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
47 addChildren([left, right]);
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
48 this.left = left;
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
49 this.right = right;
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
50 this.tok = tok;
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
51 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
52 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
53
72
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
54 class CondExpression : BinaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
55 {
72
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
56 Expression condition;
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
57 this(Expression condition, Expression left, Expression right, Token* tok)
72
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
58 {
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
59 super(left, right, tok);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
60 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
61 addChild(condition);
72
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
62 this.condition = condition;
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
63 }
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
64 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
65
72
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
66 class CommaExpression : BinaryExpression
f75e359f939f - Added parseExpression() method.
aziz
parents: 71
diff changeset
67 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
68 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
69 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
70 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
71 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
72 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
73 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
74
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
75 class OrOrExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
76 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
77 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
78 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
79 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
80 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
81 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
82 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
83
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
84 class AndAndExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
85 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
86 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
87 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
88 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
89 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
90 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
91 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
92
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
93 class OrExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
94 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
95 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
96 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
97 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
98 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
99 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
100 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
101
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
102 class XorExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
103 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
104 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
105 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
106 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
107 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
108 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
109 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
110
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
111 class AndExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
112 {
251
67a798459532 - Added parameter Token* tok to some Expression constructors. Adapted parser accordingly.
aziz
parents: 249
diff changeset
113 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
114 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
115 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
116 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
117 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
118 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
119
286
0c1a2eba0c91 - Made classes BinaryExpression, CmpExpression and UnaryExpression abstract. Removed mixin(set_kind) from their constructors.
aziz
parents: 277
diff changeset
120 abstract class CmpExpression : BinaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
121 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
122 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
123 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
124 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
125 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
126 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
127
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
128 class EqualExpression : CmpExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
129 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
130 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
131 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
132 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
133 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
134 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
135 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
136
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
137 class IdentityExpression : CmpExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
138 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
139 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
140 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
141 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
142 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
143 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
144 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
145
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
146 class RelExpression : CmpExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
147 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
148 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
149 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
150 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
151 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
152 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
153 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
154
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
155 class InExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
156 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
157 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
158 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
159 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
160 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
161 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
162 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
163
75
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
164 class LShiftExpression : BinaryExpression
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
165 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
166 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
167 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
168 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
169 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
170 }
75
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
171 }
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
172
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
173 class RShiftExpression : BinaryExpression
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
174 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
175 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
176 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
177 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
178 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
179 }
75
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
180 }
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
181
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
182 class URShiftExpression : BinaryExpression
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
183 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
184 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
185 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
186 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
187 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
188 }
75
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
189 }
3f976d9e0833 - Implemented parseShiftExpression().
aziz
parents: 74
diff changeset
190
76
a85f9edf6ce7 - Implemented parseAddExpression().
aziz
parents: 75
diff changeset
191 class PlusExpression : BinaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
192 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
193 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
194 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
195 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
196 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
197 }
76
a85f9edf6ce7 - Implemented parseAddExpression().
aziz
parents: 75
diff changeset
198 }
a85f9edf6ce7 - Implemented parseAddExpression().
aziz
parents: 75
diff changeset
199
a85f9edf6ce7 - Implemented parseAddExpression().
aziz
parents: 75
diff changeset
200 class MinusExpression : BinaryExpression
a85f9edf6ce7 - Implemented parseAddExpression().
aziz
parents: 75
diff changeset
201 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
202 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
203 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
204 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
205 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
206 }
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
207 }
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
208
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
209 class CatExpression : BinaryExpression
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
210 {
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
211 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
212 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
213 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
214 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
215 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
216 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
217
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
218 class MulExpression : BinaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
219 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
220 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
221 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
222 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
223 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
224 }
77
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
225 }
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
226
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
227 class DivExpression : BinaryExpression
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
228 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
229 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
230 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
231 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
232 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
233 }
77
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
234 }
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
235
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
236 class ModExpression : BinaryExpression
7e21c4df1c02 - Implemented parseMulExpression().
aziz
parents: 76
diff changeset
237 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
238 this(Expression left, Expression right, Token* tok)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
239 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
240 super(left, right, tok);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
241 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
242 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
243 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
244
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
245 class AssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
246 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
247 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
248 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
249 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
250 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
251 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
252 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
253 class LShiftAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
254 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
255 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
256 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
257 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
258 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
259 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
260 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
261 class RShiftAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
262 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
263 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
264 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
265 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
266 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
267 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
268 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
269 class URShiftAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
270 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
271 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
272 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
273 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
274 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
275 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
276 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
277 class OrAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
278 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
279 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
280 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
281 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
282 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
283 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
284 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
285 class AndAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
286 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
287 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
288 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
289 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
290 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
291 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
292 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
293 class PlusAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
294 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
295 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
296 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
297 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
298 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
299 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
300 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
301 class MinusAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
302 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
303 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
304 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
305 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
306 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
307 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
308 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
309 class DivAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
310 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
311 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
312 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
313 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
314 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
315 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
316 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
317 class MulAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
318 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
319 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
320 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
321 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
322 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
323 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
324 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
325 class ModAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
326 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
327 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
328 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
329 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
330 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
331 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
332 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
333 class XorAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
334 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
335 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
336 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
337 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
338 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
339 }
71
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
340 }
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
341 class CatAssignExpression : BinaryExpression
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
342 {
b3777cca323c - Added Identity and NotIdentity tokens.
aziz
parents: 70
diff changeset
343 this(Expression left, Expression right)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
344 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
345 super(left, right, null);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
346 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
347 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
348 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
349
286
0c1a2eba0c91 - Made classes BinaryExpression, CmpExpression and UnaryExpression abstract. Removed mixin(set_kind) from their constructors.
aziz
parents: 277
diff changeset
350 abstract class UnaryExpression : Expression
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
351 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
352 Expression e;
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
353 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
354 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
355 addChild(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
356 this.e = e;
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
357 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
358 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
359
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
360 class AddressExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
361 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
362 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
363 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
364 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
365 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
366 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
367 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
368
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
369 class PreIncrExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
370 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
371 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
372 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
373 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
374 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
375 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
376 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
377
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
378 class PreDecrExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
379 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
380 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
381 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
382 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
383 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
384 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
385 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
386
79
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
387 class PostIncrExpression : UnaryExpression
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
388 {
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
389 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
390 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
391 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
392 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
393 }
79
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
394 }
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
395
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
396 class PostDecrExpression : UnaryExpression
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
397 {
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
398 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
399 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
400 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
401 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
402 }
79
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
403 }
df4e5c7ad58a - Implemented most of parsePostExpression() and parsePreExpression().
aziz
parents: 78
diff changeset
404
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
405 class DerefExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
406 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
407 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
408 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
409 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
410 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
411 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
412 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
413
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
414 class SignExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
415 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
416 this(Expression e)
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
417 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
418 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
419 mixin(set_kind);
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
420 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
421 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
422
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
423 class NotExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
424 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
425 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
426 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
427 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
428 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
429 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
430 }
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
431
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
432 class CompExpression : UnaryExpression
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
433 {
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
434 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
435 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
436 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
437 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
438 }
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
439 }
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
440 /+
81
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
441 class DotIdExpression : UnaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
442 {
108
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
443 string ident;
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
444 this(Expression e, string ident)
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
445 {
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
446 super(e);
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
447 this.ident = ident;
469188935d56 - Added ident member to DotIdExpression.
aziz
parents: 101
diff changeset
448 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
449 }
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
450 +/
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
451 /+
153
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
452 class DotTemplateInstanceExpression : UnaryExpression
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
453 {
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
454 string ident;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
455 TemplateArguments targs;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
456 this(Expression e, string ident, TemplateArguments targs)
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
457 {
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
458 super(e);
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
459 this.ident = ident;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
460 this.targs = targs;
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
461 }
66790fc2c0a2 - Added method parseIdentifierListType().
aziz
parents: 152
diff changeset
462 }
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
463 +/
160
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
464 class PostDotListExpression : UnaryExpression
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
465 {
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
466 DotListExpression dotList;
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
467 this(Expression e, DotListExpression dotList)
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
468 {
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
469 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
470 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
471 addChild(dotList);
160
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
472 this.dotList = dotList;
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
473 }
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
474 }
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
475
81
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
476 class CallExpression : UnaryExpression
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
477 {
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
478 Expression[] args;
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
479 this(Expression e, Expression[] args)
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
480 {
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
481 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
482 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
483 addOptChildren(args);
81
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
484 this.args = args;
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
485 }
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
486 }
aa1ea2548dd9 - Fixed parseExpression() method.
aziz
parents: 79
diff changeset
487
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
488 class NewExpression : /*Unary*/Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
489 {
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
490 Expression[] newArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
491 Type type;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
492 Expression[] ctorArgs;
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
493 this(/*Expression e, */Expression[] newArgs, Type type, Expression[] ctorArgs)
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
494 {
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
495 /*super(e);*/
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
496 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
497 addOptChildren(newArgs);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
498 addChild(type);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
499 addOptChildren(ctorArgs);
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
500 this.newArgs = newArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
501 this.type = type;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
502 this.ctorArgs = ctorArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
503 }
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
504 }
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
505
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
506 class NewAnonClassExpression : /*Unary*/Expression
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
507 {
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
508 Expression[] newArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
509 BaseClass[] bases;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
510 Expression[] ctorArgs;
305
df237b3b5f09 - Added class Declarations.
aziz
parents: 299
diff changeset
511 Declarations decls;
df237b3b5f09 - Added class Declarations.
aziz
parents: 299
diff changeset
512 this(/*Expression e, */Expression[] newArgs, BaseClass[] bases, Expression[] ctorArgs, Declarations decls)
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
513 {
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
514 /*super(e);*/
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
515 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
516 addOptChildren(newArgs);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
517 addOptChildren(bases);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
518 addOptChildren(ctorArgs);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
519 addChild(decls);
305
df237b3b5f09 - Added class Declarations.
aziz
parents: 299
diff changeset
520
144
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
521 this.newArgs = newArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
522 this.bases = bases;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
523 this.ctorArgs = ctorArgs;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
524 this.decls = decls;
cfd890b250e6 - Added bool parameter to parseBaseClasses. BaseClasses in anonymous classes don't start with a colon.
aziz
parents: 136
diff changeset
525 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
526 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
527
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
528 class DeleteExpression : UnaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
529 {
78
f043759fb59a - Added code to parseUnaryExpression(); not fully implemented.
aziz
parents: 77
diff changeset
530 this(Expression e)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
531 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
532 super(e);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
533 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
534 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
535 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
536
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
537 class CastExpression : UnaryExpression
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
538 {
99
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
539 Type type;
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
540 this(Expression e, Type type)
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
541 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
542 addChild(type); // Add type before super().
99
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
543 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
544 mixin(set_kind);
99
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
545 this.type = type;
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
546 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
547 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
548
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
549 class IndexExpression : UnaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
550 {
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
551 Expression[] args;
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
552 this(Expression e, Expression[] args)
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
553 {
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
554 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
555 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
556 addChildren(args);
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
557 this.args = args;
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
558 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
559 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
560
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
561 class SliceExpression : UnaryExpression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
562 {
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
563 Expression left, right;
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
564 this(Expression e, Expression left, Expression right)
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
565 {
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
566 super(e);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
567 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
568 assert(left ? (right !is null) : right is null);
396
0a4619735ce9 Applied fixes to Lexer, Parser and other classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 391
diff changeset
569 if (left)
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
570 addChildren([left, right]);
396
0a4619735ce9 Applied fixes to Lexer, Parser and other classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 391
diff changeset
571
83
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
572 this.left = left;
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
573 this.right = right;
9e6d66f647c9 - Fix: IsExpression was created instead of IdentityExpression.
aziz
parents: 81
diff changeset
574 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
575 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
576
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
577 /*
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
578 class PrimaryExpression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
579 {
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
580
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
581 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
582 */
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
583
89
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
584 class IdentifierExpression : Expression
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
585 {
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
586 Token* identifier;
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
587 this(Token* identifier)
89
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
588 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
589 mixin(set_kind);
89
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
590 this.identifier = identifier;
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
591 }
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
592 }
312
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
593
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
594 class SpecialTokenExpression : Expression
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
595 {
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
596 Token* special;
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
597 this(Token* special)
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
598 {
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
599 mixin(set_kind);
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
600 this.special = special;
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
601 }
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
602 }
fa0b6f32c1ae - Added Special to enum TOK.
aziz
parents: 309
diff changeset
603
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
604 /*
152
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
605 class IdentifierListExpression : Expression
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
606 {
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
607 Expression[] identList;
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
608 this(Expression[] identList)
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
609 {
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
610 this.identList = identList;
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
611 }
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
612 }
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
613 */
488
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
614
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
615 class DotExpression : Expression
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
616 {
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
617 this()
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
618 {
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
619 mixin(set_kind);
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
620 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
621 }
cfb3805768b6 Added DotExpression and DotType.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 486
diff changeset
622
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
623 class DotListExpression : Expression
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
624 {
160
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
625 Expression[] items;
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
626 this(Expression[] items)
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
627 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
628 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
629 addChildren(items);
160
c21192e8be2b - Parsing PostDotListExpression in parsePostExpression().
aziz
parents: 157
diff changeset
630 this.items = items;
154
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
631 }
0e7cefb15e43 - Renamed IdentifierListExpression to DotListExpression, and parseIdentifierListExpression() to parseDotListExpression().
aziz
parents: 153
diff changeset
632 }
152
fe2e36eb4b45 - Added method parseIdentifierListExpression() and class IdentifierListExpression.
aziz
parents: 150
diff changeset
633
150
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 144
diff changeset
634 class TemplateInstanceExpression : Expression
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
635 {
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
636 Token* ident;
150
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 144
diff changeset
637 TemplateArguments targs;
252
788398655d24 - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 251
diff changeset
638 this(Token* ident, TemplateArguments targs)
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
639 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
640 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
641 addOptChild(targs);
150
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 144
diff changeset
642 this.ident = ident;
753bc07bf3a0 - Forgot to pass ident to constructor of TemplateArgument.
aziz
parents: 144
diff changeset
643 this.targs = targs;
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
644 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
645 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
646
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
647 class ThisExpression : Expression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
648 {
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
649 this()
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
650 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
651 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
652 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
653 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
654
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
655 class SuperExpression : Expression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
656 {
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
657 this()
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
658 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
659 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
660 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
661 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
662
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
663 class NullExpression : Expression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
664 {
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
665 this()
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
666 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
667 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
668 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
669 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
670
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
671 class DollarExpression : Expression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
672 {
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
673 this()
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
674 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
675 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
676 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
677 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
678
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
679 class BoolExpression : Expression
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
680 {
242
7ec7ad8df9da - Changed type of member tok in class BinaryExpression to Token*.
aziz
parents: 240
diff changeset
681 this()
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
682 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
683 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
684 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
685 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
686
399
ff1d11c27061 Renamed some Expression classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
687 class IntExpression : Expression
97
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
688 {
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
689 TOK type;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
690 ulong number;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
691 this(TOK type, ulong number)
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
692 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
693 mixin(set_kind);
97
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
694 this.number = number;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
695 this.type = type;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
696 }
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
697 }
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
698
399
ff1d11c27061 Renamed some Expression classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
699 class RealExpression : Expression
97
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
700 {
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
701 TOK type;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
702 real number;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
703 this(TOK type, real number)
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
704 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
705 mixin(set_kind);
97
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
706 this.number = number;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
707 this.type = type;
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
708 }
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
709 }
1a83e5070a84 - Added code for parsing IntNumber- and RealNumberExpressions.
aziz
parents: 94
diff changeset
710
399
ff1d11c27061 Renamed some Expression classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
711 class CharExpression : Expression
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
712 {
486
bd176bc73e43 Fixed a few things in the Parser.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 417
diff changeset
713 Token* charLiteral;
bd176bc73e43 Fixed a few things in the Parser.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 417
diff changeset
714 this(Token* charLiteral)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
715 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
716 mixin(set_kind);
486
bd176bc73e43 Fixed a few things in the Parser.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 417
diff changeset
717 this.charLiteral = charLiteral;
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
718 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
719 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
720
399
ff1d11c27061 Renamed some Expression classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
721 class StringExpression : Expression
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
722 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
723 Token*[] strings;
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
724 this(Token*[] strings)
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
725 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
726 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
727 this.strings = strings;
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
728 }
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
729
391
33b566df6af4 Migrated project to Tango.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 377
diff changeset
730 char[] getString()
309
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
731 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
732 char[] buffer;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
733 foreach (strTok; strings)
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
734 {
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
735 buffer ~= strTok.str[0..$-1];
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
736 }
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
737 return buffer;
b4d842b0d2c7 - Added new files Settings.d, config.d and lang_en.d
aziz
parents: 305
diff changeset
738 }
84
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
739 }
ac8d961d10d1 - Added code for parsing This-,Super-,Null-,Bool-,Dollar-,CharLiteral- and StringLiteralExpression.
aziz
parents: 83
diff changeset
740
85
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
741 class ArrayLiteralExpression : Expression
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
742 {
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
743 Expression[] values;
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
744 this(Expression[] values)
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
745 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
746 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
747 addOptChildren(values);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
748 this.values = values;
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
749 }
85
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
750 }
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
751
399
ff1d11c27061 Renamed some Expression classes.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 396
diff changeset
752 class AArrayLiteralExpression : Expression
85
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
753 {
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
754 Expression[] keys, values;
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
755 this(Expression[] keys, Expression[] values)
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
756 {
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
757 assert(keys.length == values.length);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
758 mixin(set_kind);
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
759 foreach (i, key; keys)
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
760 addChildren([key, values[i]]);
85
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
761 this.keys = keys;
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
762 this.values = values;
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
763 }
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
764 }
d8dc3171440d - Fixed parsing CallExpression and IndexExpression.
aziz
parents: 84
diff changeset
765
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
766 class AssertExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
767 {
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
768 Expression expr, msg;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
769 this(Expression expr, Expression msg)
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
770 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
771 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
772 addChild(expr);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
773 addOptChild(msg);
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
774 this.expr = expr;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
775 this.msg = msg;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
776 }
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
777 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
778
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
779 class MixinExpression : Expression
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
780 {
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
781 Expression expr;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
782 this(Expression expr)
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
783 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
784 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
785 addChild(expr);
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
786 this.expr = expr;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
787 }
490
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
788
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
789 // import dil.Parser;
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
790 Expression semantic(Scope scop)
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
791 {
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
792 // TODO:
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
793 /+
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
794 auto expr = this.expr.semantic(scop);
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
795 auto strExpr = Cast!(StringExpression)(expr);
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
796 // if (strExpr is null)
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
797 // error(scop, MID.MixinExpressionMustBeString);
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
798 auto parser = new Parser(strExpr.getString(), "", scop.infoMan);
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
799 expr = parser.start2();
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
800 return expr;
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
801 +/
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
802 return null;
47be6bfe39cd Refactored code and added new modules.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 489
diff changeset
803 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
804 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
805
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
806 class ImportExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
807 {
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
808 Expression expr;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
809 this(Expression expr)
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
810 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
811 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
812 addChild(expr);
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
813 this.expr = expr;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
814 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
815 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
816
101
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
817 class TypeofExpression : Expression
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
818 {
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
819 Type type;
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
820 this(Type type)
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
821 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
822 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
823 addChild(type);
101
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
824 this.type = type;
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
825 }
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
826 }
6f3c5473c5e5 - Implemented parsing TypeofExpression.
aziz
parents: 100
diff changeset
827
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
828 class TypeDotIdExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
829 {
94
0fe650a7a8d1 - Renamed Type enum to InfoType in module Information.
aziz
parents: 89
diff changeset
830 Type type;
243
461e544ebb53 - Added method requireId().
aziz
parents: 242
diff changeset
831 Token* ident;
461e544ebb53 - Added method requireId().
aziz
parents: 242
diff changeset
832 this(Type type, Token* ident)
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
833 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
834 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
835 addChild(type);
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
836 this.type = type;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
837 this.ident = ident;
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
838 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
839 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
840
86
0459c902a370 - Added code for parsing Assert-, Mixin-, Import-, Typeid- and TypeDotIdExpressions.
aziz
parents: 85
diff changeset
841 class TypeidExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
842 {
99
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
843 Type type;
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
844 this(Type type)
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
845 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
846 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
847 addChild(type);
99
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
848 this.type = type;
6b8c248f5911 - Added member type to classes CastExpression and TypeidExpression.
aziz
parents: 97
diff changeset
849 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
850 }
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
851
89
18c71269fb52 - Added code for parsing IdentifierExpression.
aziz
parents: 86
diff changeset
852 class IsExpression : Expression
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
853 {
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
854 Type type;
253
4279b638c63e - Changed some string types to Token*. Adapted parser accordingly.
aziz
parents: 252
diff changeset
855 Token* ident;
248
63a15b082c0c - Removed class SpecializationType.
aziz
parents: 243
diff changeset
856 Token* opTok, specTok;
63a15b082c0c - Removed class SpecializationType.
aziz
parents: 243
diff changeset
857 Type specType;
377
906599374b69 - Added tparams member to IsExpression.
aziz
parents: 376
diff changeset
858 TemplateParameters tparams; // D 2.0
906599374b69 - Added tparams member to IsExpression.
aziz
parents: 376
diff changeset
859 this(Type type, Token* ident, Token* opTok, Token* specTok, Type specType, typeof(tparams) tparams)
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
860 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
861 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
862 addChild(type);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
863 addOptChild(specType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
864 version(D2)
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
865 addOptChild(tparams);
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
866 this.type = type;
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
867 this.ident = ident;
248
63a15b082c0c - Removed class SpecializationType.
aziz
parents: 243
diff changeset
868 this.opTok = opTok;
63a15b082c0c - Removed class SpecializationType.
aziz
parents: 243
diff changeset
869 this.specTok = specTok;
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
870 this.specType = specType;
377
906599374b69 - Added tparams member to IsExpression.
aziz
parents: 376
diff changeset
871 this.tparams = tparams;
100
538e8b546669 - Added code for parsing IsExpressions.
aziz
parents: 99
diff changeset
872 }
70
0d3ef6daec04 - Added Expression class stubs.
aziz
parents:
diff changeset
873 }
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
874
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
875 class FunctionLiteralExpression : Expression
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
876 {
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
877 Type returnType;
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
878 Parameters parameters;
193
2a2975b6d539 - Using parseFunctionBody() when parsing FunctionLiteralExpression.
aziz
parents: 160
diff changeset
879 FunctionBody funcBody;
133
3924b1ee1302 - Added code for parsing function and delegate literal expressions.
aziz
parents: 130
diff changeset
880
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
881 this()
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
882 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
883 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
884 addOptChild(returnType);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
885 addOptChild(parameters);
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
886 addChild(funcBody);
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
887 }
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
888
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
889 this(Type returnType, Parameters parameters, FunctionBody funcBody)
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
890 {
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
891 this.returnType = returnType;
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
892 this.parameters = parameters;
193
2a2975b6d539 - Using parseFunctionBody() when parsing FunctionLiteralExpression.
aziz
parents: 160
diff changeset
893 this.funcBody = funcBody;
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
894 this();
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
895 }
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
896
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
897 this(FunctionBody funcBody)
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
898 {
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
899 this.funcBody = funcBody;
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
900 this();
130
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
901 }
0467f01ed524 - Fix: parameters can have optional identifier.
aziz
parents: 108
diff changeset
902 }
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
903
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
904 version(D2)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
905 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
906 class TraitsExpression : Expression
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
907 {
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
908 Token* ident;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
909 TemplateArguments targs;
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
910 this(typeof(ident) ident, typeof(targs) targs)
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
911 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
912 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
913 addOptChild(targs);
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
914 this.ident = ident;
289
a99357783c6f - Fix: assign targs to member targs of TraitsExpression.
aziz
parents: 288
diff changeset
915 this.targs = targs;
269
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
916 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
917 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
918 }
a416e09c08ea - Implemented D 2.0 additions.
aziz
parents: 263
diff changeset
919
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
920 class VoidInitializer : Expression
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
921 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
922 this()
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
923 {
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
924 mixin(set_kind);
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
925 }
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
926 }
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
927
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
928 class ArrayInitializer : Expression
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
929 {
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
930 Expression[] keys;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
931 Expression[] values;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
932 this(Expression[] keys, Expression[] values)
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
933 {
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
934 assert(keys.length == values.length);
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
935 mixin(set_kind);
293
418c6548ce17 - Assigning to Node.children in several constructors that inherit from Node.
aziz
parents: 289
diff changeset
936 foreach (i, key; keys)
299
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 293
diff changeset
937 {
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
938 addOptChild(key); // The key is optional in ArrayInitializers.
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
939 addChild(values[i]);
299
559d5d62e0c1 - Added checks for null before adding member to Node.children.
aziz
parents: 293
diff changeset
940 }
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
941 this.keys = keys;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
942 this.values = values;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
943 }
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
944 }
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
945
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
946 class StructInitializer : Expression
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
947 {
263
ebcf7941f1db - Changed some string types to Token*.
aziz
parents: 253
diff changeset
948 Token*[] idents;
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
949 Expression[] values;
263
ebcf7941f1db - Changed some string types to Token*.
aziz
parents: 253
diff changeset
950 this(Token*[] idents, Expression[] values)
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
951 {
276
d6b2f7616ca5 - Added enum NodeKind to classify different nodes in the AST. Correspondingly added member 'kind' to class Node.
aziz
parents: 275
diff changeset
952 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
953 addOptChildren(values);
198
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
954 this.idents = idents;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
955 this.values = values;
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
956 }
88c1777a9e51 - Implemented parseInitializer() and parseNonVoidInitializer().
aziz
parents: 193
diff changeset
957 }
287
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
958
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
959 class AsmTypeExpression : UnaryExpression
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
960 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
961 this(Expression e)
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
962 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
963 super(e);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
964 mixin(set_kind);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
965 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
966 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
967
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
968 class AsmOffsetExpression : UnaryExpression
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
969 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
970 this(Expression e)
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
971 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
972 super(e);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
973 mixin(set_kind);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
974 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
975 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
976
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
977 class AsmSegExpression : UnaryExpression
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
978 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
979 this(Expression e)
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
980 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
981 super(e);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
982 mixin(set_kind);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
983 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
984 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
985
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
986 class AsmPostBracketExpression : UnaryExpression
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
987 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
988 this(Expression e)
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
989 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
990 super(e);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
991 mixin(set_kind);
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
992 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
993 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
994
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
995 class AsmBracketExpression : Expression
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
996 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
997 Expression e;
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
998 this(Expression e)
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
999 {
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
1000 mixin(set_kind);
489
a7291d3ee9d7 Refactored classes that inherit from Node.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 488
diff changeset
1001 addChild(e);
287
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
1002 this.e = e;
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
1003 }
211bdd69397d - Added classes AsmTypeExpression, AsmOffsetExpression, AsmSegExpression, AsmPostBracketExpression and AsmBracketExpression.
aziz
parents: 286
diff changeset
1004 }
288
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1005
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1006 class AsmLocalSizeExpression : Expression
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1007 {
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1008 this()
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1009 {
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1010 mixin(set_kind);
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1011 }
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1012 }
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1013
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1014 class AsmRegisterExpression : Expression
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1015 {
502
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 490
diff changeset
1016 Identifier* register;
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 490
diff changeset
1017 int number; // ST(0) - ST(7) or FS:0, FS:4, FS:8
4e14cd1b24da Refactored code and added modules related to tabulated Identifiers.
Aziz K?ksal <aziz.koeksal@gmail.com>
parents: 490
diff changeset
1018 this(Identifier* register, int number = -1)
288
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1019 {
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1020 mixin(set_kind);
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1021 this.register = register;
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1022 this.number = number;
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1023 }
833b301497f4 - Added classes AsmLocalSizeExpression and AsmRegisterExpression.
aziz
parents: 287
diff changeset
1024 }