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