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