parser: extern var support
[m6w6/ext-psi] / src / parser.c
1 /* Generated by re2c 1.0.2 on Tue Oct 17 17:51:25 2017 */
2 #line 1 "src/parser.re"
3 /*******************************************************************************
4 Copyright (c) 2016, Michael Wallner <mike@php.net>.
5 All rights reserved.
6
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
9
10 * Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12 * Redistributions in binary form must reproduce the above copyright
13 notice, this list of conditions and the following disclaimer in the
14 documentation and/or other materials provided with the distribution.
15
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *******************************************************************************/
27
28 #include "php_psi_stdinc.h"
29 #include <sys/mman.h>
30 #include <assert.h>
31 #include <stdarg.h>
32
33 #include "parser.h"
34
35 #define YYMAXFILL 15
36
37 #ifndef YYMAXFILL
38 # define YYMAXFILL 256
39 #endif
40
41 struct psi_parser *psi_parser_init(struct psi_parser *P, psi_error_cb error, unsigned flags)
42 {
43 if (!P) {
44 P = malloc(sizeof(*P));
45 }
46 memset(P, 0, sizeof(*P));
47
48 psi_data_ctor_with_dtors(PSI_DATA(P), error, flags);
49
50 P->preproc = psi_cpp_init(P);
51
52 psi_cpp_load_defaults(P->preproc);
53
54 return P;
55 }
56
57 struct psi_parser_input *psi_parser_open_file(struct psi_parser *P, const char *filename, bool report_errors)
58 {
59 struct stat sb;
60 FILE *fp;
61 struct psi_parser_input *fb;
62
63 if (stat(filename, &sb)) {
64 if (report_errors) {
65 P->error(PSI_DATA(P), NULL, PSI_WARNING,
66 "Could not stat '%s': %s",
67 filename, strerror(errno));
68 }
69 return NULL;
70 }
71
72 if (!(fb = malloc(sizeof(*fb) + strlen(filename) + 1 + sb.st_size + YYMAXFILL))) {
73 if (report_errors) {
74 P->error(PSI_DATA(P), NULL, PSI_WARNING,
75 "Could not allocate %zu bytes for reading '%s': %s",
76 sb.st_size + YYMAXFILL, filename, strerror(errno));
77 }
78 return NULL;
79 }
80
81 if (!(fp = fopen(filename, "r"))) {
82 free(fb);
83 if (report_errors) {
84 P->error(PSI_DATA(P), NULL, PSI_WARNING,
85 "Could not open '%s' for reading: %s",
86 filename, strerror(errno));
87 }
88 return NULL;
89 }
90
91 if (sb.st_size != fread(fb->buffer, 1, sb.st_size, fp)) {
92 free(fb);
93 fclose(fp);
94 if (report_errors) {
95 P->error(PSI_DATA(P), NULL, PSI_WARNING,
96 "Could not read %zu bytes from '%s': %s",
97 sb.st_size + YYMAXFILL, filename, strerror(errno));
98 }
99 return NULL;
100 }
101
102 memset(fb->buffer + sb.st_size, 0, YYMAXFILL);
103 fb->length = sb.st_size;
104 fb->file = &fb->buffer[sb.st_size + YYMAXFILL];
105 memcpy(fb->file, filename, strlen(filename) + 1);
106
107 return fb;
108 }
109
110 struct psi_parser_input *psi_parser_open_string(struct psi_parser *P, const char *string, size_t length)
111 {
112 struct psi_parser_input *sb;
113
114 if (!(sb = malloc(sizeof(*sb) + sizeof("<stdin>") + length + YYMAXFILL))) {
115 P->error(PSI_DATA(P), NULL, PSI_WARNING,
116 "Could not allocate %zu bytes: %s",
117 length + YYMAXFILL, strerror(errno));
118 return NULL;
119 }
120
121 memcpy(sb->buffer, string, length);
122 memset(sb->buffer + length, 0, YYMAXFILL);
123
124 sb->length = length;
125 sb->file = &sb->buffer[length + YYMAXFILL];
126 memcpy(sb->file, "<stdin>", sizeof("<stdin>"));
127
128 return sb;
129 }
130
131 #if 0
132 static void psi_parser_register_constants(struct psi_parser *P)
133 {
134 zend_string *key;
135 zval *val;
136
137 ZEND_HASH_FOREACH_STR_KEY_VAL(&P->cpp.defs, key, val)
138 {
139 struct psi_impl_def_val *iv;
140 struct psi_const_type *ct;
141 struct psi_const *c;
142 const char *ctn;
143 token_t ctt;
144 impl_val tmp;
145 zend_string *str;
146
147 ZVAL_DEREF(val);
148 switch (Z_TYPE_P(val)) {
149 case IS_TRUE:
150 case IS_FALSE:
151 ctt = PSI_T_BOOL;
152 ctn = "bool";
153 tmp.zend.bval = Z_TYPE_P(val) == IS_TRUE;
154 break;
155 case IS_LONG:
156 ctt = PSI_T_INT;
157 ctn = "int";
158 tmp.zend.lval = Z_LVAL_P(val);
159 break;
160 case IS_DOUBLE:
161 ctt = PSI_T_FLOAT;
162 ctn = "float";
163 tmp.dval = Z_DVAL_P(val);
164 break;
165 default:
166 ctt = PSI_T_STRING;
167 ctn = "string";
168 str = zval_get_string(val);
169 tmp.zend.str = zend_string_dup(str, 1);
170 zend_string_release(str);
171 break;
172 }
173
174 iv = psi_impl_def_val_init(ctt, NULL);
175 iv->ival = tmp;
176 ct = psi_const_type_init(ctt, ctn);
177 c = psi_const_init(ct, key->val, iv);
178 if (!P->consts) {
179 P->consts = psi_plist_init((psi_plist_dtor) psi_const_free);
180 }
181 P->consts = psi_plist_add(P->consts, &c);
182 }
183 ZEND_HASH_FOREACH_END();
184 }
185 #endif
186
187 struct psi_plist *psi_parser_preprocess(struct psi_parser *P, struct psi_plist **tokens)
188 {
189 if (psi_cpp_process(P->preproc, tokens)) {
190 return *tokens;
191 }
192 return NULL;
193 }
194
195 bool psi_parser_process(struct psi_parser *P, struct psi_plist *tokens, size_t *processed)
196 {
197 if (psi_plist_count(tokens)) {
198 return 0 == psi_parser_proc_parse(P, tokens, processed);
199 }
200 return true;
201 }
202
203 bool psi_parser_parse(struct psi_parser *P, struct psi_parser_input *I)
204 {
205 struct psi_plist *scanned, *preproc;
206 size_t processed = 0;
207
208 if (!(scanned = psi_parser_scan(P, I))) {
209 return false;
210 }
211
212 if (!(preproc = psi_parser_preprocess(P, &scanned))) {
213 psi_plist_free(scanned);
214 return false;
215 }
216
217 if (!psi_parser_process(P, preproc, &processed)) {
218 psi_plist_free(preproc);
219 return false;
220 }
221
222 psi_plist_free(preproc);
223 return true;
224 }
225
226 void psi_parser_dtor(struct psi_parser *P)
227 {
228 psi_cpp_free(&P->preproc);
229 psi_data_dtor(PSI_DATA(P));
230
231 memset(P, 0, sizeof(*P));
232 }
233
234 void psi_parser_free(struct psi_parser **P)
235 {
236 if (*P) {
237 psi_parser_dtor(*P);
238 free(*P);
239 *P = NULL;
240 }
241 }
242
243 #define NEWLINE() \
244 eol = cur; \
245 ++I->lines
246
247 #define NEWTOKEN(t) \
248 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
249 tokens = psi_plist_add(tokens, &token); \
250 if (P->flags & PSI_DEBUG) { \
251 fprintf(stderr, "PSI< "); \
252 psi_token_dump(2, token); \
253 }
254
255 union int_suffix {
256 char s[SIZEOF_UINT32_T];
257 uint32_t i;
258 };
259
260 struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input *I)
261 {
262 struct psi_plist *tokens;
263 struct psi_token *token;
264 const char *tok, *cur, *lim, *mrk, *eol, *ctxmrk;
265 unsigned parens;
266 bool escaped;
267 token_t char_width;
268
269 PSI_DEBUG_PRINT(P, "PSI: scanning %s\n", I->file);
270
271 tok = mrk = eol = cur = I->buffer;
272 lim = I->buffer + I->length;
273 I->lines = 1;
274 tokens = psi_plist_init((psi_plist_dtor) psi_token_free);
275
276 start: ;
277 char_width = 1;
278 ctxmrk = NULL;
279 tok = cur;
280
281 (void) ctxmrk;
282
283
284 #line 285 "src/parser.c"
285 {
286 unsigned char yych;
287 unsigned int yyaccept = 0;
288 if ((lim - cur) < 15) if (cur >= lim) goto done;;
289 yych = *cur;
290 switch (yych) {
291 case 0x00:
292 case 0x01:
293 case 0x02:
294 case 0x03:
295 case 0x04:
296 case 0x05:
297 case 0x06:
298 case 0x07:
299 case 0x08:
300 case '\v':
301 case 0x0E:
302 case 0x0F:
303 case 0x10:
304 case 0x11:
305 case 0x12:
306 case 0x13:
307 case 0x14:
308 case 0x15:
309 case 0x16:
310 case 0x17:
311 case 0x18:
312 case 0x19:
313 case 0x1A:
314 case 0x1B:
315 case 0x1C:
316 case 0x1D:
317 case 0x1E:
318 case 0x1F:
319 case '@':
320 case '`':
321 case 0x7F: goto yy2;
322 case '\t':
323 case '\f':
324 case ' ': goto yy4;
325 case '\n':
326 case '\r': goto yy7;
327 case '!': goto yy9;
328 case '"': goto yy11;
329 case '#': goto yy13;
330 case '$': goto yy15;
331 case '%': goto yy16;
332 case '&': goto yy18;
333 case '\'': goto yy20;
334 case '(': goto yy22;
335 case ')': goto yy24;
336 case '*': goto yy26;
337 case '+': goto yy28;
338 case ',': goto yy30;
339 case '-': goto yy32;
340 case '.': goto yy34;
341 case '/': goto yy36;
342 case '0': goto yy38;
343 case '1':
344 case '2':
345 case '3':
346 case '4':
347 case '5':
348 case '6':
349 case '7':
350 case '8':
351 case '9': goto yy40;
352 case ':': goto yy42;
353 case ';': goto yy44;
354 case '<': goto yy46;
355 case '=': goto yy48;
356 case '>': goto yy50;
357 case '?': goto yy52;
358 case 'A':
359 case 'a': goto yy54;
360 case 'B': goto yy56;
361 case 'C': goto yy57;
362 case 'D': goto yy58;
363 case 'E': goto yy59;
364 case 'F': goto yy60;
365 case 'I': goto yy63;
366 case 'L': goto yy64;
367 case 'M':
368 case 'm': goto yy65;
369 case 'N':
370 case 'n': goto yy66;
371 case 'O':
372 case 'o': goto yy67;
373 case 'P': goto yy68;
374 case 'R':
375 case 'r': goto yy69;
376 case 'S': goto yy70;
377 case 'T': goto yy71;
378 case 'U': goto yy72;
379 case 'W':
380 case 'w': goto yy73;
381 case 'Z':
382 case 'z': goto yy74;
383 case '[': goto yy75;
384 case '\\': goto yy77;
385 case ']': goto yy79;
386 case '^': goto yy81;
387 case '_': goto yy83;
388 case 'b': goto yy84;
389 case 'c': goto yy85;
390 case 'd': goto yy86;
391 case 'e': goto yy87;
392 case 'f': goto yy88;
393 case 'i': goto yy89;
394 case 'l': goto yy90;
395 case 'p': goto yy91;
396 case 's': goto yy92;
397 case 't': goto yy93;
398 case 'u': goto yy94;
399 case 'v': goto yy95;
400 case '{': goto yy96;
401 case '|': goto yy98;
402 case '}': goto yy100;
403 case '~': goto yy102;
404 default: goto yy61;
405 }
406 yy2:
407 ++cur;
408 yy3:
409 #line 450 "src/parser.re"
410 { NEWTOKEN(-2); goto error; }
411 #line 412 "src/parser.c"
412 yy4:
413 ++cur;
414 if (lim <= cur) if (cur >= lim) goto done;;
415 yych = *cur;
416 switch (yych) {
417 case '\t':
418 case '\f':
419 case ' ': goto yy4;
420 default: goto yy6;
421 }
422 yy6:
423 #line 449 "src/parser.re"
424 { NEWTOKEN(PSI_T_WHITESPACE); goto start; }
425 #line 426 "src/parser.c"
426 yy7:
427 ++cur;
428 #line 448 "src/parser.re"
429 { NEWTOKEN(PSI_T_EOL); NEWLINE(); goto start; }
430 #line 431 "src/parser.c"
431 yy9:
432 yych = *++cur;
433 switch (yych) {
434 case '=': goto yy104;
435 default: goto yy10;
436 }
437 yy10:
438 #line 351 "src/parser.re"
439 { NEWTOKEN(PSI_T_NOT); goto start; }
440 #line 441 "src/parser.c"
441 yy11:
442 ++cur;
443 #line 324 "src/parser.re"
444 { escaped = false; tok += 1; goto string; }
445 #line 446 "src/parser.c"
446 yy13:
447 yych = *++cur;
448 switch (yych) {
449 case '#': goto yy106;
450 default: goto yy14;
451 }
452 yy14:
453 #line 334 "src/parser.re"
454 { NEWTOKEN(PSI_T_HASH); goto start; }
455 #line 456 "src/parser.c"
456 yy15:
457 yych = *++cur;
458 switch (yych) {
459 case 0x00:
460 case 0x01:
461 case 0x02:
462 case 0x03:
463 case 0x04:
464 case 0x05:
465 case 0x06:
466 case 0x07:
467 case 0x08:
468 case '\t':
469 case '\n':
470 case '\v':
471 case '\f':
472 case '\r':
473 case 0x0E:
474 case 0x0F:
475 case 0x10:
476 case 0x11:
477 case 0x12:
478 case 0x13:
479 case 0x14:
480 case 0x15:
481 case 0x16:
482 case 0x17:
483 case 0x18:
484 case 0x19:
485 case 0x1A:
486 case 0x1B:
487 case 0x1C:
488 case 0x1D:
489 case 0x1E:
490 case 0x1F:
491 case ' ':
492 case '!':
493 case '"':
494 case '#':
495 case '$':
496 case '%':
497 case '&':
498 case '\'':
499 case '(':
500 case ')':
501 case '*':
502 case '+':
503 case ',':
504 case '-':
505 case '.':
506 case '/':
507 case ':':
508 case ';':
509 case '<':
510 case '=':
511 case '>':
512 case '?':
513 case '@':
514 case '[':
515 case '\\':
516 case ']':
517 case '^':
518 case '`':
519 case '{':
520 case '|':
521 case '}':
522 case '~':
523 case 0x7F: goto yy3;
524 default: goto yy108;
525 }
526 yy16:
527 ++cur;
528 #line 352 "src/parser.re"
529 { NEWTOKEN(PSI_T_MODULO); goto start; }
530 #line 531 "src/parser.c"
531 yy18:
532 yych = *++cur;
533 switch (yych) {
534 case '&': goto yy111;
535 default: goto yy19;
536 }
537 yy19:
538 #line 353 "src/parser.re"
539 { NEWTOKEN(PSI_T_AMPERSAND); goto start; }
540 #line 541 "src/parser.c"
541 yy20:
542 ++cur;
543 #line 323 "src/parser.re"
544 { escaped = false; tok += 1; goto character; }
545 #line 546 "src/parser.c"
546 yy22:
547 ++cur;
548 #line 335 "src/parser.re"
549 { NEWTOKEN(PSI_T_LPAREN); goto start; }
550 #line 551 "src/parser.c"
551 yy24:
552 ++cur;
553 #line 336 "src/parser.re"
554 { NEWTOKEN(PSI_T_RPAREN); goto start; }
555 #line 556 "src/parser.c"
556 yy26:
557 ++cur;
558 #line 349 "src/parser.re"
559 { NEWTOKEN(PSI_T_ASTERISK); goto start; }
560 #line 561 "src/parser.c"
561 yy28:
562 yyaccept = 0;
563 yych = *(mrk = ++cur);
564 switch (yych) {
565 case '.': goto yy113;
566 case '0': goto yy38;
567 case '1':
568 case '2':
569 case '3':
570 case '4':
571 case '5':
572 case '6':
573 case '7':
574 case '8':
575 case '9': goto yy40;
576 default: goto yy29;
577 }
578 yy29:
579 #line 354 "src/parser.re"
580 { NEWTOKEN(PSI_T_PLUS); goto start; }
581 #line 582 "src/parser.c"
582 yy30:
583 ++cur;
584 #line 338 "src/parser.re"
585 { NEWTOKEN(PSI_T_COMMA); goto start; }
586 #line 587 "src/parser.c"
587 yy32:
588 yyaccept = 1;
589 yych = *(mrk = ++cur);
590 switch (yych) {
591 case '.': goto yy113;
592 case '0': goto yy38;
593 case '1':
594 case '2':
595 case '3':
596 case '4':
597 case '5':
598 case '6':
599 case '7':
600 case '8':
601 case '9': goto yy40;
602 default: goto yy33;
603 }
604 yy33:
605 #line 355 "src/parser.re"
606 { NEWTOKEN(PSI_T_MINUS); goto start; }
607 #line 608 "src/parser.c"
608 yy34:
609 yyaccept = 2;
610 yych = *(mrk = ++cur);
611 switch (yych) {
612 case '.': goto yy115;
613 case '0':
614 case '1':
615 case '2':
616 case '3':
617 case '4':
618 case '5':
619 case '6':
620 case '7':
621 case '8':
622 case '9': goto yy116;
623 default: goto yy35;
624 }
625 yy35:
626 #line 366 "src/parser.re"
627 { NEWTOKEN(PSI_T_PERIOD); goto start; }
628 #line 629 "src/parser.c"
629 yy36:
630 yych = *++cur;
631 switch (yych) {
632 case '*': goto yy119;
633 case '/': goto yy121;
634 default: goto yy37;
635 }
636 yy37:
637 #line 356 "src/parser.re"
638 { NEWTOKEN(PSI_T_SLASH); goto start; }
639 #line 640 "src/parser.c"
640 yy38:
641 yyaccept = 3;
642 yych = *(mrk = ++cur);
643 switch (yych) {
644 case '.': goto yy123;
645 case 'E':
646 case 'e': goto yy127;
647 case 'X':
648 case 'x': goto yy132;
649 default: goto yy126;
650 }
651 yy39:
652 #line 310 "src/parser.re"
653 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT; goto start; }
654 #line 655 "src/parser.c"
655 yy40:
656 yyaccept = 3;
657 mrk = ++cur;
658 if ((lim - cur) < 3) if (cur >= lim) goto done;;
659 yych = *cur;
660 switch (yych) {
661 case '.': goto yy123;
662 case '0':
663 case '1':
664 case '2':
665 case '3':
666 case '4':
667 case '5':
668 case '6':
669 case '7':
670 case '8':
671 case '9': goto yy40;
672 case 'E':
673 case 'e': goto yy127;
674 case 'L':
675 case 'l': goto yy128;
676 case 'U':
677 case 'u': goto yy130;
678 default: goto yy39;
679 }
680 yy42:
681 ++cur;
682 #line 339 "src/parser.re"
683 { NEWTOKEN(PSI_T_COLON); goto start; }
684 #line 685 "src/parser.c"
685 yy44:
686 ++cur;
687 #line 337 "src/parser.re"
688 { NEWTOKEN(PSI_T_EOS); goto start; }
689 #line 690 "src/parser.c"
690 yy46:
691 yyaccept = 4;
692 yych = *(mrk = ++cur);
693 switch (yych) {
694 case '-':
695 case '.':
696 case '/':
697 case '0':
698 case '1':
699 case '2':
700 case '3':
701 case '4':
702 case '5':
703 case '6':
704 case '7':
705 case '8':
706 case '9':
707 case 'A':
708 case 'B':
709 case 'C':
710 case 'D':
711 case 'E':
712 case 'F':
713 case 'G':
714 case 'H':
715 case 'I':
716 case 'J':
717 case 'K':
718 case 'L':
719 case 'M':
720 case 'N':
721 case 'O':
722 case 'P':
723 case 'Q':
724 case 'R':
725 case 'S':
726 case 'T':
727 case 'U':
728 case 'V':
729 case 'W':
730 case 'X':
731 case 'Y':
732 case 'Z':
733 case '_':
734 case 'a':
735 case 'b':
736 case 'c':
737 case 'd':
738 case 'e':
739 case 'f':
740 case 'g':
741 case 'h':
742 case 'i':
743 case 'j':
744 case 'k':
745 case 'l':
746 case 'm':
747 case 'n':
748 case 'o':
749 case 'p':
750 case 'q':
751 case 'r':
752 case 's':
753 case 't':
754 case 'u':
755 case 'v':
756 case 'w':
757 case 'x':
758 case 'y':
759 case 'z': goto yy133;
760 case '<': goto yy135;
761 case '=': goto yy137;
762 default: goto yy47;
763 }
764 yy47:
765 #line 364 "src/parser.re"
766 { NEWTOKEN(PSI_T_LCHEVR); goto start; }
767 #line 768 "src/parser.c"
768 yy48:
769 yych = *++cur;
770 switch (yych) {
771 case '=': goto yy139;
772 default: goto yy49;
773 }
774 yy49:
775 #line 348 "src/parser.re"
776 { NEWTOKEN(PSI_T_EQUALS); goto start; }
777 #line 778 "src/parser.c"
778 yy50:
779 yych = *++cur;
780 switch (yych) {
781 case '=': goto yy141;
782 case '>': goto yy143;
783 default: goto yy51;
784 }
785 yy51:
786 #line 365 "src/parser.re"
787 { NEWTOKEN(PSI_T_RCHEVR); goto start; }
788 #line 789 "src/parser.c"
789 yy52:
790 ++cur;
791 #line 368 "src/parser.re"
792 { NEWTOKEN(PSI_T_IIF); goto start; }
793 #line 794 "src/parser.c"
794 yy54:
795 yyaccept = 5;
796 yych = *(mrk = ++cur);
797 switch (yych) {
798 case 'R':
799 case 'r': goto yy145;
800 case 'S':
801 case 's': goto yy146;
802 default: goto yy62;
803 }
804 yy55:
805 #line 443 "src/parser.re"
806 { NEWTOKEN(PSI_T_NAME); goto start; }
807 #line 808 "src/parser.c"
808 yy56:
809 yyaccept = 5;
810 yych = *(mrk = ++cur);
811 switch (yych) {
812 case 'O':
813 case 'o': goto yy149;
814 default: goto yy62;
815 }
816 yy57:
817 yyaccept = 5;
818 yych = *(mrk = ++cur);
819 switch (yych) {
820 case 'A':
821 case 'a': goto yy150;
822 case 'O':
823 case 'o': goto yy151;
824 default: goto yy62;
825 }
826 yy58:
827 yyaccept = 5;
828 yych = *(mrk = ++cur);
829 switch (yych) {
830 case 'E':
831 case 'e': goto yy152;
832 default: goto yy62;
833 }
834 yy59:
835 yyaccept = 5;
836 yych = *(mrk = ++cur);
837 switch (yych) {
838 case 'L':
839 case 'l': goto yy153;
840 case 'N':
841 case 'n': goto yy154;
842 case 'R':
843 case 'r': goto yy155;
844 default: goto yy62;
845 }
846 yy60:
847 yyaccept = 5;
848 yych = *(mrk = ++cur);
849 switch (yych) {
850 case 'A':
851 case 'a': goto yy156;
852 case 'L':
853 case 'l': goto yy157;
854 case 'R':
855 case 'r': goto yy158;
856 case 'U':
857 case 'u': goto yy159;
858 default: goto yy62;
859 }
860 yy61:
861 yyaccept = 5;
862 mrk = ++cur;
863 if (lim <= cur) if (cur >= lim) goto done;;
864 yych = *cur;
865 yy62:
866 switch (yych) {
867 case 0x00:
868 case 0x01:
869 case 0x02:
870 case 0x03:
871 case 0x04:
872 case 0x05:
873 case 0x06:
874 case 0x07:
875 case 0x08:
876 case '\t':
877 case '\n':
878 case '\v':
879 case '\f':
880 case '\r':
881 case 0x0E:
882 case 0x0F:
883 case 0x10:
884 case 0x11:
885 case 0x12:
886 case 0x13:
887 case 0x14:
888 case 0x15:
889 case 0x16:
890 case 0x17:
891 case 0x18:
892 case 0x19:
893 case 0x1A:
894 case 0x1B:
895 case 0x1C:
896 case 0x1D:
897 case 0x1E:
898 case 0x1F:
899 case ' ':
900 case '!':
901 case '"':
902 case '#':
903 case '$':
904 case '%':
905 case '&':
906 case '\'':
907 case '(':
908 case ')':
909 case '*':
910 case '+':
911 case ',':
912 case '-':
913 case '.':
914 case '/':
915 case ':':
916 case ';':
917 case '<':
918 case '=':
919 case '>':
920 case '?':
921 case '@':
922 case '[':
923 case ']':
924 case '^':
925 case '`':
926 case '{':
927 case '|':
928 case '}':
929 case '~':
930 case 0x7F: goto yy55;
931 case '\\': goto yy148;
932 default: goto yy61;
933 }
934 yy63:
935 yyaccept = 5;
936 yych = *(mrk = ++cur);
937 switch (yych) {
938 case 'F':
939 case 'f': goto yy160;
940 case 'N':
941 case 'n': goto yy162;
942 default: goto yy62;
943 }
944 yy64:
945 yyaccept = 5;
946 yych = *(mrk = ++cur);
947 switch (yych) {
948 case '"':
949 case '\'': goto yy163;
950 case 'E':
951 case 'e': goto yy165;
952 case 'I':
953 case 'i': goto yy166;
954 default: goto yy62;
955 }
956 yy65:
957 yyaccept = 5;
958 yych = *(mrk = ++cur);
959 switch (yych) {
960 case 'I':
961 case 'i': goto yy167;
962 default: goto yy62;
963 }
964 yy66:
965 yyaccept = 5;
966 yych = *(mrk = ++cur);
967 switch (yych) {
968 case 'U':
969 case 'u': goto yy168;
970 default: goto yy62;
971 }
972 yy67:
973 yyaccept = 5;
974 yych = *(mrk = ++cur);
975 switch (yych) {
976 case 'B':
977 case 'b': goto yy169;
978 default: goto yy62;
979 }
980 yy68:
981 yyaccept = 5;
982 yych = *(mrk = ++cur);
983 switch (yych) {
984 case 'A':
985 case 'a': goto yy170;
986 case 'O':
987 case 'o': goto yy171;
988 case 'R':
989 case 'r': goto yy172;
990 default: goto yy62;
991 }
992 yy69:
993 yyaccept = 5;
994 yych = *(mrk = ++cur);
995 switch (yych) {
996 case 'E':
997 case 'e': goto yy173;
998 default: goto yy62;
999 }
1000 yy70:
1001 yyaccept = 5;
1002 yych = *(mrk = ++cur);
1003 switch (yych) {
1004 case 'E':
1005 case 'e': goto yy174;
1006 case 'T':
1007 case 't': goto yy175;
1008 default: goto yy62;
1009 }
1010 yy71:
1011 yyaccept = 5;
1012 yych = *(mrk = ++cur);
1013 switch (yych) {
1014 case 'E':
1015 case 'e': goto yy176;
1016 case 'O':
1017 case 'o': goto yy177;
1018 case 'R':
1019 case 'r': goto yy178;
1020 default: goto yy62;
1021 }
1022 yy72:
1023 yyaccept = 5;
1024 yych = *(mrk = ++cur);
1025 switch (yych) {
1026 case '"':
1027 case '\'': goto yy179;
1028 case 'N':
1029 case 'n': goto yy181;
1030 default: goto yy62;
1031 }
1032 yy73:
1033 yyaccept = 5;
1034 yych = *(mrk = ++cur);
1035 switch (yych) {
1036 case 'A':
1037 case 'a': goto yy182;
1038 default: goto yy62;
1039 }
1040 yy74:
1041 yyaccept = 5;
1042 yych = *(mrk = ++cur);
1043 switch (yych) {
1044 case 'V':
1045 case 'v': goto yy183;
1046 default: goto yy62;
1047 }
1048 yy75:
1049 ++cur;
1050 #line 342 "src/parser.re"
1051 { NEWTOKEN(PSI_T_LBRACKET); goto start; }
1052 #line 1053 "src/parser.c"
1053 yy77:
1054 yych = *++cur;
1055 switch (yych) {
1056 case 0x00:
1057 case 0x01:
1058 case 0x02:
1059 case 0x03:
1060 case 0x04:
1061 case 0x05:
1062 case 0x06:
1063 case 0x07:
1064 case 0x08:
1065 case '\t':
1066 case '\n':
1067 case '\v':
1068 case '\f':
1069 case '\r':
1070 case 0x0E:
1071 case 0x0F:
1072 case 0x10:
1073 case 0x11:
1074 case 0x12:
1075 case 0x13:
1076 case 0x14:
1077 case 0x15:
1078 case 0x16:
1079 case 0x17:
1080 case 0x18:
1081 case 0x19:
1082 case 0x1A:
1083 case 0x1B:
1084 case 0x1C:
1085 case 0x1D:
1086 case 0x1E:
1087 case 0x1F:
1088 case ' ':
1089 case '!':
1090 case '"':
1091 case '#':
1092 case '$':
1093 case '%':
1094 case '&':
1095 case '\'':
1096 case '(':
1097 case ')':
1098 case '*':
1099 case '+':
1100 case ',':
1101 case '-':
1102 case '.':
1103 case '/':
1104 case '0':
1105 case '1':
1106 case '2':
1107 case '3':
1108 case '4':
1109 case '5':
1110 case '6':
1111 case '7':
1112 case '8':
1113 case '9':
1114 case ':':
1115 case ';':
1116 case '<':
1117 case '=':
1118 case '>':
1119 case '?':
1120 case '@':
1121 case '[':
1122 case '\\':
1123 case ']':
1124 case '^':
1125 case '`':
1126 case '{':
1127 case '|':
1128 case '}':
1129 case '~':
1130 case 0x7F: goto yy78;
1131 default: goto yy184;
1132 }
1133 yy78:
1134 #line 357 "src/parser.re"
1135 { NEWTOKEN(PSI_T_BSLASH); goto start; }
1136 #line 1137 "src/parser.c"
1137 yy79:
1138 ++cur;
1139 #line 343 "src/parser.re"
1140 { NEWTOKEN(PSI_T_RBRACKET); goto start; }
1141 #line 1142 "src/parser.c"
1142 yy81:
1143 ++cur;
1144 #line 359 "src/parser.re"
1145 { NEWTOKEN(PSI_T_CARET); goto start; }
1146 #line 1147 "src/parser.c"
1147 yy83:
1148 yyaccept = 5;
1149 yych = *(mrk = ++cur);
1150 switch (yych) {
1151 case '_': goto yy187;
1152 default: goto yy62;
1153 }
1154 yy84:
1155 yyaccept = 5;
1156 yych = *(mrk = ++cur);
1157 switch (yych) {
1158 case 'O': goto yy149;
1159 case 'o': goto yy188;
1160 default: goto yy62;
1161 }
1162 yy85:
1163 yyaccept = 5;
1164 yych = *(mrk = ++cur);
1165 switch (yych) {
1166 case 'A':
1167 case 'a': goto yy150;
1168 case 'O': goto yy151;
1169 case 'h': goto yy189;
1170 case 'o': goto yy190;
1171 default: goto yy62;
1172 }
1173 yy86:
1174 yyaccept = 5;
1175 yych = *(mrk = ++cur);
1176 switch (yych) {
1177 case 'E':
1178 case 'e': goto yy152;
1179 case 'o': goto yy191;
1180 default: goto yy62;
1181 }
1182 yy87:
1183 yyaccept = 5;
1184 yych = *(mrk = ++cur);
1185 switch (yych) {
1186 case 'L':
1187 case 'l': goto yy153;
1188 case 'N': goto yy154;
1189 case 'R':
1190 case 'r': goto yy155;
1191 case 'n': goto yy192;
1192 default: goto yy62;
1193 }
1194 yy88:
1195 yyaccept = 5;
1196 yych = *(mrk = ++cur);
1197 switch (yych) {
1198 case 'A':
1199 case 'a': goto yy156;
1200 case 'L': goto yy157;
1201 case 'R':
1202 case 'r': goto yy158;
1203 case 'U':
1204 case 'u': goto yy159;
1205 case 'l': goto yy193;
1206 default: goto yy62;
1207 }
1208 yy89:
1209 yyaccept = 5;
1210 yych = *(mrk = ++cur);
1211 switch (yych) {
1212 case 'F':
1213 case 'f': goto yy160;
1214 case 'N': goto yy162;
1215 case 'n': goto yy194;
1216 default: goto yy62;
1217 }
1218 yy90:
1219 yyaccept = 5;
1220 yych = *(mrk = ++cur);
1221 switch (yych) {
1222 case 'E':
1223 case 'e': goto yy165;
1224 case 'I': goto yy166;
1225 case 'i': goto yy195;
1226 case 'o': goto yy196;
1227 default: goto yy62;
1228 }
1229 yy91:
1230 yyaccept = 5;
1231 yych = *(mrk = ++cur);
1232 switch (yych) {
1233 case 'A':
1234 case 'a': goto yy170;
1235 case 'O':
1236 case 'o': goto yy171;
1237 case 'R': goto yy172;
1238 case 'r': goto yy197;
1239 default: goto yy62;
1240 }
1241 yy92:
1242 yyaccept = 5;
1243 yych = *(mrk = ++cur);
1244 switch (yych) {
1245 case 'E':
1246 case 'e': goto yy174;
1247 case 'T': goto yy175;
1248 case 'h': goto yy198;
1249 case 'i': goto yy199;
1250 case 't': goto yy200;
1251 default: goto yy62;
1252 }
1253 yy93:
1254 yyaccept = 5;
1255 yych = *(mrk = ++cur);
1256 switch (yych) {
1257 case 'E':
1258 case 'e': goto yy176;
1259 case 'O':
1260 case 'o': goto yy177;
1261 case 'R':
1262 case 'r': goto yy178;
1263 case 'y': goto yy201;
1264 default: goto yy62;
1265 }
1266 yy94:
1267 yyaccept = 5;
1268 yych = *(mrk = ++cur);
1269 switch (yych) {
1270 case '"':
1271 case '\'': goto yy202;
1272 case '8': goto yy204;
1273 case 'N': goto yy181;
1274 case 'n': goto yy205;
1275 default: goto yy62;
1276 }
1277 yy95:
1278 yyaccept = 5;
1279 yych = *(mrk = ++cur);
1280 switch (yych) {
1281 case 'o': goto yy206;
1282 default: goto yy62;
1283 }
1284 yy96:
1285 ++cur;
1286 #line 340 "src/parser.re"
1287 { NEWTOKEN(PSI_T_LBRACE); goto start; }
1288 #line 1289 "src/parser.c"
1289 yy98:
1290 yych = *++cur;
1291 switch (yych) {
1292 case '|': goto yy207;
1293 default: goto yy99;
1294 }
1295 yy99:
1296 #line 358 "src/parser.re"
1297 { NEWTOKEN(PSI_T_PIPE); goto start; }
1298 #line 1299 "src/parser.c"
1299 yy100:
1300 ++cur;
1301 #line 341 "src/parser.re"
1302 { NEWTOKEN(PSI_T_RBRACE); goto start; }
1303 #line 1304 "src/parser.c"
1304 yy102:
1305 ++cur;
1306 #line 350 "src/parser.re"
1307 { NEWTOKEN(PSI_T_TILDE); goto start; }
1308 #line 1309 "src/parser.c"
1309 yy104:
1310 ++cur;
1311 #line 344 "src/parser.re"
1312 { NEWTOKEN(PSI_T_CMP_NE); goto start; }
1313 #line 1314 "src/parser.c"
1314 yy106:
1315 ++cur;
1316 #line 333 "src/parser.re"
1317 { NEWTOKEN(PSI_T_CPP_PASTE); goto start; }
1318 #line 1319 "src/parser.c"
1319 yy108:
1320 ++cur;
1321 if (lim <= cur) if (cur >= lim) goto done;;
1322 yych = *cur;
1323 switch (yych) {
1324 case 0x00:
1325 case 0x01:
1326 case 0x02:
1327 case 0x03:
1328 case 0x04:
1329 case 0x05:
1330 case 0x06:
1331 case 0x07:
1332 case 0x08:
1333 case '\t':
1334 case '\n':
1335 case '\v':
1336 case '\f':
1337 case '\r':
1338 case 0x0E:
1339 case 0x0F:
1340 case 0x10:
1341 case 0x11:
1342 case 0x12:
1343 case 0x13:
1344 case 0x14:
1345 case 0x15:
1346 case 0x16:
1347 case 0x17:
1348 case 0x18:
1349 case 0x19:
1350 case 0x1A:
1351 case 0x1B:
1352 case 0x1C:
1353 case 0x1D:
1354 case 0x1E:
1355 case 0x1F:
1356 case ' ':
1357 case '!':
1358 case '"':
1359 case '#':
1360 case '$':
1361 case '%':
1362 case '&':
1363 case '\'':
1364 case '(':
1365 case ')':
1366 case '*':
1367 case '+':
1368 case ',':
1369 case '-':
1370 case '.':
1371 case '/':
1372 case ':':
1373 case ';':
1374 case '<':
1375 case '=':
1376 case '>':
1377 case '?':
1378 case '@':
1379 case '[':
1380 case '\\':
1381 case ']':
1382 case '^':
1383 case '`':
1384 case '{':
1385 case '|':
1386 case '}':
1387 case '~':
1388 case 0x7F: goto yy110;
1389 default: goto yy108;
1390 }
1391 yy110:
1392 #line 445 "src/parser.re"
1393 { NEWTOKEN(PSI_T_DOLLAR_NAME); goto start; }
1394 #line 1395 "src/parser.c"
1395 yy111:
1396 ++cur;
1397 #line 346 "src/parser.re"
1398 { NEWTOKEN(PSI_T_AND); goto start; }
1399 #line 1400 "src/parser.c"
1400 yy113:
1401 yych = *++cur;
1402 switch (yych) {
1403 case '0':
1404 case '1':
1405 case '2':
1406 case '3':
1407 case '4':
1408 case '5':
1409 case '6':
1410 case '7':
1411 case '8':
1412 case '9': goto yy116;
1413 default: goto yy114;
1414 }
1415 yy114:
1416 cur = mrk;
1417 switch (yyaccept) {
1418 case 0: goto yy29;
1419 case 1: goto yy33;
1420 case 2: goto yy35;
1421 case 3: goto yy39;
1422 case 4: goto yy47;
1423 case 5: goto yy55;
1424 case 6: goto yy118;
1425 case 7: goto yy129;
1426 case 8: goto yy147;
1427 case 9: goto yy161;
1428 case 10: goto yy186;
1429 case 11: goto yy242;
1430 case 12: goto yy244;
1431 case 13: goto yy253;
1432 case 14: goto yy273;
1433 case 15: goto yy305;
1434 case 16: goto yy307;
1435 case 17: goto yy313;
1436 case 18: goto yy321;
1437 case 19: goto yy333;
1438 case 20: goto yy341;
1439 case 21: goto yy345;
1440 case 22: goto yy352;
1441 case 23: goto yy354;
1442 case 24: goto yy358;
1443 case 25: goto yy361;
1444 case 26: goto yy363;
1445 case 27: goto yy373;
1446 case 28: goto yy376;
1447 case 29: goto yy383;
1448 case 30: goto yy386;
1449 case 31: goto yy388;
1450 case 32: goto yy390;
1451 case 33: goto yy394;
1452 case 34: goto yy399;
1453 case 35: goto yy417;
1454 case 36: goto yy425;
1455 case 37: goto yy428;
1456 case 38: goto yy431;
1457 case 39: goto yy437;
1458 case 40: goto yy441;
1459 case 41: goto yy446;
1460 case 42: goto yy448;
1461 case 43: goto yy452;
1462 case 44: goto yy455;
1463 case 45: goto yy457;
1464 case 46: goto yy459;
1465 case 47: goto yy464;
1466 case 48: goto yy466;
1467 case 49: goto yy468;
1468 case 50: goto yy470;
1469 case 51: goto yy472;
1470 case 52: goto yy477;
1471 case 53: goto yy487;
1472 case 54: goto yy489;
1473 case 55: goto yy491;
1474 case 56: goto yy493;
1475 case 57: goto yy495;
1476 case 58: goto yy500;
1477 case 59: goto yy504;
1478 case 60: goto yy508;
1479 case 61: goto yy510;
1480 case 62: goto yy515;
1481 case 63: goto yy520;
1482 case 64: goto yy522;
1483 case 65: goto yy530;
1484 case 66: goto yy534;
1485 case 67: goto yy536;
1486 case 68: goto yy538;
1487 case 69: goto yy540;
1488 case 70: goto yy545;
1489 case 71: goto yy547;
1490 case 72: goto yy553;
1491 case 73: goto yy558;
1492 case 74: goto yy560;
1493 case 75: goto yy565;
1494 case 76: goto yy567;
1495 case 77: goto yy575;
1496 case 78: goto yy579;
1497 case 79: goto yy583;
1498 case 80: goto yy587;
1499 case 81: goto yy589;
1500 default: goto yy594;
1501 }
1502 yy115:
1503 yych = *++cur;
1504 switch (yych) {
1505 case '.': goto yy209;
1506 default: goto yy114;
1507 }
1508 yy116:
1509 yyaccept = 6;
1510 mrk = ++cur;
1511 if ((lim - cur) < 2) if (cur >= lim) goto done;;
1512 yych = *cur;
1513 switch (yych) {
1514 case '0':
1515 case '1':
1516 case '2':
1517 case '3':
1518 case '4':
1519 case '5':
1520 case '6':
1521 case '7':
1522 case '8':
1523 case '9': goto yy116;
1524 case 'D':
1525 case 'd': goto yy211;
1526 case 'F':
1527 case 'f': goto yy212;
1528 case 'L':
1529 case 'l': goto yy214;
1530 default: goto yy118;
1531 }
1532 yy118:
1533 #line 316 "src/parser.re"
1534 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT; goto start; }
1535 #line 1536 "src/parser.c"
1536 yy119:
1537 ++cur;
1538 #line 330 "src/parser.re"
1539 { goto comment; }
1540 #line 1541 "src/parser.c"
1541 yy121:
1542 ++cur;
1543 #line 331 "src/parser.re"
1544 { goto comment_sl; }
1545 #line 1546 "src/parser.c"
1546 yy123:
1547 yyaccept = 6;
1548 mrk = ++cur;
1549 if ((lim - cur) < 3) if (cur >= lim) goto done;;
1550 yych = *cur;
1551 switch (yych) {
1552 case '0':
1553 case '1':
1554 case '2':
1555 case '3':
1556 case '4':
1557 case '5':
1558 case '6':
1559 case '7':
1560 case '8':
1561 case '9': goto yy123;
1562 case 'D':
1563 case 'd': goto yy211;
1564 case 'E':
1565 case 'e': goto yy127;
1566 case 'F':
1567 case 'f': goto yy212;
1568 case 'L':
1569 case 'l': goto yy214;
1570 default: goto yy118;
1571 }
1572 yy125:
1573 ++cur;
1574 if ((lim - cur) < 3) if (cur >= lim) goto done;;
1575 yych = *cur;
1576 yy126:
1577 switch (yych) {
1578 case '0':
1579 case '1':
1580 case '2':
1581 case '3':
1582 case '4':
1583 case '5':
1584 case '6':
1585 case '7': goto yy125;
1586 case 'L':
1587 case 'l': goto yy128;
1588 case 'U':
1589 case 'u': goto yy130;
1590 default: goto yy39;
1591 }
1592 yy127:
1593 yych = *++cur;
1594 switch (yych) {
1595 case '+':
1596 case '-': goto yy113;
1597 case '0':
1598 case '1':
1599 case '2':
1600 case '3':
1601 case '4':
1602 case '5':
1603 case '6':
1604 case '7':
1605 case '8':
1606 case '9': goto yy116;
1607 default: goto yy114;
1608 }
1609 yy128:
1610 yyaccept = 7;
1611 yych = *(mrk = ++cur);
1612 switch (yych) {
1613 case 'L':
1614 case 'l': goto yy216;
1615 case 'U':
1616 case 'u': goto yy217;
1617 default: goto yy129;
1618 }
1619 yy129:
1620 cur -= 1;
1621 #line 312 "src/parser.re"
1622 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_L; cur += 1; goto start; }
1623 #line 1624 "src/parser.c"
1624 yy130:
1625 yych = *++cur;
1626 switch (yych) {
1627 case 'L':
1628 case 'l': goto yy219;
1629 default: goto yy131;
1630 }
1631 yy131:
1632 cur -= 1;
1633 #line 311 "src/parser.re"
1634 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_U; cur += 1; goto start; }
1635 #line 1636 "src/parser.c"
1636 yy132:
1637 yych = *++cur;
1638 switch (yych) {
1639 case '0':
1640 case '1':
1641 case '2':
1642 case '3':
1643 case '4':
1644 case '5':
1645 case '6':
1646 case '7':
1647 case '8':
1648 case '9':
1649 case 'A':
1650 case 'B':
1651 case 'C':
1652 case 'D':
1653 case 'E':
1654 case 'F':
1655 case 'a':
1656 case 'b':
1657 case 'c':
1658 case 'd':
1659 case 'e':
1660 case 'f': goto yy220;
1661 default: goto yy114;
1662 }
1663 yy133:
1664 ++cur;
1665 if (lim <= cur) if (cur >= lim) goto done;;
1666 yych = *cur;
1667 switch (yych) {
1668 case '-':
1669 case '.':
1670 case '/':
1671 case '0':
1672 case '1':
1673 case '2':
1674 case '3':
1675 case '4':
1676 case '5':
1677 case '6':
1678 case '7':
1679 case '8':
1680 case '9':
1681 case 'A':
1682 case 'B':
1683 case 'C':
1684 case 'D':
1685 case 'E':
1686 case 'F':
1687 case 'G':
1688 case 'H':
1689 case 'I':
1690 case 'J':
1691 case 'K':
1692 case 'L':
1693 case 'M':
1694 case 'N':
1695 case 'O':
1696 case 'P':
1697 case 'Q':
1698 case 'R':
1699 case 'S':
1700 case 'T':
1701 case 'U':
1702 case 'V':
1703 case 'W':
1704 case 'X':
1705 case 'Y':
1706 case 'Z':
1707 case '_':
1708 case 'a':
1709 case 'b':
1710 case 'c':
1711 case 'd':
1712 case 'e':
1713 case 'f':
1714 case 'g':
1715 case 'h':
1716 case 'i':
1717 case 'j':
1718 case 'k':
1719 case 'l':
1720 case 'm':
1721 case 'n':
1722 case 'o':
1723 case 'p':
1724 case 'q':
1725 case 'r':
1726 case 's':
1727 case 't':
1728 case 'u':
1729 case 'v':
1730 case 'w':
1731 case 'x':
1732 case 'y':
1733 case 'z': goto yy133;
1734 case '>': goto yy222;
1735 default: goto yy114;
1736 }
1737 yy135:
1738 ++cur;
1739 #line 360 "src/parser.re"
1740 { NEWTOKEN(PSI_T_LSHIFT); goto start; }
1741 #line 1742 "src/parser.c"
1742 yy137:
1743 ++cur;
1744 #line 362 "src/parser.re"
1745 { NEWTOKEN(PSI_T_CMP_LE); goto start; }
1746 #line 1747 "src/parser.c"
1747 yy139:
1748 ++cur;
1749 #line 345 "src/parser.re"
1750 { NEWTOKEN(PSI_T_CMP_EQ); goto start; }
1751 #line 1752 "src/parser.c"
1752 yy141:
1753 ++cur;
1754 #line 363 "src/parser.re"
1755 { NEWTOKEN(PSI_T_CMP_GE); goto start; }
1756 #line 1757 "src/parser.c"
1757 yy143:
1758 ++cur;
1759 #line 361 "src/parser.re"
1760 { NEWTOKEN(PSI_T_RSHIFT); goto start; }
1761 #line 1762 "src/parser.c"
1762 yy145:
1763 yyaccept = 5;
1764 yych = *(mrk = ++cur);
1765 switch (yych) {
1766 case 'R':
1767 case 'r': goto yy224;
1768 default: goto yy62;
1769 }
1770 yy146:
1771 yyaccept = 8;
1772 yych = *(mrk = ++cur);
1773 switch (yych) {
1774 case 0x00:
1775 case 0x01:
1776 case 0x02:
1777 case 0x03:
1778 case 0x04:
1779 case 0x05:
1780 case 0x06:
1781 case 0x07:
1782 case 0x08:
1783 case '\t':
1784 case '\n':
1785 case '\v':
1786 case '\f':
1787 case '\r':
1788 case 0x0E:
1789 case 0x0F:
1790 case 0x10:
1791 case 0x11:
1792 case 0x12:
1793 case 0x13:
1794 case 0x14:
1795 case 0x15:
1796 case 0x16:
1797 case 0x17:
1798 case 0x18:
1799 case 0x19:
1800 case 0x1A:
1801 case 0x1B:
1802 case 0x1C:
1803 case 0x1D:
1804 case 0x1E:
1805 case 0x1F:
1806 case ' ':
1807 case '!':
1808 case '"':
1809 case '#':
1810 case '$':
1811 case '%':
1812 case '&':
1813 case '\'':
1814 case '(':
1815 case ')':
1816 case '*':
1817 case '+':
1818 case ',':
1819 case '-':
1820 case '.':
1821 case '/':
1822 case ':':
1823 case ';':
1824 case '<':
1825 case '=':
1826 case '>':
1827 case '?':
1828 case '@':
1829 case '[':
1830 case ']':
1831 case '^':
1832 case '`':
1833 case '{':
1834 case '|':
1835 case '}':
1836 case '~':
1837 case 0x7F: goto yy147;
1838 case '\\': goto yy148;
1839 default: goto yy61;
1840 }
1841 yy147:
1842 #line 423 "src/parser.re"
1843 { NEWTOKEN(PSI_T_AS); goto start; }
1844 #line 1845 "src/parser.c"
1845 yy148:
1846 ++cur;
1847 if (lim <= cur) if (cur >= lim) goto done;;
1848 yych = *cur;
1849 switch (yych) {
1850 case 0x00:
1851 case 0x01:
1852 case 0x02:
1853 case 0x03:
1854 case 0x04:
1855 case 0x05:
1856 case 0x06:
1857 case 0x07:
1858 case 0x08:
1859 case '\t':
1860 case '\n':
1861 case '\v':
1862 case '\f':
1863 case '\r':
1864 case 0x0E:
1865 case 0x0F:
1866 case 0x10:
1867 case 0x11:
1868 case 0x12:
1869 case 0x13:
1870 case 0x14:
1871 case 0x15:
1872 case 0x16:
1873 case 0x17:
1874 case 0x18:
1875 case 0x19:
1876 case 0x1A:
1877 case 0x1B:
1878 case 0x1C:
1879 case 0x1D:
1880 case 0x1E:
1881 case 0x1F:
1882 case ' ':
1883 case '!':
1884 case '"':
1885 case '#':
1886 case '$':
1887 case '%':
1888 case '&':
1889 case '\'':
1890 case '(':
1891 case ')':
1892 case '*':
1893 case '+':
1894 case ',':
1895 case '-':
1896 case '.':
1897 case '/':
1898 case '0':
1899 case '1':
1900 case '2':
1901 case '3':
1902 case '4':
1903 case '5':
1904 case '6':
1905 case '7':
1906 case '8':
1907 case '9':
1908 case ':':
1909 case ';':
1910 case '<':
1911 case '=':
1912 case '>':
1913 case '?':
1914 case '@':
1915 case '[':
1916 case '\\':
1917 case ']':
1918 case '^':
1919 case '`':
1920 case '{':
1921 case '|':
1922 case '}':
1923 case '~':
1924 case 0x7F: goto yy114;
1925 default: goto yy184;
1926 }
1927 yy149:
1928 yyaccept = 5;
1929 yych = *(mrk = ++cur);
1930 switch (yych) {
1931 case 'O':
1932 case 'o': goto yy225;
1933 default: goto yy62;
1934 }
1935 yy150:
1936 yyaccept = 5;
1937 yych = *(mrk = ++cur);
1938 switch (yych) {
1939 case 'L':
1940 case 'l': goto yy226;
1941 default: goto yy62;
1942 }
1943 yy151:
1944 yyaccept = 5;
1945 yych = *(mrk = ++cur);
1946 switch (yych) {
1947 case 'U':
1948 case 'u': goto yy227;
1949 default: goto yy62;
1950 }
1951 yy152:
1952 yyaccept = 5;
1953 yych = *(mrk = ++cur);
1954 switch (yych) {
1955 case 'F':
1956 case 'f': goto yy228;
1957 default: goto yy62;
1958 }
1959 yy153:
1960 yyaccept = 5;
1961 yych = *(mrk = ++cur);
1962 switch (yych) {
1963 case 'I':
1964 case 'i': goto yy229;
1965 case 'S':
1966 case 's': goto yy230;
1967 default: goto yy62;
1968 }
1969 yy154:
1970 yyaccept = 5;
1971 yych = *(mrk = ++cur);
1972 switch (yych) {
1973 case 'D':
1974 case 'd': goto yy231;
1975 default: goto yy62;
1976 }
1977 yy155:
1978 yyaccept = 5;
1979 yych = *(mrk = ++cur);
1980 switch (yych) {
1981 case 'R':
1982 case 'r': goto yy232;
1983 default: goto yy62;
1984 }
1985 yy156:
1986 yyaccept = 5;
1987 yych = *(mrk = ++cur);
1988 switch (yych) {
1989 case 'L':
1990 case 'l': goto yy233;
1991 default: goto yy62;
1992 }
1993 yy157:
1994 yyaccept = 5;
1995 yych = *(mrk = ++cur);
1996 switch (yych) {
1997 case 'O':
1998 case 'o': goto yy234;
1999 default: goto yy62;
2000 }
2001 yy158:
2002 yyaccept = 5;
2003 yych = *(mrk = ++cur);
2004 switch (yych) {
2005 case 'E':
2006 case 'e': goto yy235;
2007 default: goto yy62;
2008 }
2009 yy159:
2010 yyaccept = 5;
2011 yych = *(mrk = ++cur);
2012 switch (yych) {
2013 case 'N':
2014 case 'n': goto yy236;
2015 default: goto yy62;
2016 }
2017 yy160:
2018 yyaccept = 9;
2019 yych = *(mrk = ++cur);
2020 switch (yych) {
2021 case 0x00:
2022 case 0x01:
2023 case 0x02:
2024 case 0x03:
2025 case 0x04:
2026 case 0x05:
2027 case 0x06:
2028 case 0x07:
2029 case 0x08:
2030 case '\t':
2031 case '\n':
2032 case '\v':
2033 case '\f':
2034 case '\r':
2035 case 0x0E:
2036 case 0x0F:
2037 case 0x10:
2038 case 0x11:
2039 case 0x12:
2040 case 0x13:
2041 case 0x14:
2042 case 0x15:
2043 case 0x16:
2044 case 0x17:
2045 case 0x18:
2046 case 0x19:
2047 case 0x1A:
2048 case 0x1B:
2049 case 0x1C:
2050 case 0x1D:
2051 case 0x1E:
2052 case 0x1F:
2053 case ' ':
2054 case '!':
2055 case '"':
2056 case '#':
2057 case '$':
2058 case '%':
2059 case '&':
2060 case '\'':
2061 case '(':
2062 case ')':
2063 case '*':
2064 case '+':
2065 case ',':
2066 case '-':
2067 case '.':
2068 case '/':
2069 case ':':
2070 case ';':
2071 case '<':
2072 case '=':
2073 case '>':
2074 case '?':
2075 case '@':
2076 case '[':
2077 case ']':
2078 case '^':
2079 case '`':
2080 case '{':
2081 case '|':
2082 case '}':
2083 case '~':
2084 case 0x7F: goto yy161;
2085 case 'D':
2086 case 'd': goto yy237;
2087 case 'N':
2088 case 'n': goto yy238;
2089 case '\\': goto yy148;
2090 default: goto yy61;
2091 }
2092 yy161:
2093 #line 393 "src/parser.re"
2094 { NEWTOKEN(PSI_T_IF); goto start; }
2095 #line 2096 "src/parser.c"
2096 yy162:
2097 yyaccept = 5;
2098 yych = *(mrk = ++cur);
2099 switch (yych) {
2100 case 'C':
2101 case 'c': goto yy239;
2102 case 'T':
2103 case 't': goto yy240;
2104 default: goto yy62;
2105 }
2106 yy163:
2107 ++cur;
2108 cur -= 1;
2109 #line 328 "src/parser.re"
2110 { char_width = SIZEOF_WCHAR_T/8; }
2111 #line 2112 "src/parser.c"
2112 yy165:
2113 yyaccept = 5;
2114 yych = *(mrk = ++cur);
2115 switch (yych) {
2116 case 'T':
2117 case 't': goto yy241;
2118 default: goto yy62;
2119 }
2120 yy166:
2121 yyaccept = 5;
2122 yych = *(mrk = ++cur);
2123 switch (yych) {
2124 case 'B':
2125 case 'b': goto yy243;
2126 default: goto yy62;
2127 }
2128 yy167:
2129 yyaccept = 5;
2130 yych = *(mrk = ++cur);
2131 switch (yych) {
2132 case 'X':
2133 case 'x': goto yy245;
2134 default: goto yy62;
2135 }
2136 yy168:
2137 yyaccept = 5;
2138 yych = *(mrk = ++cur);
2139 switch (yych) {
2140 case 'L':
2141 case 'l': goto yy246;
2142 default: goto yy62;
2143 }
2144 yy169:
2145 yyaccept = 5;
2146 yych = *(mrk = ++cur);
2147 switch (yych) {
2148 case 'J':
2149 case 'j': goto yy247;
2150 default: goto yy62;
2151 }
2152 yy170:
2153 yyaccept = 5;
2154 yych = *(mrk = ++cur);
2155 switch (yych) {
2156 case 'T':
2157 case 't': goto yy248;
2158 default: goto yy62;
2159 }
2160 yy171:
2161 yyaccept = 5;
2162 yych = *(mrk = ++cur);
2163 switch (yych) {
2164 case 'S':
2165 case 's': goto yy249;
2166 default: goto yy62;
2167 }
2168 yy172:
2169 yyaccept = 5;
2170 yych = *(mrk = ++cur);
2171 switch (yych) {
2172 case 'E':
2173 case 'e': goto yy250;
2174 default: goto yy62;
2175 }
2176 yy173:
2177 yyaccept = 5;
2178 yych = *(mrk = ++cur);
2179 switch (yych) {
2180 case 'T':
2181 case 't': goto yy251;
2182 default: goto yy62;
2183 }
2184 yy174:
2185 yyaccept = 5;
2186 yych = *(mrk = ++cur);
2187 switch (yych) {
2188 case 'T':
2189 case 't': goto yy252;
2190 default: goto yy62;
2191 }
2192 yy175:
2193 yyaccept = 5;
2194 yych = *(mrk = ++cur);
2195 switch (yych) {
2196 case 'A':
2197 case 'a': goto yy254;
2198 case 'R':
2199 case 'r': goto yy255;
2200 default: goto yy62;
2201 }
2202 yy176:
2203 yyaccept = 5;
2204 yych = *(mrk = ++cur);
2205 switch (yych) {
2206 case 'M':
2207 case 'm': goto yy256;
2208 default: goto yy62;
2209 }
2210 yy177:
2211 yyaccept = 5;
2212 yych = *(mrk = ++cur);
2213 switch (yych) {
2214 case '_': goto yy257;
2215 default: goto yy62;
2216 }
2217 yy178:
2218 yyaccept = 5;
2219 yych = *(mrk = ++cur);
2220 switch (yych) {
2221 case 'U':
2222 case 'u': goto yy258;
2223 default: goto yy62;
2224 }
2225 yy179:
2226 ++cur;
2227 cur -= 1;
2228 #line 327 "src/parser.re"
2229 { char_width = 4; }
2230 #line 2231 "src/parser.c"
2231 yy181:
2232 yyaccept = 5;
2233 yych = *(mrk = ++cur);
2234 switch (yych) {
2235 case 'D':
2236 case 'd': goto yy259;
2237 default: goto yy62;
2238 }
2239 yy182:
2240 yyaccept = 5;
2241 yych = *(mrk = ++cur);
2242 switch (yych) {
2243 case 'R':
2244 case 'r': goto yy260;
2245 default: goto yy62;
2246 }
2247 yy183:
2248 yyaccept = 5;
2249 yych = *(mrk = ++cur);
2250 switch (yych) {
2251 case 'A':
2252 case 'a': goto yy261;
2253 default: goto yy62;
2254 }
2255 yy184:
2256 yyaccept = 10;
2257 mrk = ++cur;
2258 if (lim <= cur) if (cur >= lim) goto done;;
2259 yych = *cur;
2260 switch (yych) {
2261 case 0x00:
2262 case 0x01:
2263 case 0x02:
2264 case 0x03:
2265 case 0x04:
2266 case 0x05:
2267 case 0x06:
2268 case 0x07:
2269 case 0x08:
2270 case '\t':
2271 case '\n':
2272 case '\v':
2273 case '\f':
2274 case '\r':
2275 case 0x0E:
2276 case 0x0F:
2277 case 0x10:
2278 case 0x11:
2279 case 0x12:
2280 case 0x13:
2281 case 0x14:
2282 case 0x15:
2283 case 0x16:
2284 case 0x17:
2285 case 0x18:
2286 case 0x19:
2287 case 0x1A:
2288 case 0x1B:
2289 case 0x1C:
2290 case 0x1D:
2291 case 0x1E:
2292 case 0x1F:
2293 case ' ':
2294 case '!':
2295 case '"':
2296 case '#':
2297 case '$':
2298 case '%':
2299 case '&':
2300 case '\'':
2301 case '(':
2302 case ')':
2303 case '*':
2304 case '+':
2305 case ',':
2306 case '-':
2307 case '.':
2308 case '/':
2309 case ':':
2310 case ';':
2311 case '<':
2312 case '=':
2313 case '>':
2314 case '?':
2315 case '@':
2316 case '[':
2317 case ']':
2318 case '^':
2319 case '`':
2320 case '{':
2321 case '|':
2322 case '}':
2323 case '~':
2324 case 0x7F: goto yy186;
2325 case '\\': goto yy148;
2326 default: goto yy184;
2327 }
2328 yy186:
2329 #line 444 "src/parser.re"
2330 { NEWTOKEN(PSI_T_NSNAME); goto start; }
2331 #line 2332 "src/parser.c"
2332 yy187:
2333 yyaccept = 5;
2334 yych = *(mrk = ++cur);
2335 switch (yych) {
2336 case 'a': goto yy262;
2337 case 'e': goto yy263;
2338 case 'i': goto yy264;
2339 case 'r': goto yy265;
2340 default: goto yy62;
2341 }
2342 yy188:
2343 yyaccept = 5;
2344 yych = *(mrk = ++cur);
2345 switch (yych) {
2346 case 'O': goto yy225;
2347 case 'o': goto yy266;
2348 default: goto yy62;
2349 }
2350 yy189:
2351 yyaccept = 5;
2352 yych = *(mrk = ++cur);
2353 switch (yych) {
2354 case 'a': goto yy267;
2355 default: goto yy62;
2356 }
2357 yy190:
2358 yyaccept = 5;
2359 yych = *(mrk = ++cur);
2360 switch (yych) {
2361 case 'U':
2362 case 'u': goto yy227;
2363 case 'n': goto yy268;
2364 default: goto yy62;
2365 }
2366 yy191:
2367 yyaccept = 5;
2368 yych = *(mrk = ++cur);
2369 switch (yych) {
2370 case 'u': goto yy269;
2371 default: goto yy62;
2372 }
2373 yy192:
2374 yyaccept = 5;
2375 yych = *(mrk = ++cur);
2376 switch (yych) {
2377 case 'D':
2378 case 'd': goto yy231;
2379 case 'u': goto yy270;
2380 default: goto yy62;
2381 }
2382 yy193:
2383 yyaccept = 5;
2384 yych = *(mrk = ++cur);
2385 switch (yych) {
2386 case 'O': goto yy234;
2387 case 'o': goto yy271;
2388 default: goto yy62;
2389 }
2390 yy194:
2391 yyaccept = 5;
2392 yych = *(mrk = ++cur);
2393 switch (yych) {
2394 case 'C':
2395 case 'c': goto yy239;
2396 case 'T': goto yy240;
2397 case 't': goto yy272;
2398 default: goto yy62;
2399 }
2400 yy195:
2401 yyaccept = 5;
2402 yych = *(mrk = ++cur);
2403 switch (yych) {
2404 case 'B':
2405 case 'b': goto yy243;
2406 case 'n': goto yy274;
2407 default: goto yy62;
2408 }
2409 yy196:
2410 yyaccept = 5;
2411 yych = *(mrk = ++cur);
2412 switch (yych) {
2413 case 'n': goto yy275;
2414 default: goto yy62;
2415 }
2416 yy197:
2417 yyaccept = 5;
2418 yych = *(mrk = ++cur);
2419 switch (yych) {
2420 case 'E':
2421 case 'e': goto yy250;
2422 case 'a': goto yy276;
2423 default: goto yy62;
2424 }
2425 yy198:
2426 yyaccept = 5;
2427 yych = *(mrk = ++cur);
2428 switch (yych) {
2429 case 'o': goto yy277;
2430 default: goto yy62;
2431 }
2432 yy199:
2433 yyaccept = 5;
2434 yych = *(mrk = ++cur);
2435 switch (yych) {
2436 case 'g': goto yy278;
2437 case 'z': goto yy279;
2438 default: goto yy62;
2439 }
2440 yy200:
2441 yyaccept = 5;
2442 yych = *(mrk = ++cur);
2443 switch (yych) {
2444 case 'A':
2445 case 'a': goto yy254;
2446 case 'R': goto yy255;
2447 case 'r': goto yy280;
2448 default: goto yy62;
2449 }
2450 yy201:
2451 yyaccept = 5;
2452 yych = *(mrk = ++cur);
2453 switch (yych) {
2454 case 'p': goto yy281;
2455 default: goto yy62;
2456 }
2457 yy202:
2458 ++cur;
2459 cur -= 1;
2460 #line 326 "src/parser.re"
2461 { char_width = 2; }
2462 #line 2463 "src/parser.c"
2463 yy204:
2464 yyaccept = 5;
2465 yych = *(mrk = ++cur);
2466 switch (yych) {
2467 case '"': goto yy282;
2468 default: goto yy62;
2469 }
2470 yy205:
2471 yyaccept = 5;
2472 yych = *(mrk = ++cur);
2473 switch (yych) {
2474 case 'D':
2475 case 'd': goto yy259;
2476 case 'i': goto yy284;
2477 case 's': goto yy285;
2478 default: goto yy62;
2479 }
2480 yy206:
2481 yyaccept = 5;
2482 yych = *(mrk = ++cur);
2483 switch (yych) {
2484 case 'i': goto yy286;
2485 case 'l': goto yy287;
2486 default: goto yy62;
2487 }
2488 yy207:
2489 ++cur;
2490 #line 347 "src/parser.re"
2491 { NEWTOKEN(PSI_T_OR); goto start; }
2492 #line 2493 "src/parser.c"
2493 yy209:
2494 ++cur;
2495 #line 367 "src/parser.re"
2496 { NEWTOKEN(PSI_T_ELLIPSIS); goto start; }
2497 #line 2498 "src/parser.c"
2498 yy211:
2499 yych = *++cur;
2500 switch (yych) {
2501 case 'D':
2502 case 'd': goto yy288;
2503 case 'F':
2504 case 'f': goto yy290;
2505 case 'L':
2506 case 'l': goto yy292;
2507 default: goto yy114;
2508 }
2509 yy212:
2510 ++cur;
2511 cur -= 1;
2512 #line 317 "src/parser.re"
2513 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_F; cur += 1; goto start; }
2514 #line 2515 "src/parser.c"
2515 yy214:
2516 ++cur;
2517 cur -= 1;
2518 #line 318 "src/parser.re"
2519 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_L; cur += 1; goto start; }
2520 #line 2521 "src/parser.c"
2521 yy216:
2522 yych = *++cur;
2523 switch (yych) {
2524 case 'U':
2525 case 'u': goto yy294;
2526 default: goto yy114;
2527 }
2528 yy217:
2529 ++cur;
2530 yy218:
2531 cur -= 2;
2532 #line 313 "src/parser.re"
2533 { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_UL; cur += 2; goto start; }
2534 #line 2535 "src/parser.c"
2535 yy219:
2536 yych = *++cur;
2537 switch (yych) {
2538 case 'L':
2539 case 'l': goto yy294;
2540 default: goto yy218;
2541 }
2542 yy220:
2543 yyaccept = 3;
2544 mrk = ++cur;
2545 if ((lim - cur) < 3) if (cur >= lim) goto done;;
2546 yych = *cur;
2547 switch (yych) {
2548 case '.': goto yy296;
2549 case '0':
2550 case '1':
2551 case '2':
2552 case '3':
2553 case '4':
2554 case '5':
2555 case '6':
2556 case '7':
2557 case '8':
2558 case '9':
2559 case 'A':
2560 case 'B':
2561 case 'C':
2562 case 'D':
2563 case 'E':
2564 case 'F':
2565 case 'a':
2566 case 'b':
2567 case 'c':
2568 case 'd':
2569 case 'e':
2570 case 'f': goto yy220;
2571 case 'L':
2572 case 'l': goto yy128;
2573 case 'P':
2574 case 'p': goto yy127;
2575 case 'U':
2576 case 'u': goto yy130;
2577 default: goto yy39;
2578 }
2579 yy222:
2580 ++cur;
2581 #line 446 "src/parser.re"
2582 { tok += 1; cur -= 1; NEWTOKEN(PSI_T_CPP_HEADER); cur += 1; goto start; }
2583 #line 2584 "src/parser.c"
2584 yy224:
2585 yyaccept = 5;
2586 yych = *(mrk = ++cur);
2587 switch (yych) {
2588 case 'A':
2589 case 'a': goto yy298;
2590 case 'V':
2591 case 'v': goto yy299;
2592 default: goto yy62;
2593 }
2594 yy225:
2595 yyaccept = 5;
2596 yych = *(mrk = ++cur);
2597 switch (yych) {
2598 case 'L':
2599 case 'l': goto yy300;
2600 default: goto yy62;
2601 }
2602 yy226:
2603 yyaccept = 5;
2604 yych = *(mrk = ++cur);
2605 switch (yych) {
2606 case 'L':
2607 case 'l': goto yy301;
2608 default: goto yy62;
2609 }
2610 yy227:
2611 yyaccept = 5;
2612 yych = *(mrk = ++cur);
2613 switch (yych) {
2614 case 'N':
2615 case 'n': goto yy302;
2616 default: goto yy62;
2617 }
2618 yy228:
2619 yyaccept = 5;
2620 yych = *(mrk = ++cur);
2621 switch (yych) {
2622 case 'I':
2623 case 'i': goto yy303;
2624 default: goto yy62;
2625 }
2626 yy229:
2627 yyaccept = 5;
2628 yych = *(mrk = ++cur);
2629 switch (yych) {
2630 case 'F':
2631 case 'f': goto yy304;
2632 default: goto yy62;
2633 }
2634 yy230:
2635 yyaccept = 5;
2636 yych = *(mrk = ++cur);
2637 switch (yych) {
2638 case 'E':
2639 case 'e': goto yy306;
2640 default: goto yy62;
2641 }
2642 yy231:
2643 yyaccept = 5;
2644 yych = *(mrk = ++cur);
2645 switch (yych) {
2646 case 'I':
2647 case 'i': goto yy308;
2648 default: goto yy62;
2649 }
2650 yy232:
2651 yyaccept = 5;
2652 yych = *(mrk = ++cur);
2653 switch (yych) {
2654 case 'O':
2655 case 'o': goto yy309;
2656 default: goto yy62;
2657 }
2658 yy233:
2659 yyaccept = 5;
2660 yych = *(mrk = ++cur);
2661 switch (yych) {
2662 case 'S':
2663 case 's': goto yy310;
2664 default: goto yy62;
2665 }
2666 yy234:
2667 yyaccept = 5;
2668 yych = *(mrk = ++cur);
2669 switch (yych) {
2670 case 'A':
2671 case 'a': goto yy311;
2672 default: goto yy62;
2673 }
2674 yy235:
2675 yyaccept = 5;
2676 yych = *(mrk = ++cur);
2677 switch (yych) {
2678 case 'E':
2679 case 'e': goto yy312;
2680 default: goto yy62;
2681 }
2682 yy236:
2683 yyaccept = 5;
2684 yych = *(mrk = ++cur);
2685 switch (yych) {
2686 case 'C':
2687 case 'c': goto yy314;
2688 default: goto yy62;
2689 }
2690 yy237:
2691 yyaccept = 5;
2692 yych = *(mrk = ++cur);
2693 switch (yych) {
2694 case 'E':
2695 case 'e': goto yy315;
2696 default: goto yy62;
2697 }
2698 yy238:
2699 yyaccept = 5;
2700 yych = *(mrk = ++cur);
2701 switch (yych) {
2702 case 'D':
2703 case 'd': goto yy316;
2704 default: goto yy62;
2705 }
2706 yy239:
2707 yyaccept = 5;
2708 yych = *(mrk = ++cur);
2709 switch (yych) {
2710 case 'L':
2711 case 'l': goto yy317;
2712 default: goto yy62;
2713 }
2714 yy240:
2715 yyaccept = 5;
2716 yych = *(mrk = ++cur);
2717 switch (yych) {
2718 case 'V':
2719 case 'v': goto yy318;
2720 default: goto yy62;
2721 }
2722 yy241:
2723 yyaccept = 11;
2724 yych = *(mrk = ++cur);
2725 switch (yych) {
2726 case 0x00:
2727 case 0x01:
2728 case 0x02:
2729 case 0x03:
2730 case 0x04:
2731 case 0x05:
2732 case 0x06:
2733 case 0x07:
2734 case 0x08:
2735 case '\t':
2736 case '\n':
2737 case '\v':
2738 case '\f':
2739 case '\r':
2740 case 0x0E:
2741 case 0x0F:
2742 case 0x10:
2743 case 0x11:
2744 case 0x12:
2745 case 0x13:
2746 case 0x14:
2747 case 0x15:
2748 case 0x16:
2749 case 0x17:
2750 case 0x18:
2751 case 0x19:
2752 case 0x1A:
2753 case 0x1B:
2754 case 0x1C:
2755 case 0x1D:
2756 case 0x1E:
2757 case 0x1F:
2758 case ' ':
2759 case '!':
2760 case '"':
2761 case '#':
2762 case '$':
2763 case '%':
2764 case '&':
2765 case '\'':
2766 case '(':
2767 case ')':
2768 case '*':
2769 case '+':
2770 case ',':
2771 case '-':
2772 case '.':
2773 case '/':
2774 case ':':
2775 case ';':
2776 case '<':
2777 case '=':
2778 case '>':
2779 case '?':
2780 case '@':
2781 case '[':
2782 case ']':
2783 case '^':
2784 case '`':
2785 case '{':
2786 case '|':
2787 case '}':
2788 case '~':
2789 case 0x7F: goto yy242;
2790 case '\\': goto yy148;
2791 default: goto yy61;
2792 }
2793 yy242:
2794 #line 418 "src/parser.re"
2795 { NEWTOKEN(PSI_T_LET); goto start; }
2796 #line 2797 "src/parser.c"
2797 yy243:
2798 yyaccept = 12;
2799 yych = *(mrk = ++cur);
2800 switch (yych) {
2801 case 0x00:
2802 case 0x01:
2803 case 0x02:
2804 case 0x03:
2805 case 0x04:
2806 case 0x05:
2807 case 0x06:
2808 case 0x07:
2809 case 0x08:
2810 case '\t':
2811 case '\n':
2812 case '\v':
2813 case '\f':
2814 case '\r':
2815 case 0x0E:
2816 case 0x0F:
2817 case 0x10:
2818 case 0x11:
2819 case 0x12:
2820 case 0x13:
2821 case 0x14:
2822 case 0x15:
2823 case 0x16:
2824 case 0x17:
2825 case 0x18:
2826 case 0x19:
2827 case 0x1A:
2828 case 0x1B:
2829 case 0x1C:
2830 case 0x1D:
2831 case 0x1E:
2832 case 0x1F:
2833 case ' ':
2834 case '!':
2835 case '"':
2836 case '#':
2837 case '$':
2838 case '%':
2839 case '&':
2840 case '\'':
2841 case '(':
2842 case ')':
2843 case '*':
2844 case '+':
2845 case ',':
2846 case '-':
2847 case '.':
2848 case '/':
2849 case ':':
2850 case ';':
2851 case '<':
2852 case '=':
2853 case '>':
2854 case '?':
2855 case '@':
2856 case '[':
2857 case ']':
2858 case '^':
2859 case '`':
2860 case '{':
2861 case '|':
2862 case '}':
2863 case '~':
2864 case 0x7F: goto yy244;
2865 case '\\': goto yy148;
2866 default: goto yy61;
2867 }
2868 yy244:
2869 #line 417 "src/parser.re"
2870 { NEWTOKEN(PSI_T_LIB); goto start; }
2871 #line 2872 "src/parser.c"
2872 yy245:
2873 yyaccept = 5;
2874 yych = *(mrk = ++cur);
2875 switch (yych) {
2876 case 'E':
2877 case 'e': goto yy319;
2878 default: goto yy62;
2879 }
2880 yy246:
2881 yyaccept = 5;
2882 yych = *(mrk = ++cur);
2883 switch (yych) {
2884 case 'L':
2885 case 'l': goto yy320;
2886 default: goto yy62;
2887 }
2888 yy247:
2889 yyaccept = 5;
2890 yych = *(mrk = ++cur);
2891 switch (yych) {
2892 case 'E':
2893 case 'e': goto yy322;
2894 case 'V':
2895 case 'v': goto yy323;
2896 default: goto yy62;
2897 }
2898 yy248:
2899 yyaccept = 5;
2900 yych = *(mrk = ++cur);
2901 switch (yych) {
2902 case 'H':
2903 case 'h': goto yy324;
2904 default: goto yy62;
2905 }
2906 yy249:
2907 yyaccept = 5;
2908 yych = *(mrk = ++cur);
2909 switch (yych) {
2910 case 'T':
2911 case 't': goto yy325;
2912 default: goto yy62;
2913 }
2914 yy250:
2915 yyaccept = 5;
2916 yych = *(mrk = ++cur);
2917 switch (yych) {
2918 case '_': goto yy326;
2919 default: goto yy62;
2920 }
2921 yy251:
2922 yyaccept = 5;
2923 yych = *(mrk = ++cur);
2924 switch (yych) {
2925 case 'U':
2926 case 'u': goto yy327;
2927 default: goto yy62;
2928 }
2929 yy252:
2930 yyaccept = 13;
2931 yych = *(mrk = ++cur);
2932 switch (yych) {
2933 case 0x00:
2934 case 0x01:
2935 case 0x02:
2936 case 0x03:
2937 case 0x04:
2938 case 0x05:
2939 case 0x06:
2940 case 0x07:
2941 case 0x08:
2942 case '\t':
2943 case '\n':
2944 case '\v':
2945 case '\f':
2946 case '\r':
2947 case 0x0E:
2948 case 0x0F:
2949 case 0x10:
2950 case 0x11:
2951 case 0x12:
2952 case 0x13:
2953 case 0x14:
2954 case 0x15:
2955 case 0x16:
2956 case 0x17:
2957 case 0x18:
2958 case 0x19:
2959 case 0x1A:
2960 case 0x1B:
2961 case 0x1C:
2962 case 0x1D:
2963 case 0x1E:
2964 case 0x1F:
2965 case ' ':
2966 case '!':
2967 case '"':
2968 case '#':
2969 case '$':
2970 case '%':
2971 case '&':
2972 case '\'':
2973 case '(':
2974 case ')':
2975 case '*':
2976 case '+':
2977 case ',':
2978 case '-':
2979 case '.':
2980 case '/':
2981 case ':':
2982 case ';':
2983 case '<':
2984 case '=':
2985 case '>':
2986 case '?':
2987 case '@':
2988 case '[':
2989 case ']':
2990 case '^':
2991 case '`':
2992 case '{':
2993 case '|':
2994 case '}':
2995 case '~':
2996 case 0x7F: goto yy253;
2997 case '\\': goto yy148;
2998 default: goto yy61;
2999 }
3000 yy253:
3001 #line 419 "src/parser.re"
3002 { NEWTOKEN(PSI_T_SET); goto start; }
3003 #line 3004 "src/parser.c"
3004 yy254:
3005 yyaccept = 5;
3006 yych = *(mrk = ++cur);
3007 switch (yych) {
3008 case 'T':
3009 case 't': goto yy328;
3010 default: goto yy62;
3011 }
3012 yy255:
3013 yyaccept = 5;
3014 yych = *(mrk = ++cur);
3015 switch (yych) {
3016 case 'I':
3017 case 'i': goto yy329;
3018 case 'L':
3019 case 'l': goto yy330;
3020 case 'V':
3021 case 'v': goto yy331;
3022 default: goto yy62;
3023 }
3024 yy256:
3025 yyaccept = 5;
3026 yych = *(mrk = ++cur);
3027 switch (yych) {
3028 case 'P':
3029 case 'p': goto yy332;
3030 default: goto yy62;
3031 }
3032 yy257:
3033 yyaccept = 5;
3034 yych = *(mrk = ++cur);
3035 switch (yych) {
3036 case 'A':
3037 case 'a': goto yy334;
3038 case 'B':
3039 case 'b': goto yy335;
3040 case 'F':
3041 case 'f': goto yy336;
3042 case 'I':
3043 case 'i': goto yy337;
3044 case 'O':
3045 case 'o': goto yy338;
3046 case 'S':
3047 case 's': goto yy339;
3048 default: goto yy62;
3049 }
3050 yy258:
3051 yyaccept = 5;
3052 yych = *(mrk = ++cur);
3053 switch (yych) {
3054 case 'E':
3055 case 'e': goto yy340;
3056 default: goto yy62;
3057 }
3058 yy259:
3059 yyaccept = 5;
3060 yych = *(mrk = ++cur);
3061 switch (yych) {
3062 case 'E':
3063 case 'e': goto yy342;
3064 default: goto yy62;
3065 }
3066 yy260:
3067 yyaccept = 5;
3068 yych = *(mrk = ++cur);
3069 switch (yych) {
3070 case 'N':
3071 case 'n': goto yy343;
3072 default: goto yy62;
3073 }
3074 yy261:
3075 yyaccept = 5;
3076 yych = *(mrk = ++cur);
3077 switch (yych) {
3078 case 'L':
3079 case 'l': goto yy344;
3080 default: goto yy62;
3081 }
3082 yy262:
3083 yyaccept = 5;
3084 yych = *(mrk = ++cur);
3085 switch (yych) {
3086 case 's': goto yy346;
3087 case 't': goto yy347;
3088 default: goto yy62;
3089 }
3090 yy263:
3091 yyaccept = 5;
3092 yych = *(mrk = ++cur);
3093 switch (yych) {
3094 case 'x': goto yy348;
3095 default: goto yy62;
3096 }
3097 yy264:
3098 yyaccept = 5;
3099 yych = *(mrk = ++cur);
3100 switch (yych) {
3101 case 'n': goto yy349;
3102 default: goto yy62;
3103 }
3104 yy265:
3105 yyaccept = 5;
3106 yych = *(mrk = ++cur);
3107 switch (yych) {
3108 case 'e': goto yy350;
3109 default: goto yy62;
3110 }
3111 yy266:
3112 yyaccept = 5;
3113 yych = *(mrk = ++cur);
3114 switch (yych) {
3115 case 'L': goto yy300;
3116 case 'l': goto yy351;
3117 default: goto yy62;
3118 }
3119 yy267:
3120 yyaccept = 5;
3121 yych = *(mrk = ++cur);
3122 switch (yych) {
3123 case 'r': goto yy353;
3124 default: goto yy62;
3125 }
3126 yy268:
3127 yyaccept = 5;
3128 yych = *(mrk = ++cur);
3129 switch (yych) {
3130 case 's': goto yy355;
3131 default: goto yy62;
3132 }
3133 yy269:
3134 yyaccept = 5;
3135 yych = *(mrk = ++cur);
3136 switch (yych) {
3137 case 'b': goto yy356;
3138 default: goto yy62;
3139 }
3140 yy270:
3141 yyaccept = 5;
3142 yych = *(mrk = ++cur);
3143 switch (yych) {
3144 case 'm': goto yy357;
3145 default: goto yy62;
3146 }
3147 yy271:
3148 yyaccept = 5;
3149 yych = *(mrk = ++cur);
3150 switch (yych) {
3151 case 'A': goto yy311;
3152 case 'a': goto yy359;
3153 default: goto yy62;
3154 }
3155 yy272:
3156 yyaccept = 14;
3157 yych = *(mrk = ++cur);
3158 switch (yych) {
3159 case 0x00:
3160 case 0x01:
3161 case 0x02:
3162 case 0x03:
3163 case 0x04:
3164 case 0x05:
3165 case 0x06:
3166 case 0x07:
3167 case 0x08:
3168 case '\t':
3169 case '\n':
3170 case '\v':