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