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