70
|
1 /++
|
|
2 Author: Aziz Köksal
|
|
3 License: GPL2
|
|
4 +/
|
|
5 module Expressions;
|
71
|
6 import Token;
|
70
|
7
|
|
8 class Expression
|
|
9 {
|
|
10
|
|
11 }
|
|
12
|
|
13 class UnaryExpression : Expression
|
|
14 {
|
|
15
|
|
16 }
|
|
17
|
|
18 class BinaryExpression : Expression
|
|
19 {
|
71
|
20 Expression left, right;
|
|
21 TOK tok;
|
|
22 this(Expression left, Expression right, TOK tok)
|
|
23 {
|
|
24 this.left = left;
|
|
25 this.right = right;
|
|
26 this.tok = tok;
|
|
27 }
|
70
|
28 }
|
|
29
|
72
|
30 class CondExpression : BinaryExpression
|
70
|
31 {
|
72
|
32 Expression condition;
|
|
33 this(Expression condition, Expression left, Expression right)
|
|
34 {
|
|
35 this.condition = condition;
|
|
36 super(left, right, TOK.Comma);
|
|
37 }
|
|
38 }
|
70
|
39
|
72
|
40 class CommaExpression : BinaryExpression
|
|
41 {
|
|
42 this(Expression left, Expression right)
|
|
43 { super(left, right, TOK.Comma); }
|
70
|
44 }
|
|
45
|
|
46 class OrOrExpression : BinaryExpression
|
|
47 {
|
71
|
48 this(Expression left, Expression right)
|
|
49 { super(left, right, TOK.OrLogical); }
|
70
|
50 }
|
|
51
|
|
52 class AndAndExpression : BinaryExpression
|
|
53 {
|
71
|
54 this(Expression left, Expression right)
|
|
55 { super(left, right, TOK.AndLogical); }
|
70
|
56 }
|
|
57
|
|
58 class OrExpression : BinaryExpression
|
|
59 {
|
71
|
60 this(Expression left, Expression right)
|
|
61 { super(left, right, TOK.OrBinary); }
|
70
|
62 }
|
|
63
|
|
64 class XorExpression : BinaryExpression
|
|
65 {
|
71
|
66 this(Expression left, Expression right)
|
|
67 { super(left, right, TOK.Xor); }
|
70
|
68 }
|
|
69
|
|
70 class AndExpression : BinaryExpression
|
|
71 {
|
71
|
72 this(Expression left, Expression right)
|
|
73 { super(left, right, TOK.AndBinary); }
|
70
|
74 }
|
|
75
|
|
76 class CmpExpression : BinaryExpression
|
|
77 {
|
71
|
78 this(Expression left, Expression right, TOK tok)
|
|
79 { super(left, right, tok); }
|
70
|
80 }
|
|
81
|
71
|
82 class EqualExpression : CmpExpression
|
70
|
83 {
|
71
|
84 this(Expression left, Expression right, TOK tok)
|
|
85 { super(left, right, TOK.Equal); }
|
70
|
86 }
|
|
87
|
71
|
88 class IdentExpression : CmpExpression
|
70
|
89 {
|
71
|
90 this(Expression left, Expression right, TOK tok)
|
|
91 { super(left, right, tok); }
|
70
|
92 }
|
|
93
|
71
|
94 class RelExpression : CmpExpression
|
70
|
95 {
|
71
|
96 this(Expression left, Expression right, TOK tok)
|
|
97 { super(left, right, tok); }
|
70
|
98 }
|
|
99
|
|
100 class InExpression : BinaryExpression
|
|
101 {
|
71
|
102 this(Expression left, Expression right, TOK tok)
|
|
103 { super(left, right, TOK.In); }
|
70
|
104 }
|
|
105
|
75
|
106 class LShiftExpression : BinaryExpression
|
|
107 {
|
|
108 this(Expression left, Expression right)
|
|
109 { super(left, right, TOK.LShiftAssign); }
|
|
110 }
|
|
111
|
|
112 class RShiftExpression : BinaryExpression
|
|
113 {
|
|
114 this(Expression left, Expression right)
|
|
115 { super(left, right, TOK.RShiftAssign); }
|
|
116 }
|
|
117
|
|
118 class URShiftExpression : BinaryExpression
|
|
119 {
|
|
120 this(Expression left, Expression right)
|
|
121 { super(left, right, TOK.URShiftAssign); }
|
|
122 }
|
|
123
|
70
|
124 class AddExpression : BinaryExpression
|
|
125 {
|
71
|
126 this(Expression left, Expression right, TOK tok)
|
|
127 { super(left, right, tok); }
|
70
|
128 }
|
|
129
|
|
130 class MulExpression : BinaryExpression
|
|
131 {
|
71
|
132 this(Expression left, Expression right, TOK tok)
|
|
133 { super(left, right, tok); }
|
70
|
134 }
|
|
135
|
|
136 class CatExpression : BinaryExpression
|
|
137 {
|
71
|
138 this(Expression left, Expression right, TOK tok)
|
|
139 { super(left, right, TOK.Catenate); }
|
|
140 }
|
70
|
141
|
71
|
142 class AssignExpression : BinaryExpression
|
|
143 {
|
|
144 this(Expression left, Expression right)
|
|
145 { super(left, right, TOK.Assign); }
|
|
146 }
|
|
147 class LShiftAssignExpression : BinaryExpression
|
|
148 {
|
|
149 this(Expression left, Expression right)
|
|
150 { super(left, right, TOK.LShiftAssign); }
|
|
151 }
|
|
152 class RShiftAssignExpression : BinaryExpression
|
|
153 {
|
|
154 this(Expression left, Expression right)
|
|
155 { super(left, right, TOK.RShiftAssign); }
|
|
156 }
|
|
157 class URShiftAssignExpression : BinaryExpression
|
|
158 {
|
|
159 this(Expression left, Expression right)
|
|
160 { super(left, right, TOK.URShiftAssign); }
|
|
161 }
|
|
162 class OrAssignExpression : BinaryExpression
|
|
163 {
|
|
164 this(Expression left, Expression right)
|
|
165 { super(left, right, TOK.OrAssign); }
|
|
166 }
|
|
167 class AndAssignExpression : BinaryExpression
|
|
168 {
|
|
169 this(Expression left, Expression right)
|
|
170 { super(left, right, TOK.AndAssign); }
|
|
171 }
|
|
172 class PlusAssignExpression : BinaryExpression
|
|
173 {
|
|
174 this(Expression left, Expression right)
|
|
175 { super(left, right, TOK.PlusAssign); }
|
|
176 }
|
|
177 class MinusAssignExpression : BinaryExpression
|
|
178 {
|
|
179 this(Expression left, Expression right)
|
|
180 { super(left, right, TOK.MinusAssign); }
|
|
181 }
|
|
182 class DivAssignExpression : BinaryExpression
|
|
183 {
|
|
184 this(Expression left, Expression right)
|
|
185 { super(left, right, TOK.DivAssign); }
|
|
186 }
|
|
187 class MulAssignExpression : BinaryExpression
|
|
188 {
|
|
189 this(Expression left, Expression right)
|
|
190 { super(left, right, TOK.MulAssign); }
|
|
191 }
|
|
192 class ModAssignExpression : BinaryExpression
|
|
193 {
|
|
194 this(Expression left, Expression right)
|
|
195 { super(left, right, TOK.ModAssign); }
|
|
196 }
|
|
197 class XorAssignExpression : BinaryExpression
|
|
198 {
|
|
199 this(Expression left, Expression right)
|
|
200 { super(left, right, TOK.XorAssign); }
|
|
201 }
|
|
202 class CatAssignExpression : BinaryExpression
|
|
203 {
|
|
204 this(Expression left, Expression right)
|
|
205 { super(left, right, TOK.CatAssign); }
|
70
|
206 }
|
|
207
|
|
208 class PostfixExpression : UnaryExpression
|
|
209 {
|
|
210
|
|
211 }
|
|
212
|
|
213 class DotExpression : UnaryExpression
|
|
214 {
|
|
215
|
|
216 }
|
|
217
|
|
218 class NewExpression : UnaryExpression
|
|
219 {
|
|
220
|
|
221 }
|
|
222
|
|
223 class DeleteExpression : UnaryExpression
|
|
224 {
|
|
225
|
|
226 }
|
|
227
|
|
228 class CastExpression : UnaryExpression
|
|
229 {
|
|
230
|
|
231 }
|
|
232
|
|
233 class AnonClassExpression : UnaryExpression
|
|
234 {
|
|
235
|
|
236 }
|
|
237
|
|
238 class PrimaryExpression
|
|
239 {
|
|
240
|
|
241 }
|
|
242
|
|
243 class IndexExpression
|
|
244 {
|
|
245
|
|
246 }
|
|
247
|
|
248 class SliceExpression
|
|
249 {
|
|
250
|
|
251 }
|
|
252
|
|
253 class AssertExpression
|
|
254 {
|
|
255
|
|
256 }
|
|
257
|
|
258 class MixinExpression
|
|
259 {
|
|
260
|
|
261 }
|
|
262
|
|
263 class ImportExpression
|
|
264 {
|
|
265
|
|
266 }
|
|
267
|
|
268 class TypeIdExpression
|
|
269 {
|
|
270
|
|
271 }
|
|
272
|
74
|
273 class IsExpression : CmpExpression
|
70
|
274 {
|
74
|
275 this(Expression left, Expression right, TOK tok)
|
|
276 { super(left, right, tok); }
|
70
|
277 }
|