Skip to content

Latest commit

 

History

History
1242 lines (1210 loc) · 23.8 KB

mojoshader_lexer.c

File metadata and controls

1242 lines (1210 loc) · 23.8 KB
 
Jul 20, 2020
Jul 20, 2020
1
/* Generated by re2c 1.2.1 */
2
3
4
5
6
7
8
9
10
11
12
13
/**
* 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.
//
Sep 27, 2015
Sep 27, 2015
14
15
// You build mojoshader_lexer.c from the .re file with re2c...
// re2c -is -o mojoshader_lexer.c mojoshader_lexer.re
16
17
18
19
20
21
22
23
24
25
26
27
//
// 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;
Feb 18, 2009
Feb 18, 2009
28
#define YYMAXFILL 8
Jul 20, 2020
Jul 20, 2020
29
Nov 15, 2009
Nov 15, 2009
30
#define RET(t) return update_state(s, eoi, cursor, token, (Token) t)
31
32
33
34
#define YYCTYPE uchar
#define YYCURSOR cursor
#define YYLIMIT limit
#define YYMARKER s->lexer_marker
Feb 18, 2009
Feb 18, 2009
35
#define YYFILL(n) { if ((n) == 1) { cursor = sentinel; limit = cursor + YYMAXFILL; eoi = 1; } }
Feb 18, 2009
Feb 18, 2009
37
38
39
40
static uchar sentinel[YYMAXFILL];
static Token update_state(IncludeState *s, int eoi, const uchar *cur,
const uchar *tok, const Token val)
Feb 18, 2009
Feb 18, 2009
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
if (eoi)
{
s->bytes_left = 0;
s->source = (const char *) s->source_base + s->orig_length;
if ( (tok >= sentinel) && (tok < (sentinel+YYMAXFILL)) )
s->token = s->source;
else
s->token = (const char *) tok;
} // if
else
{
s->bytes_left -= (unsigned int) (cur - ((const uchar *) s->source));
s->source = (const char *) cur;
s->token = (const char *) tok;
} // else
s->tokenlen = (unsigned int) (s->source - s->token);
s->tokenval = val;
return val;
60
61
} // update_state
Feb 18, 2009
Feb 18, 2009
62
Token preprocessor_lexer(IncludeState *s)
63
64
{
const uchar *cursor = (const uchar *) s->source;
Feb 22, 2009
Feb 22, 2009
65
const uchar *token = cursor;
Feb 13, 2009
Feb 13, 2009
66
const uchar *matchptr;
67
const uchar *limit = cursor + s->bytes_left;
Feb 18, 2009
Feb 18, 2009
68
int eoi = 0;
Feb 22, 2009
Feb 22, 2009
70
71
72
73
74
75
// preprocessor directives are only valid at start of line.
if (s->tokenval == ((Token) '\n'))
goto ppdirective; // may jump back to scanner_loop.
76
scanner_loop:
Feb 18, 2009
Feb 18, 2009
77
if (YYLIMIT == YYCURSOR) YYFILL(1);
78
79
80
81
82
83
token = cursor;
{
YYCTYPE yych;
unsigned int yyaccept = 0;
Jul 20, 2020
Jul 20, 2020
84
if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
85
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
86
switch (yych) {
Jul 20, 2020
Jul 20, 2020
87
case 0x00: goto yy2;
Feb 18, 2009
Feb 18, 2009
88
89
90
case '\t':
case '\v':
case '\f':
Jul 20, 2020
Jul 20, 2020
91
92
93
94
case ' ': goto yy6;
case '\n': goto yy9;
case '\r': goto yy11;
case '!': goto yy12;
Feb 18, 2009
Feb 18, 2009
95
case '"': goto yy14;
Jul 20, 2020
Jul 20, 2020
96
97
98
99
100
101
102
103
104
105
106
107
108
case '#': goto yy15;
case '%': goto yy17;
case '&': goto yy19;
case '\'': goto yy21;
case '(': goto yy22;
case ')': goto yy24;
case '*': goto yy26;
case '+': goto yy28;
case ',': goto yy30;
case '-': goto yy32;
case '.': goto yy34;
case '/': goto yy36;
case '0': goto yy38;
109
110
111
112
113
114
115
116
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
Jul 20, 2020
Jul 20, 2020
117
118
119
120
121
122
123
case '9': goto yy40;
case ':': goto yy42;
case ';': goto yy44;
case '<': goto yy46;
case '=': goto yy48;
case '>': goto yy50;
case '?': goto yy52;
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
169
170
171
172
173
174
175
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':
Jul 20, 2020
Jul 20, 2020
176
177
178
179
180
181
182
183
184
185
case 'z': goto yy54;
case '[': goto yy57;
case '\\': goto yy59;
case ']': goto yy60;
case '^': goto yy62;
case '{': goto yy64;
case '|': goto yy66;
case '}': goto yy68;
case '~': goto yy70;
default: goto yy4;
186
187
}
yy2:
Jul 20, 2020
Jul 20, 2020
188
189
++YYCURSOR;
{ if (eoi) { RET(TOKEN_EOI); } goto bad_chars; }
Feb 18, 2009
Feb 18, 2009
190
yy4:
191
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
192
193
yy5:
{ goto bad_chars; }
Feb 18, 2009
Feb 18, 2009
194
yy6:
195
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
196
if (YYLIMIT <= YYCURSOR) YYFILL(1);
197
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
198
199
if (yych <= '\n') {
if (yych == '\t') goto yy6;
200
} else {
Jul 20, 2020
Jul 20, 2020
201
202
if (yych <= '\f') goto yy6;
if (yych == ' ') goto yy6;
Jul 20, 2020
Jul 20, 2020
204
{ if (s->report_whitespace) RET(' '); goto scanner_loop; }
Jul 20, 2020
Jul 20, 2020
206
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
207
yy10:
Jul 20, 2020
Jul 20, 2020
208
{ s->line++; RET('\n'); }
Jul 20, 2020
Jul 20, 2020
210
211
212
yych = *++YYCURSOR;
if (yych == '\n') goto yy9;
goto yy10;
Jul 20, 2020
Jul 20, 2020
214
215
216
yych = *++YYCURSOR;
if (yych == '=') goto yy72;
{ RET('!'); }
Feb 18, 2009
Feb 18, 2009
218
219
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
Jul 20, 2020
Jul 20, 2020
220
221
222
if (yych == '\n') goto yy5;
if (yych == '\r') goto yy5;
goto yy75;
Jul 20, 2020
Jul 20, 2020
224
225
226
yych = *++YYCURSOR;
if (yych == '#') goto yy80;
{ RET(TOKEN_HASH); }
Jul 20, 2020
Jul 20, 2020
228
229
230
yych = *++YYCURSOR;
if (yych == '=') goto yy82;
{ RET('%'); }
Feb 18, 2009
Feb 18, 2009
231
yy19:
Jul 20, 2020
Jul 20, 2020
232
233
234
235
yych = *++YYCURSOR;
if (yych == '&') goto yy84;
if (yych == '=') goto yy86;
{ RET('&'); }
Feb 18, 2009
Feb 18, 2009
236
yy21:
Jul 20, 2020
Jul 20, 2020
237
238
239
240
241
242
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == '\n') goto yy5;
if (yych == '\r') goto yy5;
goto yy89;
yy22:
243
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
244
245
{ RET('('); }
yy24:
Feb 12, 2009
Feb 12, 2009
246
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
247
248
249
250
{ RET(')'); }
yy26:
yych = *++YYCURSOR;
if (yych == '=') goto yy92;
Feb 12, 2009
Feb 12, 2009
251
{ RET('*'); }
Jul 20, 2020
Jul 20, 2020
252
253
254
255
256
257
yy28:
yych = *++YYCURSOR;
if (yych == '+') goto yy94;
if (yych == '=') goto yy96;
{ RET('+'); }
yy30:
258
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
259
260
261
262
263
264
265
266
267
268
{ RET(','); }
yy32:
yych = *++YYCURSOR;
if (yych == '-') goto yy98;
if (yych == '=') goto yy100;
{ RET('-'); }
yy34:
yych = *++YYCURSOR;
if (yych <= '/') goto yy35;
if (yych <= '9') goto yy102;
Feb 18, 2009
Feb 18, 2009
269
yy35:
Jul 20, 2020
Jul 20, 2020
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
{ RET('.'); }
yy36:
yych = *++YYCURSOR;
if (yych <= '.') {
if (yych == '*') goto yy105;
} else {
if (yych <= '/') goto yy107;
if (yych == '=') goto yy109;
}
{ RET('/'); }
yy38:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if (yych == 'X') goto yy114;
if (yych == 'x') goto yy114;
goto yy41;
Feb 25, 2010
Feb 25, 2010
286
yy39:
Jul 20, 2020
Jul 20, 2020
287
288
289
290
291
292
{ RET(TOKEN_INT_LITERAL); }
yy40:
yyaccept = 1;
YYMARKER = ++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
yych = *YYCURSOR;
Feb 25, 2010
Feb 25, 2010
293
yy41:
Jul 20, 2020
Jul 20, 2020
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
if (yych <= 'L') {
if (yych <= '9') {
if (yych == '.') goto yy102;
if (yych <= '/') goto yy39;
goto yy40;
} else {
if (yych == 'E') goto yy111;
if (yych <= 'K') goto yy39;
goto yy112;
}
} else {
if (yych <= 'e') {
if (yych == 'U') goto yy112;
if (yych <= 'd') goto yy39;
goto yy111;
} else {
if (yych <= 'l') {
if (yych <= 'k') goto yy39;
goto yy112;
} else {
if (yych == 'u') goto yy112;
goto yy39;
}
}
}
yy42:
320
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
321
322
{ RET(':'); }
yy44:
323
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
324
325
326
327
328
329
{ if (s->asm_comments) goto singlelinecomment; RET(';'); }
yy46:
yych = *++YYCURSOR;
if (yych <= ';') goto yy47;
if (yych <= '<') goto yy115;
if (yych <= '=') goto yy117;
Feb 25, 2010
Feb 25, 2010
330
yy47:
Jul 20, 2020
Jul 20, 2020
331
332
333
334
335
336
337
338
339
340
{ RET('<'); }
yy48:
yych = *++YYCURSOR;
if (yych == '=') goto yy119;
{ RET('='); }
yy50:
yych = *++YYCURSOR;
if (yych <= '<') goto yy51;
if (yych <= '=') goto yy121;
if (yych <= '>') goto yy123;
Feb 25, 2010
Feb 25, 2010
341
yy51:
Jul 20, 2020
Jul 20, 2020
342
343
{ RET('>'); }
yy52:
344
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
345
346
{ RET('?'); }
yy54:
347
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= 'Z') {
if (yych <= '/') goto yy56;
if (yych <= '9') goto yy54;
if (yych >= 'A') goto yy54;
} else {
if (yych <= '_') {
if (yych >= '_') goto yy54;
} else {
if (yych <= '`') goto yy56;
if (yych <= 'z') goto yy54;
}
}
yy56:
{ RET(TOKEN_IDENTIFIER); }
Feb 25, 2010
Feb 25, 2010
364
yy57:
365
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
366
{ RET('['); }
Feb 25, 2010
Feb 25, 2010
367
yy59:
Jul 20, 2020
Jul 20, 2020
368
369
370
371
372
373
374
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 0x08) goto yy5;
if (yych <= '\r') goto yy126;
if (yych == ' ') goto yy126;
goto yy5;
yy60:
375
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
376
377
378
379
380
{ RET(']'); }
yy62:
yych = *++YYCURSOR;
if (yych == '=') goto yy130;
{ RET('^'); }
Feb 14, 2009
Feb 14, 2009
381
yy64:
Feb 25, 2010
Feb 25, 2010
382
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
383
{ RET('{'); }
384
385
yy66:
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
386
387
388
if (yych == '=') goto yy132;
if (yych == '|') goto yy134;
{ RET('|'); }
Jul 20, 2020
Jul 20, 2020
390
391
++YYCURSOR;
{ RET('}'); }
Feb 25, 2010
Feb 25, 2010
392
yy70:
393
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
394
{ RET('~'); }
Feb 25, 2010
Feb 25, 2010
395
yy72:
396
397
++YYCURSOR;
{ RET(TOKEN_NEQ); }
Jul 20, 2020
Jul 20, 2020
398
yy74:
399
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
400
if (YYLIMIT <= YYCURSOR) YYFILL(1);
401
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
402
yy75:
Feb 18, 2009
Feb 18, 2009
403
if (yych <= '\r') {
Jul 20, 2020
Jul 20, 2020
404
405
if (yych == '\n') goto yy76;
if (yych <= '\f') goto yy74;
406
} else {
Feb 18, 2009
Feb 18, 2009
407
if (yych <= '"') {
Jul 20, 2020
Jul 20, 2020
408
409
if (yych <= '!') goto yy74;
goto yy77;
Feb 13, 2009
Feb 13, 2009
410
} else {
Jul 20, 2020
Jul 20, 2020
411
412
if (yych == '\\') goto yy79;
goto yy74;
Feb 13, 2009
Feb 13, 2009
413
}
Jul 20, 2020
Jul 20, 2020
415
yy76:
Feb 22, 2009
Feb 22, 2009
416
417
YYCURSOR = YYMARKER;
if (yyaccept <= 1) {
Jul 20, 2020
Jul 20, 2020
418
419
if (yyaccept == 0) {
goto yy5;
Feb 22, 2009
Feb 22, 2009
420
} else {
Jul 20, 2020
Jul 20, 2020
421
goto yy39;
Feb 22, 2009
Feb 22, 2009
422
423
}
} else {
Jul 20, 2020
Jul 20, 2020
424
goto yy104;
Feb 22, 2009
Feb 22, 2009
425
}
Jul 20, 2020
Jul 20, 2020
426
427
428
429
yy77:
++YYCURSOR;
{ RET(TOKEN_STRING_LITERAL); }
yy79:
430
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
431
if (YYLIMIT <= YYCURSOR) YYFILL(1);
432
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
433
434
435
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
Jul 20, 2020
Jul 20, 2020
436
437
if (yych == '"') goto yy74;
goto yy76;
438
} else {
Jul 20, 2020
Jul 20, 2020
439
440
441
if (yych <= '\'') goto yy74;
if (yych <= '/') goto yy76;
goto yy74;
442
443
}
} else {
Feb 18, 2009
Feb 18, 2009
444
if (yych <= '[') {
Jul 20, 2020
Jul 20, 2020
445
446
if (yych == '?') goto yy74;
goto yy76;
447
} else {
Jul 20, 2020
Jul 20, 2020
448
449
450
if (yych <= '\\') goto yy74;
if (yych <= '`') goto yy76;
goto yy74;
451
452
453
}
}
} else {
Feb 18, 2009
Feb 18, 2009
454
455
if (yych <= 'r') {
if (yych <= 'm') {
Jul 20, 2020
Jul 20, 2020
456
457
if (yych == 'f') goto yy74;
goto yy76;
458
} else {
Jul 20, 2020
Jul 20, 2020
459
460
461
if (yych <= 'n') goto yy74;
if (yych <= 'q') goto yy76;
goto yy74;
462
463
}
} else {
Feb 18, 2009
Feb 18, 2009
464
if (yych <= 'u') {
Jul 20, 2020
Jul 20, 2020
465
466
if (yych == 't') goto yy74;
goto yy76;
467
} else {
Jul 20, 2020
Jul 20, 2020
468
469
470
if (yych <= 'v') goto yy74;
if (yych == 'x') goto yy136;
goto yy76;
471
472
473
}
}
}
Jul 20, 2020
Jul 20, 2020
474
yy80:
475
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
476
477
{ RET(TOKEN_HASHHASH); }
yy82:
478
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
479
480
481
482
483
484
485
486
{ RET(TOKEN_MODASSIGN); }
yy84:
++YYCURSOR;
{ RET(TOKEN_ANDAND); }
yy86:
++YYCURSOR;
{ RET(TOKEN_ANDASSIGN); }
yy88:
487
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
488
if (YYLIMIT <= YYCURSOR) YYFILL(1);
489
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
490
491
492
493
494
yy89:
if (yych <= '\r') {
if (yych == '\n') goto yy76;
if (yych <= '\f') goto yy88;
goto yy76;
495
} else {
Jul 20, 2020
Jul 20, 2020
496
497
if (yych <= '\'') {
if (yych <= '&') goto yy88;
498
} else {
Jul 20, 2020
Jul 20, 2020
499
500
if (yych == '\\') goto yy91;
goto yy88;
501
502
}
}
Jul 20, 2020
Jul 20, 2020
503
504
505
++YYCURSOR;
goto yy39;
yy91:
506
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
507
if (YYLIMIT <= YYCURSOR) YYFILL(1);
508
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
509
510
511
512
513
514
515
516
517
518
if (yych <= 'b') {
if (yych <= '7') {
if (yych <= '&') {
if (yych == '"') goto yy88;
goto yy76;
} else {
if (yych <= '\'') goto yy88;
if (yych <= '/') goto yy76;
goto yy88;
}
519
} else {
Jul 20, 2020
Jul 20, 2020
520
521
522
523
524
525
526
527
if (yych <= '[') {
if (yych == '?') goto yy88;
goto yy76;
} else {
if (yych <= '\\') goto yy88;
if (yych <= '`') goto yy76;
goto yy88;
}
528
529
}
} else {
Feb 18, 2009
Feb 18, 2009
530
531
if (yych <= 'r') {
if (yych <= 'm') {
Jul 20, 2020
Jul 20, 2020
532
533
if (yych == 'f') goto yy88;
goto yy76;
534
} else {
Jul 20, 2020
Jul 20, 2020
535
536
537
if (yych <= 'n') goto yy88;
if (yych <= 'q') goto yy76;
goto yy88;
538
539
}
} else {
Feb 18, 2009
Feb 18, 2009
540
if (yych <= 'u') {
Jul 20, 2020
Jul 20, 2020
541
542
if (yych == 't') goto yy88;
goto yy76;
543
} else {
Jul 20, 2020
Jul 20, 2020
544
545
546
if (yych <= 'v') goto yy88;
if (yych == 'x') goto yy137;
goto yy76;
547
548
549
}
}
}
Jul 20, 2020
Jul 20, 2020
550
yy92:
551
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
552
553
{ RET(TOKEN_MULTASSIGN); }
yy94:
554
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
555
556
{ RET(TOKEN_INCREMENT); }
yy96:
557
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
558
559
560
561
562
563
564
565
{ RET(TOKEN_ADDASSIGN); }
yy98:
++YYCURSOR;
{ RET(TOKEN_DECREMENT); }
yy100:
++YYCURSOR;
{ RET(TOKEN_SUBASSIGN); }
yy102:
Feb 22, 2009
Feb 22, 2009
566
yyaccept = 2;
567
YYMARKER = ++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
568
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
569
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
570
571
572
573
if (yych <= 'G') {
if (yych <= 'D') {
if (yych <= '/') goto yy104;
if (yych <= '9') goto yy102;
574
} else {
Jul 20, 2020
Jul 20, 2020
575
576
if (yych <= 'E') goto yy111;
if (yych <= 'F') goto yy138;
577
578
}
} else {
Feb 18, 2009
Feb 18, 2009
579
if (yych <= 'e') {
Jul 20, 2020
Jul 20, 2020
580
581
if (yych <= 'H') goto yy138;
if (yych >= 'e') goto yy111;
582
} else {
Jul 20, 2020
Jul 20, 2020
583
584
if (yych == 'g') goto yy104;
if (yych <= 'h') goto yy138;
585
586
}
}
Jul 20, 2020
Jul 20, 2020
587
588
589
590
591
592
593
594
595
596
597
598
yy104:
{ RET(TOKEN_FLOAT_LITERAL); }
yy105:
++YYCURSOR;
{ goto multilinecomment; }
yy107:
++YYCURSOR;
{ goto singlelinecomment; }
yy109:
++YYCURSOR;
{ RET(TOKEN_DIVASSIGN); }
yy111:
599
yych = *++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
600
if (yych <= ',') {
Jul 20, 2020
Jul 20, 2020
601
602
if (yych == '+') goto yy139;
goto yy76;
603
} else {
Jul 20, 2020
Jul 20, 2020
604
605
606
607
if (yych <= '-') goto yy139;
if (yych <= '/') goto yy76;
if (yych <= '9') goto yy140;
goto yy76;
Jul 20, 2020
Jul 20, 2020
609
yy112:
610
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
611
if (YYLIMIT <= YYCURSOR) YYFILL(1);
612
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
613
if (yych <= 'U') {
Jul 20, 2020
Jul 20, 2020
614
615
616
if (yych == 'L') goto yy112;
if (yych <= 'T') goto yy39;
goto yy112;
617
} else {
Feb 18, 2009
Feb 18, 2009
618
if (yych <= 'l') {
Jul 20, 2020
Jul 20, 2020
619
620
if (yych <= 'k') goto yy39;
goto yy112;
621
} else {
Jul 20, 2020
Jul 20, 2020
622
623
if (yych == 'u') goto yy112;
goto yy39;
624
625
}
}
Jul 20, 2020
Jul 20, 2020
626
yy114:
Feb 25, 2010
Feb 25, 2010
627
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
628
629
630
631
if (yych <= '@') {
if (yych <= '/') goto yy76;
if (yych <= '9') goto yy142;
goto yy76;
632
} else {
Jul 20, 2020
Jul 20, 2020
633
634
635
636
if (yych <= 'F') goto yy142;
if (yych <= '`') goto yy76;
if (yych <= 'f') goto yy142;
goto yy76;
Jul 20, 2020
Jul 20, 2020
638
yy115:
639
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
if (yych == '=') goto yy144;
{ RET(TOKEN_LSHIFT); }
yy117:
++YYCURSOR;
{ RET(TOKEN_LEQ); }
yy119:
++YYCURSOR;
{ RET(TOKEN_EQL); }
yy121:
++YYCURSOR;
{ RET(TOKEN_GEQ); }
yy123:
yych = *++YYCURSOR;
if (yych == '=') goto yy146;
{ RET(TOKEN_RSHIFT); }
yy125:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
yy126:
if (yych <= '\f') {
if (yych <= 0x08) goto yy76;
if (yych != '\n') goto yy125;
663
} else {
Jul 20, 2020
Jul 20, 2020
664
665
666
if (yych <= '\r') goto yy129;
if (yych == ' ') goto yy125;
goto yy76;
Jul 20, 2020
Jul 20, 2020
668
669
670
671
672
yy127:
++YYCURSOR;
yy128:
{ s->line++; goto scanner_loop; }
yy129:
Feb 25, 2010
Feb 25, 2010
673
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
674
675
676
677
678
679
680
681
682
683
684
685
if (yych == '\n') goto yy127;
goto yy128;
yy130:
++YYCURSOR;
{ RET(TOKEN_XORASSIGN); }
yy132:
++YYCURSOR;
{ RET(TOKEN_ORASSIGN); }
yy134:
++YYCURSOR;
{ RET(TOKEN_OROR); }
yy136:
686
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
687
if (YYLIMIT <= YYCURSOR) YYFILL(1);
688
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
689
690
691
692
if (yych <= '@') {
if (yych <= '/') goto yy76;
if (yych <= '9') goto yy74;
goto yy76;
693
} else {
Jul 20, 2020
Jul 20, 2020
694
695
696
697
if (yych <= 'F') goto yy74;
if (yych <= '`') goto yy76;
if (yych <= 'f') goto yy74;
goto yy76;
Jul 20, 2020
Jul 20, 2020
699
700
701
702
703
704
705
706
yy137:
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '@') {
if (yych <= '/') goto yy76;
if (yych <= '9') goto yy88;
goto yy76;
707
} else {
Jul 20, 2020
Jul 20, 2020
708
709
710
711
if (yych <= 'F') goto yy88;
if (yych <= '`') goto yy76;
if (yych <= 'f') goto yy88;
goto yy76;
Jul 20, 2020
Jul 20, 2020
713
714
715
716
yy138:
++YYCURSOR;
goto yy104;
yy139:
Feb 25, 2010
Feb 25, 2010
717
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
718
719
720
if (yych <= '/') goto yy76;
if (yych >= ':') goto yy76;
yy140:
721
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
722
if (YYLIMIT <= YYCURSOR) YYFILL(1);
723
yych = *YYCURSOR;
Nov 22, 2010
Nov 22, 2010
724
if (yych <= 'G') {
Feb 18, 2009
Feb 18, 2009
725
if (yych <= '9') {
Jul 20, 2020
Jul 20, 2020
726
727
if (yych <= '/') goto yy104;
goto yy140;
728
} else {
Jul 20, 2020
Jul 20, 2020
729
730
if (yych == 'F') goto yy138;
goto yy104;
731
732
}
} else {
Feb 18, 2009
Feb 18, 2009
733
if (yych <= 'f') {
Jul 20, 2020
Jul 20, 2020
734
735
736
if (yych <= 'H') goto yy138;
if (yych <= 'e') goto yy104;
goto yy138;
737
} else {
Jul 20, 2020
Jul 20, 2020
738
739
if (yych == 'h') goto yy138;
goto yy104;
740
741
}
}
Jul 20, 2020
Jul 20, 2020
742
yy142:
743
++YYCURSOR;
Feb 18, 2009
Feb 18, 2009
744
if (YYLIMIT <= YYCURSOR) YYFILL(1);
745
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
746
747
if (yych <= 'T') {
if (yych <= '@') {
Jul 20, 2020
Jul 20, 2020
748
749
750
if (yych <= '/') goto yy39;
if (yych <= '9') goto yy142;
goto yy39;
751
} else {
Jul 20, 2020
Jul 20, 2020
752
753
754
if (yych <= 'F') goto yy142;
if (yych == 'L') goto yy112;
goto yy39;
755
756
}
} else {
Feb 18, 2009
Feb 18, 2009
757
if (yych <= 'k') {
Jul 20, 2020
Jul 20, 2020
758
759
760
761
if (yych <= 'U') goto yy112;
if (yych <= '`') goto yy39;
if (yych <= 'f') goto yy142;
goto yy39;
762
} else {
Jul 20, 2020
Jul 20, 2020
763
764
765
if (yych <= 'l') goto yy112;
if (yych == 'u') goto yy112;
goto yy39;
766
767
}
}
Jul 20, 2020
Jul 20, 2020
768
yy144:
Feb 25, 2010
Feb 25, 2010
769
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
770
771
{ RET(TOKEN_LSHIFTASSIGN); }
yy146:
Feb 18, 2009
Feb 18, 2009
772
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
773
{ RET(TOKEN_RSHIFTASSIGN); }
774
775
776
777
}
multilinecomment:
Feb 18, 2009
Feb 18, 2009
778
if (YYLIMIT == YYCURSOR) YYFILL(1);
Feb 13, 2009
Feb 13, 2009
779
matchptr = cursor;
780
781
782
783
// The "*\/" is just to avoid screwing up text editor syntax highlighting.
{
YYCTYPE yych;
Feb 18, 2009
Feb 18, 2009
784
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
785
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
786
if (yych <= '\f') {
Jul 20, 2020
Jul 20, 2020
787
788
789
if (yych <= 0x00) goto yy150;
if (yych == '\n') goto yy154;
goto yy152;
790
} else {
Jul 20, 2020
Jul 20, 2020
791
792
793
if (yych <= '\r') goto yy156;
if (yych == '*') goto yy157;
goto yy152;
Jul 20, 2020
Jul 20, 2020
795
yy150:
796
++YYCURSOR;
Feb 12, 2009
Feb 12, 2009
797
{
Jul 20, 2020
Jul 20, 2020
798
799
if (eoi)
RET(TOKEN_INCOMPLETE_COMMENT);
Feb 12, 2009
Feb 12, 2009
800
801
goto multilinecomment;
}
Jul 20, 2020
Jul 20, 2020
802
803
804
805
806
yy152:
++YYCURSOR;
yy153:
{ goto multilinecomment; }
yy154:
Feb 18, 2009
Feb 18, 2009
807
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
808
yy155:
Feb 18, 2009
Feb 18, 2009
809
{
Jul 20, 2020
Jul 20, 2020
810
s->line++;
Feb 18, 2009
Feb 18, 2009
811
812
goto multilinecomment;
}
Jul 20, 2020
Jul 20, 2020
813
yy156:
814
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
815
816
817
if (yych == '\n') goto yy154;
goto yy155;
yy157:
Feb 25, 2010
Feb 25, 2010
818
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
819
if (yych != '/') goto yy153;
820
++YYCURSOR;
Feb 12, 2009
Feb 12, 2009
821
{
Feb 14, 2013
Feb 14, 2013
822
823
if (s->report_comments)
RET(TOKEN_MULTI_COMMENT);
Feb 18, 2009
Feb 18, 2009
824
825
else if (s->report_whitespace)
RET(' ');
Oct 2, 2014
Oct 2, 2014
826
827
828
829
830
831
832
833
834
835
836
837
// Microsoft's preprocessor allows multiline comments
// before a preprocessor directive, even though C/C++
// doesn't. See if we've hit this case.
#if MATCH_MICROSOFT_PREPROCESSOR
if (s->tokenval == ((Token) '\n')) // was start of line?
{
update_state(s, eoi, cursor, token, (Token) '\n');
goto ppdirective; // may jump back to scanner_loop.
}
#endif
Feb 12, 2009
Feb 12, 2009
838
839
goto scanner_loop;
}
840
841
842
843
}
singlelinecomment:
Feb 18, 2009
Feb 18, 2009
844
if (YYLIMIT == YYCURSOR) YYFILL(1);
Feb 13, 2009
Feb 13, 2009
845
matchptr = cursor;
846
847
848
{
YYCTYPE yych;
Feb 18, 2009
Feb 18, 2009
849
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
850
yych = *YYCURSOR;
Feb 18, 2009
Feb 18, 2009
851
if (yych <= '\n') {
Jul 20, 2020
Jul 20, 2020
852
853
854
if (yych <= 0x00) goto yy162;
if (yych <= '\t') goto yy164;
goto yy166;
Feb 18, 2009
Feb 18, 2009
855
} else {
Jul 20, 2020
Jul 20, 2020
856
857
if (yych == '\r') goto yy168;
goto yy164;
Feb 18, 2009
Feb 18, 2009
858
}
Jul 20, 2020
Jul 20, 2020
859
yy162:
Feb 18, 2009
Feb 18, 2009
860
++YYCURSOR;
Feb 14, 2013
Feb 14, 2013
861
862
863
864
865
866
867
868
869
870
{
if (eoi)
{
if (s->report_comments)
RET(TOKEN_SINGLE_COMMENT);
else
RET(TOKEN_EOI);
}
goto singlelinecomment;
}
Jul 20, 2020
Jul 20, 2020
871
yy164:
872
873
++YYCURSOR;
{ goto singlelinecomment; }
Jul 20, 2020
Jul 20, 2020
874
yy166:
Feb 22, 2009
Feb 22, 2009
875
++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
yy167:
{
s->line++;
if (s->report_comments)
{
cursor = matchptr; // so we RET('\n') next.
RET(TOKEN_SINGLE_COMMENT);
}
token = matchptr;
RET('\n');
}
yy168:
yych = *++YYCURSOR;
if (yych == '\n') goto yy166;
goto yy167;
Feb 22, 2009
Feb 22, 2009
891
892
893
894
895
896
897
898
899
900
901
902
}
ppdirective:
if (YYLIMIT == YYCURSOR) YYFILL(1);
{
YYCTYPE yych;
unsigned int yyaccept = 0;
if ((YYLIMIT - YYCURSOR) < 8) YYFILL(8);
yych = *YYCURSOR;
if (yych <= '\f') {
Jul 20, 2020
Jul 20, 2020
903
904
if (yych == '\t') goto yy173;
if (yych >= '\v') goto yy173;
Feb 22, 2009
Feb 22, 2009
905
906
} else {
if (yych <= ' ') {
Jul 20, 2020
Jul 20, 2020
907
if (yych >= ' ') goto yy173;
Feb 22, 2009
Feb 22, 2009
908
} else {
Jul 20, 2020
Jul 20, 2020
909
if (yych == '#') goto yy176;
Feb 22, 2009
Feb 22, 2009
910
911
}
}
Jul 20, 2020
Jul 20, 2020
912
913
++YYCURSOR;
yy172:
Feb 24, 2009
Feb 24, 2009
914
915
916
917
918
{
token = cursor = (const uchar *) s->source;
limit = cursor + s->bytes_left;
goto scanner_loop;
}
Jul 20, 2020
Jul 20, 2020
919
yy173:
Feb 22, 2009
Feb 22, 2009
920
921
922
923
++YYCURSOR;
if (YYLIMIT <= YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
if (yych <= '\n') {
Jul 20, 2020
Jul 20, 2020
924
if (yych == '\t') goto yy173;
Feb 22, 2009
Feb 22, 2009
925
} else {
Jul 20, 2020
Jul 20, 2020
926
927
if (yych <= '\f') goto yy173;
if (yych == ' ') goto yy173;
Feb 22, 2009
Feb 22, 2009
928
}
Jul 20, 2020
Jul 20, 2020
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
{ goto ppdirective; }
yy176:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'h') {
if (yych <= 0x1F) {
if (yych == '\t') goto yy178;
goto yy172;
} else {
if (yych <= ' ') goto yy178;
if (yych <= 'c') goto yy172;
if (yych <= 'e') goto yy178;
goto yy172;
}
} else {
if (yych <= 'o') {
if (yych <= 'i') goto yy178;
if (yych == 'l') goto yy178;
goto yy172;
} else {
if (yych <= 'p') goto yy178;
if (yych == 'u') goto yy178;
goto yy172;
}
}
yy177:
955
++YYCURSOR;
Feb 22, 2009
Feb 22, 2009
956
if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
957
yych = *YYCURSOR;
Jul 20, 2020
Jul 20, 2020
958
yy178:
May 31, 2010
May 31, 2010
959
960
if (yych <= 'h') {
if (yych <= ' ') {
Jul 20, 2020
Jul 20, 2020
961
962
if (yych == '\t') goto yy177;
if (yych >= ' ') goto yy177;
Feb 22, 2009
Feb 22, 2009
963
} else {
Jul 20, 2020
Jul 20, 2020
964
965
966
if (yych <= 'c') goto yy179;
if (yych <= 'd') goto yy180;
if (yych <= 'e') goto yy181;
Feb 22, 2009
Feb 22, 2009
967
968
}
} else {
May 31, 2010
May 31, 2010
969
if (yych <= 'o') {
Jul 20, 2020
Jul 20, 2020
970
971
if (yych <= 'i') goto yy182;
if (yych == 'l') goto yy183;
Feb 22, 2009
Feb 22, 2009
972
} else {
Jul 20, 2020
Jul 20, 2020
973
974
if (yych <= 'p') goto yy184;
if (yych == 'u') goto yy185;
Feb 22, 2009
Feb 22, 2009
975
976
}
}
Jul 20, 2020
Jul 20, 2020
977
yy179:
Feb 22, 2009
Feb 22, 2009
978
YYCURSOR = YYMARKER;
Jul 20, 2020
Jul 20, 2020
979
980
if (yyaccept == 0) {
goto yy172;
Feb 22, 2009
Feb 22, 2009
981
} else {
Jul 20, 2020
Jul 20, 2020
982
goto yy191;
Feb 22, 2009
Feb 22, 2009
983
}
Jul 20, 2020
Jul 20, 2020
984
yy180:
May 31, 2010
May 31, 2010
985
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
986
987
988
if (yych == 'e') goto yy186;
goto yy179;
yy181:
Feb 22, 2009
Feb 22, 2009
989
990
yych = *++YYCURSOR;
if (yych <= 'm') {
Jul 20, 2020
Jul 20, 2020
991
992
if (yych == 'l') goto yy187;
goto yy179;
Feb 22, 2009
Feb 22, 2009
993
} else {
Jul 20, 2020
Jul 20, 2020
994
995
996
if (yych <= 'n') goto yy188;
if (yych == 'r') goto yy189;
goto yy179;
Feb 22, 2009
Feb 22, 2009
997
}
Jul 20, 2020
Jul 20, 2020
998
yy182:
Feb 22, 2009
Feb 22, 2009
999
yych = *++YYCURSOR;
Jul 20, 2020
Jul 20, 2020
1000
if (yych == 'f') goto yy190;