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
|
|
106 class AddExpression : BinaryExpression
|
|
107 {
|
71
|
108 this(Expression left, Expression right, TOK tok)
|
|
109 { super(left, right, tok); }
|
70
|
110 }
|
|
111
|
|
112 class MulExpression : BinaryExpression
|
|
113 {
|
71
|
114 this(Expression left, Expression right, TOK tok)
|
|
115 { super(left, right, tok); }
|
70
|
116 }
|
|
117
|
|
118 class CatExpression : BinaryExpression
|
|
119 {
|
71
|
120 this(Expression left, Expression right, TOK tok)
|
|
121 { super(left, right, TOK.Catenate); }
|
|
122 }
|
70
|
123
|
71
|
124 class AssignExpression : BinaryExpression
|
|
125 {
|
|
126 this(Expression left, Expression right)
|
|
127 { super(left, right, TOK.Assign); }
|
|
128 }
|
|
129 class LShiftAssignExpression : BinaryExpression
|
|
130 {
|
|
131 this(Expression left, Expression right)
|
|
132 { super(left, right, TOK.LShiftAssign); }
|
|
133 }
|
|
134 class RShiftAssignExpression : BinaryExpression
|
|
135 {
|
|
136 this(Expression left, Expression right)
|
|
137 { super(left, right, TOK.RShiftAssign); }
|
|
138 }
|
|
139 class URShiftAssignExpression : BinaryExpression
|
|
140 {
|
|
141 this(Expression left, Expression right)
|
|
142 { super(left, right, TOK.URShiftAssign); }
|
|
143 }
|
|
144 class OrAssignExpression : BinaryExpression
|
|
145 {
|
|
146 this(Expression left, Expression right)
|
|
147 { super(left, right, TOK.OrAssign); }
|
|
148 }
|
|
149 class AndAssignExpression : BinaryExpression
|
|
150 {
|
|
151 this(Expression left, Expression right)
|
|
152 { super(left, right, TOK.AndAssign); }
|
|
153 }
|
|
154 class PlusAssignExpression : BinaryExpression
|
|
155 {
|
|
156 this(Expression left, Expression right)
|
|
157 { super(left, right, TOK.PlusAssign); }
|
|
158 }
|
|
159 class MinusAssignExpression : BinaryExpression
|
|
160 {
|
|
161 this(Expression left, Expression right)
|
|
162 { super(left, right, TOK.MinusAssign); }
|
|
163 }
|
|
164 class DivAssignExpression : BinaryExpression
|
|
165 {
|
|
166 this(Expression left, Expression right)
|
|
167 { super(left, right, TOK.DivAssign); }
|
|
168 }
|
|
169 class MulAssignExpression : BinaryExpression
|
|
170 {
|
|
171 this(Expression left, Expression right)
|
|
172 { super(left, right, TOK.MulAssign); }
|
|
173 }
|
|
174 class ModAssignExpression : BinaryExpression
|
|
175 {
|
|
176 this(Expression left, Expression right)
|
|
177 { super(left, right, TOK.ModAssign); }
|
|
178 }
|
|
179 class XorAssignExpression : BinaryExpression
|
|
180 {
|
|
181 this(Expression left, Expression right)
|
|
182 { super(left, right, TOK.XorAssign); }
|
|
183 }
|
|
184 class CatAssignExpression : BinaryExpression
|
|
185 {
|
|
186 this(Expression left, Expression right)
|
|
187 { super(left, right, TOK.CatAssign); }
|
70
|
188 }
|
|
189
|
|
190 class PostfixExpression : UnaryExpression
|
|
191 {
|
|
192
|
|
193 }
|
|
194
|
|
195 class DotExpression : UnaryExpression
|
|
196 {
|
|
197
|
|
198 }
|
|
199
|
|
200 class NewExpression : UnaryExpression
|
|
201 {
|
|
202
|
|
203 }
|
|
204
|
|
205 class DeleteExpression : UnaryExpression
|
|
206 {
|
|
207
|
|
208 }
|
|
209
|
|
210 class CastExpression : UnaryExpression
|
|
211 {
|
|
212
|
|
213 }
|
|
214
|
|
215 class AnonClassExpression : UnaryExpression
|
|
216 {
|
|
217
|
|
218 }
|
|
219
|
|
220 class PrimaryExpression
|
|
221 {
|
|
222
|
|
223 }
|
|
224
|
|
225 class IndexExpression
|
|
226 {
|
|
227
|
|
228 }
|
|
229
|
|
230 class SliceExpression
|
|
231 {
|
|
232
|
|
233 }
|
|
234
|
|
235 class AssertExpression
|
|
236 {
|
|
237
|
|
238 }
|
|
239
|
|
240 class MixinExpression
|
|
241 {
|
|
242
|
|
243 }
|
|
244
|
|
245 class ImportExpression
|
|
246 {
|
|
247
|
|
248 }
|
|
249
|
|
250 class TypeIdExpression
|
|
251 {
|
|
252
|
|
253 }
|
|
254
|
74
|
255 class IsExpression : CmpExpression
|
70
|
256 {
|
74
|
257 this(Expression left, Expression right, TOK tok)
|
|
258 { super(left, right, tok); }
|
70
|
259 }
|