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