1namespace Astrid;
2
3public class Token
4{
5 public string value;
6
7 public int lineStart;
8 public int lineEnd;
9 public int charStart;
10 public int charEnd;
11
12 public Token(string value, int lineStart, int lineEnd, int charStart, int charEnd)
13 {
14 this.value = value;
15
16 this.lineStart = lineStart;
17 this.lineEnd = lineEnd;
18 this.charStart = charStart;
19 this.charEnd = charEnd;
20 }
21
22 public Token(int lineStart, int lineEnd, int charStart, int charEnd)
23 {
24 this.value = "";
25
26 this.lineStart = lineStart;
27 this.lineEnd = lineEnd;
28 this.charStart = charStart;
29 this.charEnd = charEnd;
30 }
31}
32
33internal class TokenIdentifier : Token
34{
35 public TokenIdentifier(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
36 {
37 }
38}
39
40internal class TokenKeyword : Token
41{
42 public TokenKeyword(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
43 {
44 }
45}
46
47internal class TokenString : Token
48{
49 public TokenString(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
50 {
51 }
52}
53
54internal class TokenFloat : Token
55{
56 public TokenFloat(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
57 {
58 }
59}
60
61internal class TokenInt : Token
62{
63 public TokenInt(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
64 {
65 }
66}
67
68internal class TokenBoolean : Token
69{
70 public TokenBoolean(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
71 {
72 }
73}
74
75internal class TokenArrayString : Token
76{
77 public TokenArrayString(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
78 {
79 }
80}
81
82internal class TokenArrayFloat : Token
83{
84 public TokenArrayFloat(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
85 {
86 }
87}
88
89internal class TokenArrayInt : Token
90{
91 public TokenArrayInt(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
92 {
93 }
94}
95
96internal class TokenArrayBoolean : Token
97{
98 public TokenArrayBoolean(string value, int lineStart, int lineEnd, int charStart, int charEnd) : base(value, lineStart, lineEnd, charStart, charEnd)
99 {
100 }
101}
102
103internal class TokenAssign : Token
104{
105 public TokenAssign(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
106 {
107 this.value = "=";
108 }
109}
110
111internal class TokenAssignMinus : Token
112{
113 public TokenAssignMinus(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
114 {
115 this.value = "-=";
116 }
117}
118
119internal class TokenAssignPlus : Token
120{
121 public TokenAssignPlus(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
122 {
123 this.value = "+=";
124 }
125}
126
127internal class TokenAssignDivide : Token
128{
129 public TokenAssignDivide(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
130 {
131 this.value = "/=";
132 }
133}
134
135internal class TokenAssignMultiply : Token
136{
137 public TokenAssignMultiply(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
138 {
139 this.value = "*=";
140 }
141}
142
143internal class TokenAssignPower : Token
144{
145 public TokenAssignPower(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
146 {
147 this.value = "^=";
148 }
149}
150
151internal class TokenAssignModulo : Token
152{
153 public TokenAssignModulo(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
154 {
155 this.value = "%=";
156 }
157}
158
159internal class TokenComma : Token
160{
161 public TokenComma(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
162 {
163 this.value = ",";
164 }
165}
166
167internal class TokenArrayStart : Token
168{
169 public TokenArrayStart(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
170 {
171 this.value = "[";
172 }
173}
174
175internal class TokenArrayEnd : Token
176{
177 public TokenArrayEnd(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
178 {
179 this.value = "]";
180 }
181}
182
183internal class TokenParenStart : Token
184{
185 public TokenParenStart(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
186 {
187 this.value = "(";
188 }
189}
190
191internal class TokenParenEnd : Token
192{
193 public TokenParenEnd(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
194 {
195 this.value = ")";
196 }
197}
198
199internal class TokenColon : Token
200{
201 public TokenColon(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
202 {
203 this.value = ":";
204 }
205}
206
207internal class TokenDoubleColon : Token
208{
209 public TokenDoubleColon(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
210 {
211 this.value = "::";
212 }
213}
214
215internal class TokenBlockStart : Token
216{
217 public TokenBlockStart(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
218 {
219 this.value = "{";
220 }
221}
222
223internal class TokenBlockEnd : Token
224{
225 public TokenBlockEnd(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
226 {
227 this.value = "}";
228 }
229}
230
231internal class TokenEOL : Token
232{
233 public TokenEOL(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
234 {
235 this.value = ";";
236 }
237}
238
239internal class TokenNamespaceSeparator : Token
240{
241 public TokenNamespaceSeparator(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
242 {
243 this.value = ".";
244 }
245}
246
247internal class TokenPlus : Token
248{
249 public TokenPlus(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
250 {
251 this.value = "+";
252 }
253}
254
255internal class TokenMinus : Token
256{
257 public TokenMinus(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
258 {
259 this.value = "-";
260 }
261}
262
263internal class TokenMultiply : Token
264{
265 public TokenMultiply(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
266 {
267 this.value = "*";
268 }
269}
270
271internal class TokenDivide : Token
272{
273 public TokenDivide(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
274 {
275 this.value = "/";
276 }
277}
278
279internal class TokenPower : Token
280{
281 public TokenPower(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
282 {
283 this.value = "^";
284 }
285}
286
287internal class TokenModulo : Token
288{
289 public TokenModulo(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
290 {
291 this.value = "%";
292 }
293}
294
295internal class TokenOr : Token
296{
297 public TokenOr(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
298 {
299 this.value = "||";
300 }
301}
302
303internal class TokenAnd : Token
304{
305 public TokenAnd(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
306 {
307 this.value = "&&";
308 }
309}
310
311internal class TokenNot : Token
312{
313 public TokenNot(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
314 {
315 this.value = "!";
316 }
317}
318
319internal class TokenEquals : Token
320{
321 public TokenEquals(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
322 {
323 this.value = "==";
324 }
325}
326
327internal class TokenNotEquals : Token
328{
329 public TokenNotEquals(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
330 {
331 this.value = "!=";
332 }
333}
334
335internal class TokenGreater : Token
336{
337 public TokenGreater(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
338 {
339 this.value = ">";
340 }
341}
342
343internal class TokenGreaterEquals : Token
344{
345 public TokenGreaterEquals(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
346 {
347 this.value = ">=";
348 }
349}
350
351internal class TokenLesser : Token
352{
353 public TokenLesser(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
354 {
355 this.value = "<";
356 }
357}
358
359internal class TokenLesserEquals : Token
360{
361 public TokenLesserEquals(int lineStart, int lineEnd, int charStart, int charEnd) : base(lineStart, lineEnd, charStart, charEnd)
362 {
363 this.value = "<=";
364 }
365}
366
367public class InvalidTokenTypeException : Exception
368{
369 public dynamic token;
370
371 public InvalidTokenTypeException(string message, dynamic token) : base(message)
372 {
373 this.token = token;
374 }
375}