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