/
mojoshader_lexer.c
1457 lines (1430 loc) · 32.4 KB
1
2
/* Generated by re2c 0.12.1 on Thu Feb 12 01:23:03 2009 */
#line 1 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* MojoShader; generate shader programs from bytecode of compiled
* Direct3D shaders.
*
* Please see the file LICENSE.txt in the source's root directory.
*
* This file written by Ryan C. Gordon.
*/
// This was originally based on examples/pp-c.re from re2c: http://re2c.org/
// re2c is public domain code.
//
// You build mojoshader_lexer_preprocessor.c from the .re file with re2c...
// re2c -is -o mojoshader_lexer_preprocessor.c mojoshader_lexer_preprocessor.re
//
// Changes to the lexer are done to the .re file, not the C code!
//
// Please note that this isn't a perfect C lexer, since it is used for both
// HLSL and shader assembly language, and follows the quirks of Microsoft's
// tools.
#define __MOJOSHADER_INTERNAL__ 1
#include "mojoshader_internal.h"
typedef unsigned char uchar;
29
#define RET(t) do { update_state(s, cursor, token); return t; } while (0)
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#define YYCTYPE uchar
#define YYCURSOR cursor
#define YYLIMIT limit
#define YYMARKER s->lexer_marker
#define YYFILL(n) { if ((n) == 1) { RET(TOKEN_EOI); } }
static void update_state(IncludeState *s, const uchar *cur, const uchar *tok)
{
s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source));
s->source = (const char *) cur;
s->token = (const char *) tok;
} // update_state
Token preprocessor_internal_lexer(IncludeState *s)
{
const uchar *cursor = (const uchar *) s->source;
const uchar *token;
const uchar *limit = cursor + s->bytes_left;
48
int saw_newline = 0;
49
50
51
52
53
54
55
scanner_loop:
token = cursor;
if (YYLIMIT == YYCURSOR)
RET(TOKEN_EOI);
56
#line 67 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
57
58
59
60
#line 61 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
61
62
63
64
{
YYCTYPE yych;
unsigned int yyaccept = 0;
65
if((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
66
yych = *YYCURSOR;
67
68
69
70
switch(yych) {
case 0x09:
case 0x0B:
case 0x0C:
71
case ' ': goto yy62;
72
73
case 0x0A: goto yy64;
case 0x0D: goto yy66;
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
case '!': goto yy24;
case '"': goto yy13;
case '#': goto yy26;
case '%': goto yy46;
case '&': goto yy18;
case '\'': goto yy9;
case '(': goto yy28;
case ')': goto yy30;
case '*': goto yy44;
case '+': goto yy42;
case ',': goto yy36;
case '-': goto yy40;
case '.': goto yy11;
case '/': goto yy2;
case '0': goto yy6;
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9': goto yy8;
case ':': goto yy50;
case ';': goto yy52;
case '<': goto yy16;
case '=': goto yy22;
case '>': goto yy14;
case '?': goto yy58;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
case 'H':
case 'I':
case 'J':
case 'K':
case 'L':
case 'M':
case 'N':
case 'O':
case 'P':
case 'Q':
case 'R':
case 'S':
case 'T':
case 'U':
case 'V':
case 'W':
case 'X':
case 'Y':
case 'Z':
case '_':
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
case 'g':
case 'h':
case 'i':
case 'j':
case 'k':
case 'l':
case 'm':
case 'n':
case 'o':
case 'p':
case 'q':
case 'r':
case 's':
case 't':
case 'u':
case 'v':
case 'w':
case 'x':
case 'y':
case 'z': goto yy4;
case '[': goto yy32;
case '\\': goto yy60;
case ']': goto yy34;
case '^': goto yy48;
case '{': goto yy54;
case '|': goto yy20;
case '}': goto yy56;
case '~': goto yy38;
default: goto yy67;
}
yy2:
++YYCURSOR;
169
170
171
if((yych = *YYCURSOR) == '*') goto yy209;
if(yych == '/') goto yy207;
#line 107 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
172
{ RET('/'); }
173
#line 174 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
174
175
176
177
178
yy4:
++YYCURSOR;
yych = *YYCURSOR;
goto yy206;
yy5:
179
#line 73 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
180
{ RET(TOKEN_IDENTIFIER); }
181
#line 182 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
182
183
184
yy6:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
185
186
187
if(yych <= 'X') {
if(yych <= 'T') {
if(yych == 'L') goto yy181;
188
189
goto yy197;
} else {
190
191
if(yych <= 'U') goto yy181;
if(yych <= 'W') goto yy197;
192
193
194
goto yy198;
}
} else {
195
196
if(yych <= 't') {
if(yych == 'l') goto yy181;
197
198
goto yy197;
} else {
199
200
if(yych <= 'u') goto yy181;
if(yych == 'x') goto yy198;
201
202
203
204
goto yy197;
}
}
yy7:
205
#line 77 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
206
{ RET(TOKEN_INT_LITERAL); }
207
#line 208 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
208
209
210
211
212
213
214
yy8:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
goto yy179;
yy9:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
215
if(yych != 0x0A) goto yy169;
216
yy10:
217
#line 136 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
218
{ printf("bad char\n"); goto scanner_loop; }
219
#line 220 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
220
221
222
yy11:
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
223
224
225
if(yych == '.') goto yy157;
if(yych <= '/') goto yy12;
if(yych <= '9') goto yy158;
226
yy12:
227
#line 99 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
228
{ RET('.'); }
229
#line 230 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
230
231
232
yy13:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
233
if(yych == 0x0A) goto yy10;
234
235
236
goto yy148;
yy14:
++YYCURSOR;
237
238
239
if((yych = *YYCURSOR) <= '<') goto yy15;
if(yych <= '=') goto yy143;
if(yych <= '>') goto yy145;
240
yy15:
241
#line 110 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
242
{ RET('>'); }
243
#line 244 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
244
245
yy16:
++YYCURSOR;
246
247
248
if((yych = *YYCURSOR) <= ';') goto yy17;
if(yych <= '<') goto yy141;
if(yych <= '=') goto yy139;
249
yy17:
250
#line 109 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
251
{ RET('<'); }
252
#line 253 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
253
254
yy18:
++YYCURSOR;
255
256
if((yych = *YYCURSOR) == '&') goto yy137;
#line 101 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
257
{ RET('&'); }
258
#line 259 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
259
260
yy20:
++YYCURSOR;
261
262
if((yych = *YYCURSOR) == '|') goto yy135;
#line 112 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
263
{ RET('|'); }
264
#line 265 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
265
266
yy22:
++YYCURSOR;
267
268
if((yych = *YYCURSOR) == '=') goto yy133;
#line 117 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
269
{ RET('='); }
270
#line 271 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
271
272
yy24:
++YYCURSOR;
273
274
if((yych = *YYCURSOR) == '=') goto yy131;
#line 102 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
275
{ RET('!'); }
276
#line 277 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
277
278
279
yy26:
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
280
281
282
if(yych <= 'c') {
if(yych <= 0x1F) {
if(yych == 0x09) goto yy72;
283
} else {
284
285
if(yych <= ' ') goto yy72;
if(yych == '#') goto yy79;
286
287
}
} else {
288
289
290
if(yych <= 'k') {
if(yych <= 'e') goto yy72;
if(yych == 'i') goto yy72;
291
} else {
292
293
if(yych <= 'l') goto yy72;
if(yych == 'u') goto yy72;
294
295
296
}
}
yy27:
297
#line 120 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
298
{ RET('#'); }
299
#line 300 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
300
301
yy28:
++YYCURSOR;
302
#line 95 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
303
{ RET('('); }
304
#line 305 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
305
306
yy30:
++YYCURSOR;
307
#line 96 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
308
{ RET(')'); }
309
#line 310 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
310
311
yy32:
++YYCURSOR;
312
#line 97 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
313
{ RET('['); }
314
#line 315 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
315
316
yy34:
++YYCURSOR;
317
#line 98 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
318
{ RET(']'); }
319
#line 320 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
320
321
yy36:
++YYCURSOR;
322
#line 100 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
323
{ RET(','); }
324
#line 325 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
325
326
yy38:
++YYCURSOR;
327
#line 103 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
328
{ RET('~'); }
329
#line 330 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
330
331
yy40:
++YYCURSOR;
332
#line 104 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
333
{ RET('-'); }
334
#line 335 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
335
336
yy42:
++YYCURSOR;
337
#line 105 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
338
{ RET('+'); }
339
#line 340 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
340
341
yy44:
++YYCURSOR;
342
#line 106 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
343
{ RET('*'); }
344
#line 345 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
345
346
yy46:
++YYCURSOR;
347
#line 108 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
348
{ RET('%'); }
349
#line 350 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
350
351
yy48:
++YYCURSOR;
352
#line 111 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
353
{ RET('^'); }
354
#line 355 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
355
356
yy50:
++YYCURSOR;
357
#line 113 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
358
{ RET(':'); }
359
#line 360 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
360
361
yy52:
++YYCURSOR;
362
#line 114 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
363
{ RET(';'); }
364
#line 365 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
365
366
yy54:
++YYCURSOR;
367
#line 115 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
368
{ RET('{'); }
369
#line 370 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
370
371
yy56:
++YYCURSOR;
372
#line 116 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
373
{ RET('}'); }
374
#line 375 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
375
376
yy58:
++YYCURSOR;
377
#line 118 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
378
{ RET('?'); }
379
#line 380 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
380
381
yy60:
++YYCURSOR;
382
#line 119 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
383
{ RET('\\'); }
384
#line 385 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
385
386
387
388
389
yy62:
++YYCURSOR;
yych = *YYCURSOR;
goto yy70;
yy63:
390
#line 134 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
391
{ goto scanner_loop; }
392
#line 393 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
393
394
395
yy64:
++YYCURSOR;
yy65:
396
397
398
#line 135 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
{ s->line++; RET('\n'); }
#line 399 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
399
400
yy66:
yych = *++YYCURSOR;
401
if(yych == 0x0A) goto yy68;
402
403
404
405
406
407
408
409
410
goto yy65;
yy67:
yych = *++YYCURSOR;
goto yy10;
yy68:
yych = *++YYCURSOR;
goto yy65;
yy69:
++YYCURSOR;
411
if(YYLIMIT == YYCURSOR) YYFILL(1);
412
413
yych = *YYCURSOR;
yy70:
414
415
if(yych <= 0x0A) {
if(yych == 0x09) goto yy69;
416
417
goto yy63;
} else {
418
419
if(yych <= 0x0C) goto yy69;
if(yych == ' ') goto yy69;
420
421
422
423
goto yy63;
}
yy71:
++YYCURSOR;
424
if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
425
426
yych = *YYCURSOR;
yy72:
427
428
429
if(yych <= 'e') {
if(yych <= 0x1F) {
if(yych == 0x09) goto yy71;
430
} else {
431
432
433
if(yych <= ' ') goto yy71;
if(yych <= 'c') goto yy73;
if(yych <= 'd') goto yy77;
434
435
436
goto yy74;
}
} else {
437
438
if(yych <= 'k') {
if(yych == 'i') goto yy75;
439
} else {
440
441
if(yych <= 'l') goto yy78;
if(yych == 'u') goto yy76;
442
443
444
445
}
}
yy73:
YYCURSOR = YYMARKER;
446
447
448
if(yyaccept <= 2) {
if(yyaccept <= 1) {
if(yyaccept <= 0) {
449
450
451
452
453
454
455
456
goto yy7;
} else {
goto yy10;
}
} else {
goto yy12;
}
} else {
457
458
if(yyaccept <= 4) {
if(yyaccept <= 3) {
459
460
461
462
463
464
465
466
467
468
goto yy27;
} else {
goto yy98;
}
} else {
goto yy160;
}
}
yy74:
yych = *++YYCURSOR;
469
470
if(yych <= 'm') {
if(yych == 'l') goto yy114;
471
472
goto yy73;
} else {
473
474
if(yych <= 'n') goto yy115;
if(yych == 'r') goto yy116;
475
476
477
478
goto yy73;
}
yy75:
yych = *++YYCURSOR;
479
480
if(yych == 'f') goto yy97;
if(yych == 'n') goto yy96;
481
482
483
goto yy73;
yy76:
yych = *++YYCURSOR;
484
if(yych == 'n') goto yy91;
485
486
487
goto yy73;
yy77:
yych = *++YYCURSOR;
488
if(yych == 'e') goto yy85;
489
490
491
goto yy73;
yy78:
yych = *++YYCURSOR;
492
if(yych == 'i') goto yy81;
493
494
495
goto yy73;
yy79:
++YYCURSOR;
496
#line 94 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
497
{ RET(TOKEN_HASHHASH); }
498
#line 499 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
499
500
yy81:
yych = *++YYCURSOR;
501
if(yych != 'n') goto yy73;
502
yych = *++YYCURSOR;
503
if(yych != 'e') goto yy73;
504
++YYCURSOR;
505
#line 123 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
506
{ RET(TOKEN_PP_LINE); }
507
#line 508 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
508
509
yy85:
yych = *++YYCURSOR;
510
if(yych != 'f') goto yy73;
511
yych = *++YYCURSOR;
512
if(yych != 'i') goto yy73;
513
yych = *++YYCURSOR;
514
if(yych != 'n') goto yy73;
515
yych = *++YYCURSOR;
516
if(yych != 'e') goto yy73;
517
++YYCURSOR;
518
#line 124 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
519
{ RET(TOKEN_PP_DEFINE); }
520
#line 521 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
521
522
yy91:
yych = *++YYCURSOR;
523
if(yych != 'd') goto yy73;
524
yych = *++YYCURSOR;
525
if(yych != 'e') goto yy73;
526
yych = *++YYCURSOR;
527
if(yych != 'f') goto yy73;
528
++YYCURSOR;
529
#line 125 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
530
{ RET(TOKEN_PP_UNDEF); }
531
#line 532 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
532
533
yy96:
yych = *++YYCURSOR;
534
if(yych == 'c') goto yy108;
535
536
537
538
goto yy73;
yy97:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
539
540
if(yych == 'd') goto yy100;
if(yych == 'n') goto yy99;
541
yy98:
542
#line 126 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
543
{ RET(TOKEN_PP_IF); }
544
#line 545 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
545
546
yy99:
yych = *++YYCURSOR;
547
if(yych == 'd') goto yy104;
548
549
550
goto yy73;
yy100:
yych = *++YYCURSOR;
551
if(yych != 'e') goto yy73;
552
yych = *++YYCURSOR;
553
if(yych != 'f') goto yy73;
554
++YYCURSOR;
555
#line 127 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
556
{ RET(TOKEN_PP_IFDEF); }
557
#line 558 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
558
559
yy104:
yych = *++YYCURSOR;
560
if(yych != 'e') goto yy73;
561
yych = *++YYCURSOR;
562
if(yych != 'f') goto yy73;
563
++YYCURSOR;
564
#line 128 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
565
{ RET(TOKEN_PP_IFNDEF); }
566
#line 567 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
567
568
yy108:
yych = *++YYCURSOR;
569
if(yych != 'l') goto yy73;
570
yych = *++YYCURSOR;
571
if(yych != 'u') goto yy73;
572
yych = *++YYCURSOR;
573
if(yych != 'd') goto yy73;
574
yych = *++YYCURSOR;
575
if(yych != 'e') goto yy73;
576
++YYCURSOR;
577
#line 122 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
578
{ RET(TOKEN_PP_INCLUDE); }
579
#line 580 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
580
581
yy114:
yych = *++YYCURSOR;
582
583
if(yych == 'i') goto yy125;
if(yych == 's') goto yy126;
584
585
586
goto yy73;
yy115:
yych = *++YYCURSOR;
587
if(yych == 'd') goto yy121;
588
589
590
goto yy73;
yy116:
yych = *++YYCURSOR;
591
if(yych != 'r') goto yy73;
592
yych = *++YYCURSOR;
593
if(yych != 'o') goto yy73;
594
yych = *++YYCURSOR;
595
if(yych != 'r') goto yy73;
596
++YYCURSOR;
597
#line 132 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
598
{ RET(TOKEN_PP_ERROR); }
599
#line 600 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
600
601
yy121:
yych = *++YYCURSOR;
602
if(yych != 'i') goto yy73;
603
yych = *++YYCURSOR;
604
if(yych != 'f') goto yy73;
605
++YYCURSOR;
606
#line 131 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
607
{ RET(TOKEN_PP_ENDIF); }
608
#line 609 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
609
610
yy125:
yych = *++YYCURSOR;
611
if(yych == 'f') goto yy129;
612
613
614
goto yy73;
yy126:
yych = *++YYCURSOR;
615
if(yych != 'e') goto yy73;
616
++YYCURSOR;
617
#line 129 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
618
{ RET(TOKEN_PP_ELSE); }
619
#line 620 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
620
621
yy129:
++YYCURSOR;
622
#line 130 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
623
{ RET(TOKEN_PP_ELIF); }
624
#line 625 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
625
626
yy131:
++YYCURSOR;
627
#line 93 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
628
{ RET(TOKEN_NEQ); }
629
#line 630 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
630
631
yy133:
++YYCURSOR;
632
#line 92 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
633
{ RET(TOKEN_EQL); }
634
#line 635 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
635
636
yy135:
++YYCURSOR;
637
#line 89 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
638
{ RET(TOKEN_OROR); }
639
#line 640 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
640
641
yy137:
++YYCURSOR;
642
#line 88 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
643
{ RET(TOKEN_ANDAND); }
644
#line 645 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
645
646
yy139:
++YYCURSOR;
647
#line 90 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
648
{ RET(TOKEN_LEQ); }
649
#line 650 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
650
651
yy141:
++YYCURSOR;
652
#line 87 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
653
{ RET(TOKEN_LSHIFT); }
654
#line 655 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
655
656
yy143:
++YYCURSOR;
657
#line 91 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
658
{ RET(TOKEN_GEQ); }
659
#line 660 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
660
661
yy145:
++YYCURSOR;
662
#line 86 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
663
{ RET(TOKEN_RSHIFT); }
664
#line 665 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
665
666
yy147:
++YYCURSOR;
667
if(YYLIMIT == YYCURSOR) YYFILL(1);
668
669
yych = *YYCURSOR;
yy148:
670
671
if(yych <= '!') {
if(yych == 0x0A) goto yy73;
672
673
goto yy147;
} else {
674
675
if(yych <= '"') goto yy150;
if(yych != '\\') goto yy147;
676
677
678
}
yy149:
++YYCURSOR;
679
if(YYLIMIT == YYCURSOR) YYFILL(1);
680
yych = *YYCURSOR;
681
682
683
684
if(yych <= 'b') {
if(yych <= '7') {
if(yych <= '&') {
if(yych == '"') goto yy147;
685
686
goto yy73;
} else {
687
688
if(yych <= '\'') goto yy147;
if(yych <= '/') goto yy73;
689
690
691
goto yy153;
}
} else {
692
693
if(yych <= '[') {
if(yych == '?') goto yy147;
694
695
goto yy73;
} else {
696
697
if(yych <= '\\') goto yy147;
if(yych <= '`') goto yy73;
698
699
700
701
goto yy147;
}
}
} else {
702
703
704
if(yych <= 'r') {
if(yych <= 'm') {
if(yych == 'f') goto yy147;
705
706
goto yy73;
} else {
707
708
if(yych <= 'n') goto yy147;
if(yych <= 'q') goto yy73;
709
710
711
goto yy147;
}
} else {
712
713
if(yych <= 'u') {
if(yych == 't') goto yy147;
714
715
goto yy73;
} else {
716
717
if(yych <= 'v') goto yy147;
if(yych == 'x') goto yy152;
718
719
720
721
722
723
goto yy73;
}
}
}
yy150:
++YYCURSOR;
724
#line 83 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
725
{ RET(TOKEN_STRING_LITERAL); }
726
#line 727 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
727
728
yy152:
++YYCURSOR;
729
if(YYLIMIT == YYCURSOR) YYFILL(1);
730
yych = *YYCURSOR;
731
732
733
if(yych <= '@') {
if(yych <= '/') goto yy73;
if(yych <= '9') goto yy155;
734
735
goto yy73;
} else {
736
737
738
if(yych <= 'F') goto yy155;
if(yych <= '`') goto yy73;
if(yych <= 'f') goto yy155;
739
740
741
742
goto yy73;
}
yy153:
++YYCURSOR;
743
if(YYLIMIT == YYCURSOR) YYFILL(1);
744
yych = *YYCURSOR;
745
746
747
if(yych <= '"') {
if(yych == 0x0A) goto yy73;
if(yych <= '!') goto yy147;
748
749
goto yy150;
} else {
750
751
if(yych <= '7') {
if(yych <= '/') goto yy147;
752
753
goto yy153;
} else {
754
if(yych == '\\') goto yy149;
755
756
757
758
759
goto yy147;
}
}
yy155:
++YYCURSOR;
760
if(YYLIMIT == YYCURSOR) YYFILL(1);
761
yych = *YYCURSOR;
762
763
764
if(yych <= '9') {
if(yych <= '!') {
if(yych == 0x0A) goto yy73;
765
766
goto yy147;
} else {
767
768
if(yych <= '"') goto yy150;
if(yych <= '/') goto yy147;
769
770
771
goto yy155;
}
} else {
772
773
774
if(yych <= '[') {
if(yych <= '@') goto yy147;
if(yych <= 'F') goto yy155;
775
776
goto yy147;
} else {
777
778
779
if(yych <= '\\') goto yy149;
if(yych <= '`') goto yy147;
if(yych <= 'f') goto yy155;
780
781
782
783
784
goto yy147;
}
}
yy157:
yych = *++YYCURSOR;
785
if(yych == '.') goto yy166;
786
787
788
789
goto yy73;
yy158:
yyaccept = 5;
YYMARKER = ++YYCURSOR;
790
if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
791
yych = *YYCURSOR;
792
793
794
795
if(yych <= 'K') {
if(yych <= 'D') {
if(yych <= '/') goto yy160;
if(yych <= '9') goto yy158;
796
} else {
797
798
if(yych <= 'E') goto yy161;
if(yych <= 'F') goto yy162;
799
800
}
} else {
801
802
803
if(yych <= 'e') {
if(yych <= 'L') goto yy162;
if(yych >= 'e') goto yy161;
804
} else {
805
806
if(yych <= 'f') goto yy162;
if(yych == 'l') goto yy162;
807
808
809
}
}
yy160:
810
#line 80 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
811
{ RET(TOKEN_FLOAT_LITERAL); }
812
#line 813 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
813
814
yy161:
yych = *++YYCURSOR;
815
816
if(yych <= ',') {
if(yych == '+') goto yy163;
817
818
goto yy73;
} else {
819
820
821
if(yych <= '-') goto yy163;
if(yych <= '/') goto yy73;
if(yych <= '9') goto yy164;
822
823
824
825
826
827
828
goto yy73;
}
yy162:
yych = *++YYCURSOR;
goto yy160;
yy163:
yych = *++YYCURSOR;
829
830
if(yych <= '/') goto yy73;
if(yych >= ':') goto yy73;
831
832
yy164:
++YYCURSOR;
833
if(YYLIMIT == YYCURSOR) YYFILL(1);
834
yych = *YYCURSOR;
835
836
837
if(yych <= 'K') {
if(yych <= '9') {
if(yych <= '/') goto yy160;
838
839
goto yy164;
} else {
840
if(yych == 'F') goto yy162;
841
842
843
goto yy160;
}
} else {
844
845
846
if(yych <= 'f') {
if(yych <= 'L') goto yy162;
if(yych <= 'e') goto yy160;
847
848
goto yy162;
} else {
849
if(yych == 'l') goto yy162;
850
851
852
853
854
goto yy160;
}
}
yy166:
++YYCURSOR;
855
#line 85 "/home/icculus/projects/mojoshader/mojoshader_lexer.re"
856
{ RET(TOKEN_ELLIPSIS); }
857
#line 858 "/home/icculus/projects/mojoshader/mojoshader_lexer.c"
858
859
yy168:
++YYCURSOR;
860
if(YYLIMIT == YYCURSOR) YYFILL(1);
861
862
yych = *YYCURSOR;
yy169:
863
864
if(yych <= '&') {
if(yych == 0x0A) goto yy73;
865
866
goto yy168;
} else {
867
868
if(yych <= '\'') goto yy171;
if(yych != '\\') goto yy168;
869
870
871
}
yy170:
++YYCURSOR;
872
if(YYLIMIT == YYCURSOR) YYFILL(1);
873
yych = *YYCURSOR;
874
875
876
877
if(yych <= 'b') {
if(yych <= '7') {
if(yych <= '&') {
if(yych == '"') goto yy168;
878
879
goto yy73;
} else {
880
881
if(yych <= '\'') goto yy168;
if(yych <= '/') goto yy73;
882
883
884
goto yy173;
}
} else {
885
886
if(yych <= '[') {
if(yych == '?') goto yy168;
887
888
goto yy73;
} else {
889
890
if(yych <= '\\') goto yy168;
if(yych <= '`') goto yy73;
891
892
893
894
goto yy168;
}
}
} else {
895
896
897
if(yych <= 'r') {
if(yych <= 'm') {
if(yych == 'f') goto yy168;
898
899
goto yy73;
} else {
900
901
if(yych <= 'n') goto yy168;
if(yych <= 'q') goto yy73;
902
903
904
goto yy168;
}
} else {
905
906
if(yych <= 'u') {
if(yych == 't') goto yy168;
907
908
goto yy73;
} else {
909
910
if(yych <= 'v') goto yy168;
if(yych == 'x') goto yy172;
911
912
913
914
915
916
917
918
919
goto yy73;
}
}
}
yy171:
yych = *++YYCURSOR;
goto yy7;
yy172:
++YYCURSOR;
920
if(YYLIMIT == YYCURSOR) YYFILL(1);
921
yych = *YYCURSOR;
922
923
924
if(yych <= '@') {
if(yych <= '/') goto yy73;
if(yych <= '9') goto yy175;
925
926
goto yy73;
} else {
927
928
929
if(yych <= 'F') goto yy175;
if(yych <= '`') goto yy73;
if(yych <= 'f') goto yy175;
930
931
932
933
goto yy73;
}
yy173:
++YYCURSOR;
934
if(YYLIMIT == YYCURSOR) YYFILL(1);
935
yych = *YYCURSOR;
936
937
938
if(yych <= '\'') {
if(yych == 0x0A) goto yy73;
if(yych <= '&') goto yy168;
939
940
goto yy171;
} else {
941
942
if(yych <= '7') {
if(yych <= '/') goto yy168;
943
944
goto yy173;
} else {
945
if(yych == '\\') goto yy170;
946
947
948
949
950
goto yy168;
}
}
yy175:
++YYCURSOR;
951
if(YYLIMIT == YYCURSOR) YYFILL(1);
952
yych = *YYCURSOR;
953
954
955
if(yych <= '9') {
if(yych <= '&') {
if(yych == 0x0A) goto yy73;
956
957
goto yy168;
} else {
958
959
if(yych <= '\'') goto yy171;
if(yych <= '/') goto yy168;
960
961
962
goto yy175;
}
} else {
963
964
965
if(yych <= '[') {
if(yych <= '@') goto yy168;
if(yych <= 'F') goto yy175;
966
967
goto yy168;
} else {
968
969
970
if(yych <= '\\') goto yy170;
if(yych <= '`') goto yy168;
if(yych <= 'f') goto yy175;
971
972
973
974
975
976
goto yy168;
}
}
yy177:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
977
978
if(yych == 'E') goto yy188;
if(yych == 'e') goto yy188;
979
980
981
982
goto yy187;
yy178:
yyaccept = 0;
YYMARKER = ++YYCURSOR;
983
if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
984
985
yych = *YYCURSOR;
yy179:
986
987
988
989
if(yych <= 'L') {
if(yych <= '9') {
if(yych == '.') goto yy177;
if(yych <= '/') goto yy7;
990
991
goto yy178;
} else {
992
993
if(yych == 'E') goto yy180;
if(yych <= 'K') goto yy7;
994
995
996
goto yy181;
}
} else {
997
998
999
if(yych <= 'e') {
if(yych == 'U') goto yy181;
if(yych <= 'd') goto yy7;
1000
} else {