v / vlib / v2 / token / util.v
463 lines · 462 sloc · 8.94 KB · 7519f915ffdafd3229fdd8912f7d78481614cb35
Raw
1module token
2
3// NOTE: add keyword tokens here
4// TODO: allow overriding this method in main v compiler
5// that is why this method was renamed from `from_string`
6// vfmt off
7@[direct_array_access]
8pub fn Token.from_string_tinyv(name string) Token {
9 match name.len {
10 2 {
11 match name[0] {
12 `a` {
13 match name[1] {
14 `s` { return .key_as }
15 else { return .name }
16 }
17 }
18 `f` {
19 match name[1] {
20 `n` { return .key_fn }
21 else { return .name }
22 }
23 }
24 `g` {
25 match name[1] {
26 `o` { return .key_go }
27 else { return .name }
28 }
29 }
30 `i` {
31 match name[1] {
32 `f` { return .key_if }
33 `n` { return .key_in }
34 `s` { return .key_is }
35 else { return .name }
36 }
37 }
38 `o` {
39 match name[1] {
40 `r` { return .key_or }
41 else { return .name }
42 }
43 }
44 else {
45 return .name
46 }
47 }
48 return .name
49 }
50 3 {
51 match name[0] {
52 `a` {
53 if name[1] == `s` && name[2] == `m` {
54 return .key_asm
55 } else {
56 return .name
57 }
58 }
59 `f` {
60 if name[1] == `o` && name[2] == `r` {
61 return .key_for
62 } else {
63 return .name
64 }
65 }
66 `m` {
67 if name[1] == `u` && name[2] == `t` {
68 return .key_mut
69 } else {
70 return .name
71 }
72 }
73 `n` {
74 if name[1] == `i` && name[2] == `l` {
75 return .key_nil
76 } else {
77 return .name
78 }
79 }
80 `p` {
81 if name[1] == `u` && name[2] == `b` {
82 return .key_pub
83 } else {
84 return .name
85 }
86 }
87 else {
88 return .name
89 }
90 }
91 return .name
92 }
93 4 {
94 match name[0] {
95 `d` {
96 if name[1] == `u` && name[2] == `m` && name[3] == `p` {
97 return .key_dump
98 } else {
99 return .name
100 }
101 }
102 `e` {
103 match name[1] {
104 `l` {
105 if name[2] == `s` && name[3] == `e` {
106 return .key_else
107 } else {
108 return .name
109 }
110 }
111 `n` {
112 if name[2] == `u` && name[3] == `m` {
113 return .key_enum
114 } else {
115 return .name
116 }
117 }
118 else {
119 return .name
120 }
121 }
122 }
123 `g` {
124 if name[1] == `o` && name[2] == `t` && name[3] == `o` {
125 return .key_goto
126 } else {
127 return .name
128 }
129 }
130 `l` {
131 if name[1] == `o` && name[2] == `c` && name[3] == `k` {
132 return .key_lock
133 } else {
134 return .name
135 }
136 }
137 `n` {
138 if name[1] == `o` && name[2] == `n` && name[3] == `e` {
139 return .key_none
140 } else {
141 return .name
142 }
143 }
144 `t` {
145 match name[1] {
146 `r` {
147 if name[2] == `u` && name[3] == `e` {
148 return .key_true
149 } else {
150 return .name
151 }
152 }
153 `y` {
154 if name[2] == `p` && name[3] == `e` {
155 return .key_type
156 } else {
157 return .name
158 }
159 }
160 else {
161 return .name
162 }
163 }
164 }
165 else {
166 return .name
167 }
168 }
169 }
170 5 {
171 match name[0] {
172 `b` {
173 if name[1] == `r` && name[2] == `e` && name[3] == `a` && name[4] == `k` {
174 return .key_break
175 } else {
176 return .name
177 }
178 }
179 `c` {
180 if name[1] == `o` && name[2] == `n` && name[3] == `s` && name[4] == `t` {
181 return .key_const
182 } else {
183 return .name
184 }
185 }
186 `d` {
187 if name[1] == `e` && name[2] == `f` && name[3] == `e` && name[4] == `r` {
188 return .key_defer
189 } else {
190 return .name
191 }
192 }
193 `f` {
194 if name[1] == `a` && name[2] == `l` && name[3] == `s` && name[4] == `e` {
195 return .key_false
196 } else {
197 return .name
198 }
199 }
200 `m` {
201 if name[1] == `a` && name[2] == `t` && name[3] == `c` && name[4] == `h` {
202 return .key_match
203 } else {
204 return .name
205 }
206 }
207 `r` {
208 if name[1] == `l` && name[2] == `o` && name[3] == `c` && name[4] == `k` {
209 return .key_rlock
210 } else {
211 return .name
212 }
213 }
214 `s` {
215 if name[1] == `p` && name[2] == `a` && name[3] == `w` && name[4] == `n` {
216 return .key_spawn
217 } else {
218 return .name
219 }
220 }
221 `u` {
222 if name[1] == `n` && name[2] == `i` && name[3] == `o` && name[4] == `n` {
223 return .key_union
224 } else {
225 return .name
226 }
227 }
228 else {
229 return .name
230 }
231 }
232 }
233 6 {
234 match name[0] {
235 `a` {
236 match name[1] {
237 `s` {
238 if name[2] == `s` && name[3] == `e` && name[4] == `r` && name[5] == `t` {
239 return .key_assert
240 } else {
241 return .name
242 }
243 }
244 `t` {
245 if name[2] == `o` && name[3] == `m` && name[4] == `i` && name[5] == `c` {
246 return .key_atomic
247 } else {
248 return .name
249 }
250 }
251 else {
252 return .name
253 }
254 }
255 }
256 `i` {
257 if name[1] == `m` && name[2] == `p` && name[3] == `o` && name[4] == `r`
258 && name[5] == `t` {
259 return .key_import
260 } else {
261 return .name
262 }
263 }
264 `m` {
265 if name[1] == `o` && name[2] == `d` && name[3] == `u` && name[4] == `l`
266 && name[5] == `e` {
267 return .key_module
268 } else {
269 return .name
270 }
271 }
272 `r` {
273 if name[1] == `e` && name[2] == `t` && name[3] == `u` && name[4] == `r`
274 && name[5] == `n` {
275 return .key_return
276 } else {
277 return .name
278 }
279 }
280 `s` {
281 match name[1] {
282 `e` {
283 if name[2] == `l` && name[3] == `e` && name[4] == `c` && name[5] == `t` {
284 return .key_select
285 } else {
286 return .name
287 }
288 }
289 `h` {
290 if name[2] == `a` && name[3] == `r` && name[4] == `e` && name[5] == `d` {
291 return .key_shared
292 } else {
293 return .name
294 }
295 }
296 `i` {
297 if name[2] == `z` && name[3] == `e` && name[4] == `o` && name[5] == `f` {
298 return .key_sizeof
299 } else {
300 return .name
301 }
302 }
303 `t` {
304 match name[2] {
305 `a` {
306 if name[3] == `t` && name[4] == `i` && name[5] == `c` {
307 return .key_static
308 } else {
309 return .name
310 }
311 }
312 `r` {
313 if name[3] == `u` && name[4] == `c` && name[5] == `t` {
314 return .key_struct
315 } else {
316 return .name
317 }
318 }
319 else {
320 return .name
321 }
322 }
323 }
324 else {
325 return .name
326 }
327 }
328 }
329 `t` {
330 if name[1] == `y` && name[2] == `p` && name[3] == `e` && name[4] == `o`
331 && name[5] == `f` {
332 return .key_typeof
333 } else {
334 return .name
335 }
336 }
337 `u` {
338 if name[1] == `n` && name[2] == `s` && name[3] == `a` && name[4] == `f`
339 && name[5] == `e` {
340 return .key_unsafe
341 } else {
342 return .name
343 }
344 }
345 else {
346 return .name
347 }
348 }
349 }
350 8 {
351 match name[0] {
352 `_` {
353 match name[1] {
354 `_` {
355 if name[2] == `g` && name[3] == `l` && name[4] == `o` && name[5] == `b`
356 && name[6] == `a` && name[7] == `l` {
357 return .key_global
358 } else {
359 return .name
360 }
361 }
362 `l` {
363 if name[2] == `i` && name[3] == `k` && name[4] == `e` && name[5] == `l`
364 && name[6] == `y` && name[7] == `_` {
365 return .key_likely
366 } else {
367 return .name
368 }
369 }
370 else {
371 return .name
372 }
373 }
374 }
375 `c` {
376 if name[1] == `o` && name[2] == `n` && name[3] == `t` && name[4] == `i`
377 && name[5] == `n` && name[6] == `u` && name[7] == `e` {
378 return .key_continue
379 } else {
380 return .name
381 }
382 }
383 `v` {
384 if name[1] == `o` && name[2] == `l` && name[3] == `a` && name[4] == `t`
385 && name[5] == `i` && name[6] == `l` && name[7] == `e` {
386 return .key_volatile
387 } else {
388 return .name
389 }
390 }
391 else {
392 return .name
393 }
394 }
395 }
396 9 {
397 match name[0] {
398 `i` {
399 match name[1] {
400 `n` {
401 if name[2] == `t` && name[3] == `e` && name[4] == `r` && name[5] == `f`
402 && name[6] == `a` && name[7] == `c` && name[8] == `e` {
403 return .key_interface
404 } else {
405 return .name
406 }
407 }
408 `s` {
409 if name[2] == `r` && name[3] == `e` && name[4] == `f` && name[5] == `t`
410 && name[6] == `y` && name[7] == `p` && name[8] == `e` {
411 return .key_isreftype
412 } else {
413 return .name
414 }
415 }
416 else {
417 return .name
418 }
419 }
420 }
421 else {
422 return .name
423 }
424 }
425 }
426 10 {
427 match name[0] {
428 `_` {
429 match name[1] {
430 `_` {
431 if name[2] == `o` && name[3] == `f` && name[4] == `f` && name[5] == `s`
432 && name[6] == `e` && name[7] == `t` && name[8] == `o`
433 && name[9] == `f` {
434 return .key_offsetof
435 } else {
436 return .name
437 }
438 }
439 `u` {
440 if name[2] == `n` && name[3] == `l` && name[4] == `i` && name[5] == `k`
441 && name[6] == `e` && name[7] == `l` && name[8] == `y`
442 && name[9] == `_` {
443 return .key_unlikely
444 } else {
445 return .name
446 }
447 }
448 else {
449 return .name
450 }
451 }
452 }
453 else {
454 return .name
455 }
456 }
457 }
458 else {
459 return .name
460 }
461 }
462}
463// vfmt on
464