1 /* Generated by re2c 1.0.2 on Tue Oct 17 10:57:22 2017 */
2 #line 1 "src/parser.re"
3 /*******************************************************************************
4 Copyright (c) 2016, Michael Wallner <mike@php.net>.
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
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.
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 *******************************************************************************/
28 #include "php_psi_stdinc.h"
38 # define YYMAXFILL 256
41 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
44 P
= malloc(sizeof(*P
));
46 memset(P
, 0, sizeof(*P
));
48 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
50 P
->preproc
= psi_cpp_init(P
);
52 psi_cpp_load_defaults(P
->preproc
);
57 struct psi_parser_input
*psi_parser_open_file(struct psi_parser
*P
, const char *filename
, bool report_errors
)
61 struct psi_parser_input
*fb
;
63 if (stat(filename
, &sb
)) {
65 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
66 "Could not stat '%s': %s",
67 filename
, strerror(errno
));
72 if (!(fb
= malloc(sizeof(*fb
) + strlen(filename
) + 1 + sb
.st_size
+ YYMAXFILL
))) {
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
));
81 if (!(fp
= fopen(filename
, "r"))) {
84 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
85 "Could not open '%s' for reading: %s",
86 filename
, strerror(errno
));
91 if (sb
.st_size
!= fread(fb
->buffer
, 1, sb
.st_size
, fp
)) {
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
));
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);
110 struct psi_parser_input
*psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
112 struct psi_parser_input
*sb
;
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
));
121 memcpy(sb
->buffer
, string
, length
);
122 memset(sb
->buffer
+ length
, 0, YYMAXFILL
);
125 sb
->file
= &sb
->buffer
[length
+ YYMAXFILL
];
126 memcpy(sb
->file
, "<stdin>", sizeof("<stdin>"));
132 static void psi_parser_register_constants(struct psi_parser
*P
)
137 ZEND_HASH_FOREACH_STR_KEY_VAL(&P
->cpp
.defs
, key
, val
)
139 struct psi_impl_def_val
*iv
;
140 struct psi_const_type
*ct
;
148 switch (Z_TYPE_P(val
)) {
153 tmp
.zend
.bval
= Z_TYPE_P(val
) == IS_TRUE
;
158 tmp
.zend
.lval
= Z_LVAL_P(val
);
163 tmp
.dval
= Z_DVAL_P(val
);
168 str
= zval_get_string(val
);
169 tmp
.zend
.str
= zend_string_dup(str
, 1);
170 zend_string_release(str
);
174 iv
= psi_impl_def_val_init(ctt
, NULL
);
176 ct
= psi_const_type_init(ctt
, ctn
);
177 c
= psi_const_init(ct
, key
->val
, iv
);
179 P
->consts
= psi_plist_init((psi_plist_dtor
) psi_const_free
);
181 P
->consts
= psi_plist_add(P
->consts
, &c
);
183 ZEND_HASH_FOREACH_END();
187 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
189 if (psi_cpp_process(P
->preproc
, tokens
)) {
195 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
197 if (psi_plist_count(tokens
)) {
198 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
203 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
205 struct psi_plist
*scanned
, *preproc
;
206 size_t processed
= 0;
208 if (!(scanned
= psi_parser_scan(P
, I
))) {
212 if (!(preproc
= psi_parser_preprocess(P
, &scanned
))) {
213 psi_plist_free(scanned
);
217 if (!psi_parser_process(P
, preproc
, &processed
)) {
218 psi_plist_free(preproc
);
222 psi_plist_free(preproc
);
226 void psi_parser_dtor(struct psi_parser
*P
)
228 psi_cpp_free(&P
->preproc
);
229 psi_data_dtor(PSI_DATA(P
));
231 memset(P
, 0, sizeof(*P
));
234 void psi_parser_free(struct psi_parser
**P
)
247 #define NEWTOKEN(t) \
248 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
249 tokens = psi_plist_add(tokens, &token); \
250 if (P->flags & PSI_DEBUG) { \
251 fprintf(stderr, "PSI< "); \
252 psi_token_dump(2, token); \
256 char s
[SIZEOF_UINT32_T
];
260 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
262 struct psi_plist
*tokens
;
263 struct psi_token
*token
;
264 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
269 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
);
271 tok
= mrk
= eol
= cur
= I
->buffer
;
272 lim
= I
->buffer
+ I
->length
;
274 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
284 #line 285 "src/parser.c"
287 unsigned int yyaccept
= 0;
288 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
333 case '\'': goto yy20
;
384 case '\\': goto yy77
;
402 case '}': goto yy100
;
403 case '~': goto yy102
;
409 #line 450 "src/parser.re"
410 { NEWTOKEN(-2); goto error
; }
411 #line 412 "src/parser.c"
414 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
423 #line 449 "src/parser.re"
424 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
425 #line 426 "src/parser.c"
428 #line 448 "src/parser.re"
429 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
430 #line 431 "src/parser.c"
434 case '=': goto yy104
;
438 #line 351 "src/parser.re"
439 { NEWTOKEN(PSI_T_NOT
); goto start
; }
440 #line 441 "src/parser.c"
443 #line 324 "src/parser.re"
444 { escaped
= false; tok
+= 1; goto string
; }
445 #line 446 "src/parser.c"
449 case '#': goto yy106
;
453 #line 334 "src/parser.re"
454 { NEWTOKEN(PSI_T_HASH
); goto start
; }
455 #line 456 "src/parser.c"
528 #line 352 "src/parser.re"
529 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
530 #line 531 "src/parser.c"
534 case '&': goto yy111
;
538 #line 353 "src/parser.re"
539 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
540 #line 541 "src/parser.c"
543 #line 323 "src/parser.re"
544 { escaped
= false; tok
+= 1; goto character
; }
545 #line 546 "src/parser.c"
548 #line 335 "src/parser.re"
549 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
550 #line 551 "src/parser.c"
553 #line 336 "src/parser.re"
554 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
555 #line 556 "src/parser.c"
558 #line 349 "src/parser.re"
559 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
560 #line 561 "src/parser.c"
563 yych
= *(mrk
= ++cur
);
565 case '.': goto yy113
;
579 #line 354 "src/parser.re"
580 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
581 #line 582 "src/parser.c"
584 #line 338 "src/parser.re"
585 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
586 #line 587 "src/parser.c"
589 yych
= *(mrk
= ++cur
);
591 case '.': goto yy113
;
605 #line 355 "src/parser.re"
606 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
607 #line 608 "src/parser.c"
610 yych
= *(mrk
= ++cur
);
612 case '.': goto yy115
;
622 case '9': goto yy116
;
626 #line 366 "src/parser.re"
627 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
628 #line 629 "src/parser.c"
632 case '*': goto yy119
;
633 case '/': goto yy121
;
637 #line 356 "src/parser.re"
638 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
639 #line 640 "src/parser.c"
642 yych
= *(mrk
= ++cur
);
644 case '.': goto yy123
;
646 case 'e': goto yy127
;
648 case 'x': goto yy132
;
652 #line 310 "src/parser.re"
653 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
654 #line 655 "src/parser.c"
658 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
661 case '.': goto yy123
;
673 case 'e': goto yy127
;
675 case 'l': goto yy128
;
677 case 'u': goto yy130
;
682 #line 339 "src/parser.re"
683 { NEWTOKEN(PSI_T_COLON
); goto start
; }
684 #line 685 "src/parser.c"
687 #line 337 "src/parser.re"
688 { NEWTOKEN(PSI_T_EOS
); goto start
; }
689 #line 690 "src/parser.c"
692 yych
= *(mrk
= ++cur
);
759 case 'z': goto yy133
;
760 case '<': goto yy135
;
761 case '=': goto yy137
;
765 #line 364 "src/parser.re"
766 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
767 #line 768 "src/parser.c"
771 case '=': goto yy139
;
775 #line 348 "src/parser.re"
776 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
777 #line 778 "src/parser.c"
781 case '=': goto yy141
;
782 case '>': goto yy143
;
786 #line 365 "src/parser.re"
787 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
788 #line 789 "src/parser.c"
791 #line 368 "src/parser.re"
792 { NEWTOKEN(PSI_T_IIF
); goto start
; }
793 #line 794 "src/parser.c"
796 yych
= *(mrk
= ++cur
);
799 case 'r': goto yy145
;
801 case 's': goto yy146
;
805 #line 443 "src/parser.re"
806 { NEWTOKEN(PSI_T_NAME
); goto start
; }
807 #line 808 "src/parser.c"
810 yych
= *(mrk
= ++cur
);
813 case 'o': goto yy149
;
818 yych
= *(mrk
= ++cur
);
821 case 'a': goto yy150
;
823 case 'o': goto yy151
;
828 yych
= *(mrk
= ++cur
);
831 case 'e': goto yy152
;
836 yych
= *(mrk
= ++cur
);
839 case 'l': goto yy153
;
841 case 'n': goto yy154
;
843 case 'r': goto yy155
;
848 yych
= *(mrk
= ++cur
);
851 case 'a': goto yy156
;
853 case 'l': goto yy157
;
855 case 'r': goto yy158
;
857 case 'u': goto yy159
;
863 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
930 case 0x7F: goto yy55
;
931 case '\\': goto yy148
;
936 yych
= *(mrk
= ++cur
);
939 case 'f': goto yy160
;
941 case 'n': goto yy162
;
946 yych
= *(mrk
= ++cur
);
949 case '\'': goto yy163
;
951 case 'e': goto yy165
;
953 case 'i': goto yy166
;
958 yych
= *(mrk
= ++cur
);
961 case 'i': goto yy167
;
966 yych
= *(mrk
= ++cur
);
969 case 'u': goto yy168
;
974 yych
= *(mrk
= ++cur
);
977 case 'b': goto yy169
;
982 yych
= *(mrk
= ++cur
);
985 case 'a': goto yy170
;
987 case 'o': goto yy171
;
989 case 'r': goto yy172
;
994 yych
= *(mrk
= ++cur
);
997 case 'e': goto yy173
;
1002 yych
= *(mrk
= ++cur
);
1005 case 'e': goto yy174
;
1007 case 't': goto yy175
;
1012 yych
= *(mrk
= ++cur
);
1015 case 'e': goto yy176
;
1017 case 'o': goto yy177
;
1019 case 'r': goto yy178
;
1024 yych
= *(mrk
= ++cur
);
1027 case '\'': goto yy179
;
1029 case 'n': goto yy181
;
1034 yych
= *(mrk
= ++cur
);
1037 case 'a': goto yy182
;
1042 yych
= *(mrk
= ++cur
);
1045 case 'v': goto yy183
;
1050 #line 342 "src/parser.re"
1051 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1052 #line 1053 "src/parser.c"
1130 case 0x7F: goto yy78
;
1131 default: goto yy184
;
1134 #line 357 "src/parser.re"
1135 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1136 #line 1137 "src/parser.c"
1139 #line 343 "src/parser.re"
1140 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1141 #line 1142 "src/parser.c"
1144 #line 359 "src/parser.re"
1145 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1146 #line 1147 "src/parser.c"
1149 yych
= *(mrk
= ++cur
);
1151 case '_': goto yy187
;
1156 yych
= *(mrk
= ++cur
);
1158 case 'O': goto yy149
;
1159 case 'o': goto yy188
;
1164 yych
= *(mrk
= ++cur
);
1167 case 'a': goto yy150
;
1168 case 'O': goto yy151
;
1169 case 'h': goto yy189
;
1170 case 'o': goto yy190
;
1175 yych
= *(mrk
= ++cur
);
1178 case 'e': goto yy152
;
1179 case 'o': goto yy191
;
1184 yych
= *(mrk
= ++cur
);
1187 case 'l': goto yy153
;
1188 case 'N': goto yy154
;
1190 case 'r': goto yy155
;
1191 case 'n': goto yy192
;
1196 yych
= *(mrk
= ++cur
);
1199 case 'a': goto yy156
;
1200 case 'L': goto yy157
;
1202 case 'r': goto yy158
;
1204 case 'u': goto yy159
;
1205 case 'l': goto yy193
;
1210 yych
= *(mrk
= ++cur
);
1213 case 'f': goto yy160
;
1214 case 'N': goto yy162
;
1215 case 'n': goto yy194
;
1220 yych
= *(mrk
= ++cur
);
1223 case 'e': goto yy165
;
1224 case 'I': goto yy166
;
1225 case 'i': goto yy195
;
1226 case 'o': goto yy196
;
1231 yych
= *(mrk
= ++cur
);
1234 case 'a': goto yy170
;
1236 case 'o': goto yy171
;
1237 case 'R': goto yy172
;
1238 case 'r': goto yy197
;
1243 yych
= *(mrk
= ++cur
);
1246 case 'e': goto yy174
;
1247 case 'T': goto yy175
;
1248 case 'h': goto yy198
;
1249 case 'i': goto yy199
;
1250 case 't': goto yy200
;
1255 yych
= *(mrk
= ++cur
);
1258 case 'e': goto yy176
;
1260 case 'o': goto yy177
;
1262 case 'r': goto yy178
;
1263 case 'y': goto yy201
;
1268 yych
= *(mrk
= ++cur
);
1271 case '\'': goto yy202
;
1272 case '8': goto yy204
;
1273 case 'N': goto yy181
;
1274 case 'n': goto yy205
;
1279 yych
= *(mrk
= ++cur
);
1281 case 'o': goto yy206
;
1286 #line 340 "src/parser.re"
1287 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1288 #line 1289 "src/parser.c"
1292 case '|': goto yy207
;
1296 #line 358 "src/parser.re"
1297 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1298 #line 1299 "src/parser.c"
1301 #line 341 "src/parser.re"
1302 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1303 #line 1304 "src/parser.c"
1306 #line 350 "src/parser.re"
1307 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1308 #line 1309 "src/parser.c"
1311 #line 344 "src/parser.re"
1312 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1313 #line 1314 "src/parser.c"
1316 #line 333 "src/parser.re"
1317 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1318 #line 1319 "src/parser.c"
1321 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1388 case 0x7F: goto yy110
;
1389 default: goto yy108
;
1392 #line 445 "src/parser.re"
1393 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1394 #line 1395 "src/parser.c"
1397 #line 346 "src/parser.re"
1398 { NEWTOKEN(PSI_T_AND
); goto start
; }
1399 #line 1400 "src/parser.c"
1412 case '9': goto yy116
;
1413 default: goto yy114
;
1428 case 10: goto yy186
;
1429 case 11: goto yy242
;
1430 case 12: goto yy244
;
1431 case 13: goto yy253
;
1432 case 14: goto yy273
;
1433 case 15: goto yy305
;
1434 case 16: goto yy307
;
1435 case 17: goto yy313
;
1436 case 18: goto yy321
;
1437 case 19: goto yy333
;
1438 case 20: goto yy341
;
1439 case 21: goto yy345
;
1440 case 22: goto yy352
;
1441 case 23: goto yy354
;
1442 case 24: goto yy358
;
1443 case 25: goto yy361
;
1444 case 26: goto yy363
;
1445 case 27: goto yy373
;
1446 case 28: goto yy376
;
1447 case 29: goto yy383
;
1448 case 30: goto yy386
;
1449 case 31: goto yy388
;
1450 case 32: goto yy390
;
1451 case 33: goto yy394
;
1452 case 34: goto yy399
;
1453 case 35: goto yy417
;
1454 case 36: goto yy425
;
1455 case 37: goto yy428
;
1456 case 38: goto yy431
;
1457 case 39: goto yy437
;
1458 case 40: goto yy441
;
1459 case 41: goto yy446
;
1460 case 42: goto yy448
;
1461 case 43: goto yy452
;
1462 case 44: goto yy455
;
1463 case 45: goto yy457
;
1464 case 46: goto yy459
;
1465 case 47: goto yy464
;
1466 case 48: goto yy466
;
1467 case 49: goto yy468
;
1468 case 50: goto yy470
;
1469 case 51: goto yy472
;
1470 case 52: goto yy477
;
1471 case 53: goto yy487
;
1472 case 54: goto yy489
;
1473 case 55: goto yy491
;
1474 case 56: goto yy493
;
1475 case 57: goto yy495
;
1476 case 58: goto yy500
;
1477 case 59: goto yy504
;
1478 case 60: goto yy508
;
1479 case 61: goto yy510
;
1480 case 62: goto yy515
;
1481 case 63: goto yy520
;
1482 case 64: goto yy522
;
1483 case 65: goto yy530
;
1484 case 66: goto yy534
;
1485 case 67: goto yy536
;
1486 case 68: goto yy538
;
1487 case 69: goto yy540
;
1488 case 70: goto yy545
;
1489 case 71: goto yy547
;
1490 case 72: goto yy553
;
1491 case 73: goto yy558
;
1492 case 74: goto yy560
;
1493 case 75: goto yy565
;
1494 case 76: goto yy567
;
1495 case 77: goto yy575
;
1496 case 78: goto yy579
;
1497 case 79: goto yy583
;
1498 case 80: goto yy587
;
1499 case 81: goto yy589
;
1500 default: goto yy594
;
1505 case '.': goto yy209
;
1506 default: goto yy114
;
1511 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1523 case '9': goto yy116
;
1525 case 'd': goto yy211
;
1527 case 'f': goto yy212
;
1529 case 'l': goto yy214
;
1530 default: goto yy118
;
1533 #line 316 "src/parser.re"
1534 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1535 #line 1536 "src/parser.c"
1538 #line 330 "src/parser.re"
1540 #line 1541 "src/parser.c"
1543 #line 331 "src/parser.re"
1544 { goto comment_sl
; }
1545 #line 1546 "src/parser.c"
1549 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1561 case '9': goto yy123
;
1563 case 'd': goto yy211
;
1565 case 'e': goto yy127
;
1567 case 'f': goto yy212
;
1569 case 'l': goto yy214
;
1570 default: goto yy118
;
1574 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1585 case '7': goto yy125
;
1587 case 'l': goto yy128
;
1589 case 'u': goto yy130
;
1596 case '-': goto yy113
;
1606 case '9': goto yy116
;
1607 default: goto yy114
;
1611 yych
= *(mrk
= ++cur
);
1614 case 'l': goto yy216
;
1616 case 'u': goto yy217
;
1617 default: goto yy129
;
1621 #line 312 "src/parser.re"
1622 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1623 #line 1624 "src/parser.c"
1628 case 'l': goto yy219
;
1629 default: goto yy131
;
1633 #line 311 "src/parser.re"
1634 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1635 #line 1636 "src/parser.c"
1660 case 'f': goto yy220
;
1661 default: goto yy114
;
1665 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1733 case 'z': goto yy133
;
1734 case '>': goto yy222
;
1735 default: goto yy114
;
1739 #line 360 "src/parser.re"
1740 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1741 #line 1742 "src/parser.c"
1744 #line 362 "src/parser.re"
1745 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1746 #line 1747 "src/parser.c"
1749 #line 345 "src/parser.re"
1750 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1751 #line 1752 "src/parser.c"
1754 #line 363 "src/parser.re"
1755 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1756 #line 1757 "src/parser.c"
1759 #line 361 "src/parser.re"
1760 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1761 #line 1762 "src/parser.c"
1764 yych
= *(mrk
= ++cur
);
1767 case 'r': goto yy224
;
1772 yych
= *(mrk
= ++cur
);
1837 case 0x7F: goto yy147
;
1838 case '\\': goto yy148
;
1842 #line 423 "src/parser.re"
1843 { NEWTOKEN(PSI_T_AS
); goto start
; }
1844 #line 1845 "src/parser.c"
1847 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1924 case 0x7F: goto yy114
;
1925 default: goto yy184
;
1929 yych
= *(mrk
= ++cur
);
1932 case 'o': goto yy225
;
1937 yych
= *(mrk
= ++cur
);
1940 case 'l': goto yy226
;
1945 yych
= *(mrk
= ++cur
);
1948 case 'u': goto yy227
;
1953 yych
= *(mrk
= ++cur
);
1956 case 'f': goto yy228
;
1961 yych
= *(mrk
= ++cur
);
1964 case 'i': goto yy229
;
1966 case 's': goto yy230
;
1971 yych
= *(mrk
= ++cur
);
1974 case 'd': goto yy231
;
1979 yych
= *(mrk
= ++cur
);
1982 case 'r': goto yy232
;
1987 yych
= *(mrk
= ++cur
);
1990 case 'l': goto yy233
;
1995 yych
= *(mrk
= ++cur
);
1998 case 'o': goto yy234
;
2003 yych
= *(mrk
= ++cur
);
2006 case 'e': goto yy235
;
2011 yych
= *(mrk
= ++cur
);
2014 case 'n': goto yy236
;
2019 yych
= *(mrk
= ++cur
);
2084 case 0x7F: goto yy161
;
2086 case 'd': goto yy237
;
2088 case 'n': goto yy238
;
2089 case '\\': goto yy148
;
2093 #line 393 "src/parser.re"
2094 { NEWTOKEN(PSI_T_IF
); goto start
; }
2095 #line 2096 "src/parser.c"
2098 yych
= *(mrk
= ++cur
);
2101 case 'c': goto yy239
;
2103 case 't': goto yy240
;
2109 #line 328 "src/parser.re"
2110 { char_width
= SIZEOF_WCHAR_T
/8; }
2111 #line 2112 "src/parser.c"
2114 yych
= *(mrk
= ++cur
);
2117 case 't': goto yy241
;
2122 yych
= *(mrk
= ++cur
);
2125 case 'b': goto yy243
;
2130 yych
= *(mrk
= ++cur
);
2133 case 'x': goto yy245
;
2138 yych
= *(mrk
= ++cur
);
2141 case 'l': goto yy246
;
2146 yych
= *(mrk
= ++cur
);
2149 case 'j': goto yy247
;
2154 yych
= *(mrk
= ++cur
);
2157 case 't': goto yy248
;
2162 yych
= *(mrk
= ++cur
);
2165 case 's': goto yy249
;
2170 yych
= *(mrk
= ++cur
);
2173 case 'e': goto yy250
;
2178 yych
= *(mrk
= ++cur
);
2181 case 't': goto yy251
;
2186 yych
= *(mrk
= ++cur
);
2189 case 't': goto yy252
;
2194 yych
= *(mrk
= ++cur
);
2197 case 'a': goto yy254
;
2199 case 'r': goto yy255
;
2204 yych
= *(mrk
= ++cur
);
2207 case 'm': goto yy256
;
2212 yych
= *(mrk
= ++cur
);
2214 case '_': goto yy257
;
2219 yych
= *(mrk
= ++cur
);
2222 case 'u': goto yy258
;
2228 #line 327 "src/parser.re"
2230 #line 2231 "src/parser.c"
2233 yych
= *(mrk
= ++cur
);
2236 case 'd': goto yy259
;
2241 yych
= *(mrk
= ++cur
);
2244 case 'r': goto yy260
;
2249 yych
= *(mrk
= ++cur
);
2252 case 'a': goto yy261
;
2258 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2324 case 0x7F: goto yy186
;
2325 case '\\': goto yy148
;
2326 default: goto yy184
;
2329 #line 444 "src/parser.re"
2330 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2331 #line 2332 "src/parser.c"
2334 yych
= *(mrk
= ++cur
);
2336 case 'a': goto yy262
;
2337 case 'e': goto yy263
;
2338 case 'i': goto yy264
;
2339 case 'r': goto yy265
;
2344 yych
= *(mrk
= ++cur
);
2346 case 'O': goto yy225
;
2347 case 'o': goto yy266
;
2352 yych
= *(mrk
= ++cur
);
2354 case 'a': goto yy267
;
2359 yych
= *(mrk
= ++cur
);
2362 case 'u': goto yy227
;
2363 case 'n': goto yy268
;
2368 yych
= *(mrk
= ++cur
);
2370 case 'u': goto yy269
;
2375 yych
= *(mrk
= ++cur
);
2378 case 'd': goto yy231
;
2379 case 'u': goto yy270
;
2384 yych
= *(mrk
= ++cur
);
2386 case 'O': goto yy234
;
2387 case 'o': goto yy271
;
2392 yych
= *(mrk
= ++cur
);
2395 case 'c': goto yy239
;
2396 case 'T': goto yy240
;
2397 case 't': goto yy272
;
2402 yych
= *(mrk
= ++cur
);
2405 case 'b': goto yy243
;
2406 case 'n': goto yy274
;
2411 yych
= *(mrk
= ++cur
);
2413 case 'n': goto yy275
;
2418 yych
= *(mrk
= ++cur
);
2421 case 'e': goto yy250
;
2422 case 'a': goto yy276
;
2427 yych
= *(mrk
= ++cur
);
2429 case 'o': goto yy277
;
2434 yych
= *(mrk
= ++cur
);
2436 case 'g': goto yy278
;
2437 case 'z': goto yy279
;
2442 yych
= *(mrk
= ++cur
);
2445 case 'a': goto yy254
;
2446 case 'R': goto yy255
;
2447 case 'r': goto yy280
;
2452 yych
= *(mrk
= ++cur
);
2454 case 'p': goto yy281
;
2460 #line 326 "src/parser.re"
2462 #line 2463 "src/parser.c"
2465 yych
= *(mrk
= ++cur
);
2467 case '"': goto yy282
;
2472 yych
= *(mrk
= ++cur
);
2475 case 'd': goto yy259
;
2476 case 'i': goto yy284
;
2477 case 's': goto yy285
;
2482 yych
= *(mrk
= ++cur
);
2484 case 'i': goto yy286
;
2485 case 'l': goto yy287
;
2490 #line 347 "src/parser.re"
2491 { NEWTOKEN(PSI_T_OR
); goto start
; }
2492 #line 2493 "src/parser.c"
2495 #line 367 "src/parser.re"
2496 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2497 #line 2498 "src/parser.c"
2502 case 'd': goto yy288
;
2504 case 'f': goto yy290
;
2506 case 'l': goto yy292
;
2507 default: goto yy114
;
2512 #line 317 "src/parser.re"
2513 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2514 #line 2515 "src/parser.c"
2518 #line 318 "src/parser.re"
2519 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2520 #line 2521 "src/parser.c"
2525 case 'u': goto yy294
;
2526 default: goto yy114
;
2532 #line 313 "src/parser.re"
2533 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2534 #line 2535 "src/parser.c"
2539 case 'l': goto yy294
;
2540 default: goto yy218
;
2545 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2548 case '.': goto yy296
;
2570 case 'f': goto yy220
;
2572 case 'l': goto yy128
;
2574 case 'p': goto yy127
;
2576 case 'u': goto yy130
;
2581 #line 446 "src/parser.re"
2582 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2583 #line 2584 "src/parser.c"
2586 yych
= *(mrk
= ++cur
);
2589 case 'a': goto yy298
;
2591 case 'v': goto yy299
;
2596 yych
= *(mrk
= ++cur
);
2599 case 'l': goto yy300
;
2604 yych
= *(mrk
= ++cur
);
2607 case 'l': goto yy301
;
2612 yych
= *(mrk
= ++cur
);
2615 case 'n': goto yy302
;
2620 yych
= *(mrk
= ++cur
);
2623 case 'i': goto yy303
;
2628 yych
= *(mrk
= ++cur
);
2631 case 'f': goto yy304
;
2636 yych
= *(mrk
= ++cur
);
2639 case 'e': goto yy306
;
2644 yych
= *(mrk
= ++cur
);
2647 case 'i': goto yy308
;
2652 yych
= *(mrk
= ++cur
);
2655 case 'o': goto yy309
;
2660 yych
= *(mrk
= ++cur
);
2663 case 's': goto yy310
;
2668 yych
= *(mrk
= ++cur
);
2671 case 'a': goto yy311
;
2676 yych
= *(mrk
= ++cur
);
2679 case 'e': goto yy312
;
2684 yych
= *(mrk
= ++cur
);
2687 case 'c': goto yy314
;
2692 yych
= *(mrk
= ++cur
);
2695 case 'e': goto yy315
;
2700 yych
= *(mrk
= ++cur
);
2703 case 'd': goto yy316
;
2708 yych
= *(mrk
= ++cur
);
2711 case 'l': goto yy317
;
2716 yych
= *(mrk
= ++cur
);
2719 case 'v': goto yy318
;
2724 yych
= *(mrk
= ++cur
);
2789 case 0x7F: goto yy242
;
2790 case '\\': goto yy148
;
2794 #line 418 "src/parser.re"
2795 { NEWTOKEN(PSI_T_LET
); goto start
; }
2796 #line 2797 "src/parser.c"
2799 yych
= *(mrk
= ++cur
);
2864 case 0x7F: goto yy244
;
2865 case '\\': goto yy148
;
2869 #line 417 "src/parser.re"
2870 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2871 #line 2872 "src/parser.c"
2874 yych
= *(mrk
= ++cur
);
2877 case 'e': goto yy319
;
2882 yych
= *(mrk
= ++cur
);
2885 case 'l': goto yy320
;
2890 yych
= *(mrk
= ++cur
);
2893 case 'e': goto yy322
;
2895 case 'v': goto yy323
;
2900 yych
= *(mrk
= ++cur
);
2903 case 'h': goto yy324
;
2908 yych
= *(mrk
= ++cur
);
2911 case 't': goto yy325
;
2916 yych
= *(mrk
= ++cur
);
2918 case '_': goto yy326
;
2923 yych
= *(mrk
= ++cur
);
2926 case 'u': goto yy327
;
2931 yych
= *(mrk
= ++cur
);
2996 case 0x7F: goto yy253
;
2997 case '\\': goto yy148
;
3001 #line 419 "src/parser.re"
3002 { NEWTOKEN(PSI_T_SET
); goto start
; }
3003 #line 3004 "src/parser.c"
3006 yych
= *(mrk
= ++cur
);
3009 case 't': goto yy328
;
3014 yych
= *(mrk
= ++cur
);
3017 case 'i': goto yy329
;
3019 case 'l': goto yy330
;
3021 case 'v': goto yy331
;
3026 yych
= *(mrk
= ++cur
);
3029 case 'p': goto yy332
;
3034 yych
= *(mrk
= ++cur
);
3037 case 'a': goto yy334
;
3039 case 'b': goto yy335
;
3041 case 'f': goto yy336
;
3043 case 'i': goto yy337
;
3045 case 'o': goto yy338
;
3047 case 's': goto yy339
;
3052 yych
= *(mrk
= ++cur
);
3055 case 'e': goto yy340
;
3060 yych
= *(mrk
= ++cur
);
3063 case 'e': goto yy342
;
3068 yych
= *(mrk
= ++cur
);
3071 case 'n': goto yy343
;
3076 yych
= *(mrk
= ++cur
);
3079 case 'l': goto yy344
;
3084 yych
= *(mrk
= ++cur
);
3086 case 's': goto yy346
;
3087 case 't': goto yy347
;
3092 yych
= *(mrk
= ++cur
);
3094 case 'x': goto yy348
;
3099 yych
= *(mrk
= ++cur
);
3101 case 'n': goto yy349
;
3106 yych
= *(mrk
= ++cur
);
3108 case 'e': goto yy350
;
3113 yych
= *(mrk
= ++cur
);
3115 case 'L': goto yy300
;
3116 case 'l': goto yy351
;
3121 yych
= *(mrk
= ++cur
);
3123 case 'r': goto yy353
;
3128 yych
= *(mrk
= ++cur
);
3130 case 's': goto yy355
;
3135 yych
= *(mrk
= ++cur
);
3137 case 'b': goto yy356
;
3142 yych
= *(mrk
= ++cur
);
3144 case 'm': goto yy357
;
3149 yych
= *(mrk
= ++cur
);
3151 case 'A': goto yy311
;
3152 case 'a': goto yy359
;
3157 yych
= *(mrk
= ++cur
);
3222 case 0x7F: goto yy273
;
3224 case 'v': goto yy318
;
3225 case '\\': goto yy148
;
3229 #line 387 "src/parser.re"
3230 { NEWTOKEN(PSI_T_INT
); goto start
; }
3231 #line 3232 "src/parser.c"
3234 yych
= *(mrk
= ++cur
);
3236 case 'e': goto yy360
;
3241 yych
= *(mrk
= ++cur
);
3243 case 'g': goto yy362
;
3248 yych
= *(mrk
= ++cur
);
3250 case 'g': goto yy364
;
3255 yych
= *(mrk
= ++cur
);
3257 case 'r': goto yy365
;
3262 yych
= *(mrk
= ++cur
);
3264 case 'n': goto yy366
;
3269 yych
= *(mrk
= ++cur
);
3271 case 'e': goto yy367
;
3276 yych
= *(mrk
= ++cur
);
3279 case 'i': goto yy329
;
3281 case 'l': goto yy330
;
3283 case 'v': goto yy331
;
3284 case 'u': goto yy368
;
3289 yych
= *(mrk
= ++cur
);
3291 case 'e': goto yy369
;
3297 #line 325 "src/parser.re"
3299 #line 3300 "src/parser.c"
3302 yych
= *(mrk
= ++cur
);
3304 case 'o': goto yy370
;
3309 yych
= *(mrk
= ++cur
);
3311 case 'i': goto yy371
;
3316 yych
= *(mrk
= ++cur
);
3318 case 'd': goto yy372
;
3323 yych
= *(mrk
= ++cur
);
3325 case 'a': goto yy374
;
3331 #line 320 "src/parser.re"
3332 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3333 #line 3334 "src/parser.c"
3337 #line 319 "src/parser.re"
3338 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3339 #line 3340 "src/parser.c"
3343 #line 321 "src/parser.re"
3344 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3345 #line 3346 "src/parser.c"
3349 #line 314 "src/parser.re"
3350 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3351 #line 3352 "src/parser.c"
3354 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3378 case 'f': goto yy296
;
3380 case 'p': goto yy127
;
3381 default: goto yy114
;
3385 yych
= *(mrk
= ++cur
);
3388 case 'y': goto yy375
;
3393 yych
= *(mrk
= ++cur
);
3396 case 'a': goto yy377
;
3401 yych
= *(mrk
= ++cur
);
3404 case 'v': goto yy378
;
3409 yych
= *(mrk
= ++cur
);
3412 case 'a': goto yy379
;
3414 case 'b': goto yy380
;
3416 case 'o': goto yy381
;
3421 yych
= *(mrk
= ++cur
);
3424 case 't': goto yy382
;
3429 yych
= *(mrk
= ++cur
);
3432 case 'n': goto yy384
;
3437 yych
= *(mrk
= ++cur
);
3502 case 0x7F: goto yy305
;
3503 case '\\': goto yy148
;
3507 #line 397 "src/parser.re"
3508 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3509 #line 3510 "src/parser.c"
3512 yych
= *(mrk
= ++cur
);
3577 case 0x7F: goto yy307
;
3578 case '\\': goto yy148
;
3582 #line 396 "src/parser.re"
3583 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3584 #line 3585 "src/parser.c"
3587 yych
= *(mrk
= ++cur
);
3590 case 'f': goto yy385
;
3595 yych
= *(mrk
= ++cur
);
3598 case 'r': goto yy387
;
3603 yych
= *(mrk
= ++cur
);
3606 case 'e': goto yy389
;
3611 yych
= *(mrk
= ++cur
);
3614 case 't': goto yy391
;
3619 yych
= *(mrk
= ++cur
);
3684 case 0x7F: goto yy313
;
3685 case '\\': goto yy148
;
3689 #line 424 "src/parser.re"
3690 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3691 #line 3692 "src/parser.c"
3694 yych
= *(mrk
= ++cur
);
3697 case 't': goto yy392
;
3702 yych
= *(mrk
= ++cur
);
3705 case 'f': goto yy393
;
3710 yych
= *(mrk
= ++cur
);
3713 case 'e': goto yy395
;
3718 yych
= *(mrk
= ++cur
);
3721 case 'u': goto yy396
;
3726 yych
= *(mrk
= ++cur
);
3729 case 'a': goto yy397
;
3734 yych
= *(mrk
= ++cur
);
3737 case 'd': goto yy398
;
3742 yych
= *(mrk
= ++cur
);
3807 case 0x7F: goto yy321
;
3808 case '\\': goto yy148
;
3812 #line 408 "src/parser.re"
3813 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3814 #line 3815 "src/parser.c"
3817 yych
= *(mrk
= ++cur
);
3820 case 'c': goto yy400
;
3825 yych
= *(mrk
= ++cur
);
3828 case 'a': goto yy401
;
3833 yych
= *(mrk
= ++cur
);
3836 case 'v': goto yy402
;
3841 yych
= *(mrk
= ++cur
);
3843 case '_': goto yy403
;
3848 yych
= *(mrk
= ++cur
);
3851 case 'a': goto yy404
;
3856 yych
= *(mrk
= ++cur
);
3859 case 'r': goto yy405
;
3864 yych
= *(mrk
= ++cur
);
3867 case 'i': goto yy406
;
3872 yych
= *(mrk
= ++cur
);
3875 case 'n': goto yy407
;
3880 yych
= *(mrk
= ++cur
);
3883 case 'e': goto yy408
;
3888 yych
= *(mrk
= ++cur
);
3891 case 'a': goto yy409
;
3896 yych
= *(mrk
= ++cur
);
3961 case 0x7F: goto yy333
;
3962 case '\\': goto yy148
;
3966 #line 425 "src/parser.re"
3967 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3968 #line 3969 "src/parser.c"
3971 yych
= *(mrk
= ++cur
);
3974 case 'r': goto yy410
;
3979 yych
= *(mrk
= ++cur
);
3982 case 'o': goto yy411
;
3987 yych
= *(mrk
= ++cur
);
3990 case 'l': goto yy412
;
3995 yych
= *(mrk
= ++cur
);
3998 case 'n': goto yy413
;
4003 yych
= *(mrk
= ++cur
);
4006 case 'b': goto yy414
;
4011 yych
= *(mrk
= ++cur
);
4014 case 't': goto yy415
;
4019 yych
= *(mrk
= ++cur
);
4084 case 0x7F: goto yy341
;
4085 case '\\': goto yy148
;
4089 #line 406 "src/parser.re"
4090 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4091 #line 4092 "src/parser.c"
4094 yych
= *(mrk
= ++cur
);
4097 case 'f': goto yy416
;
4102 yych
= *(mrk
= ++cur
);
4105 case 'i': goto yy418
;
4110 yych
= *(mrk
= ++cur
);
4175 case 0x7F: goto yy345
;
4176 case '\\': goto yy148
;
4180 #line 434 "src/parser.re"
4181 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4182 #line 4183 "src/parser.c"
4185 yych
= *(mrk
= ++cur
);
4187 case 'm': goto yy419
;
4192 yych
= *(mrk
= ++cur
);
4194 case 't': goto yy420
;
4199 yych
= *(mrk
= ++cur
);
4201 case 't': goto yy421
;
4206 yych
= *(mrk
= ++cur
);
4208 case 'l': goto yy422
;
4213 yych
= *(mrk
= ++cur
);
4215 case 's': goto yy423
;
4220 yych
= *(mrk
= ++cur
);
4285 case 0x7F: goto yy352
;
4287 case 'v': goto yy378
;
4288 case '\\': goto yy148
;
4292 #line 384 "src/parser.re"
4293 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4294 #line 4295 "src/parser.c"
4297 yych
= *(mrk
= ++cur
);
4362 case 0x7F: goto yy354
;
4363 case '\\': goto yy148
;
4367 #line 385 "src/parser.re"
4368 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4369 #line 4370 "src/parser.c"
4372 yych
= *(mrk
= ++cur
);
4374 case 't': goto yy424
;
4379 yych
= *(mrk
= ++cur
);
4381 case 'l': goto yy426
;
4386 yych
= *(mrk
= ++cur
);
4451 case 0x7F: goto yy358
;
4452 case '\\': goto yy148
;
4456 #line 381 "src/parser.re"
4457 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4458 #line 4459 "src/parser.c"
4461 yych
= *(mrk
= ++cur
);
4463 case 'T': goto yy391
;
4464 case 't': goto yy427
;
4469 yych
= *(mrk
= ++cur
);
4534 case 0x7F: goto yy361
;
4535 case '\\': goto yy148
;
4539 #line 377 "src/parser.re"
4540 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4541 #line 4542 "src/parser.c"
4544 yych
= *(mrk
= ++cur
);
4609 case 0x7F: goto yy363
;
4610 case '\\': goto yy148
;
4614 #line 388 "src/parser.re"
4615 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4616 #line 4617 "src/parser.c"
4619 yych
= *(mrk
= ++cur
);
4621 case 'm': goto yy429
;
4626 yych
= *(mrk
= ++cur
);
4628 case 't': goto yy430
;
4633 yych
= *(mrk
= ++cur
);
4635 case 'e': goto yy432
;
4640 yych
= *(mrk
= ++cur
);
4642 case 'o': goto yy433
;
4647 yych
= *(mrk
= ++cur
);
4649 case 'c': goto yy434
;
4654 yych
= *(mrk
= ++cur
);
4656 case 'd': goto yy435
;
4661 yych
= *(mrk
= ++cur
);
4663 case 'n': goto yy436
;
4668 yych
= *(mrk
= ++cur
);
4670 case 'g': goto yy438
;
4675 yych
= *(mrk
= ++cur
);
4740 case 0x7F: goto yy373
;
4741 case '\\': goto yy148
;
4745 #line 383 "src/parser.re"
4746 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4747 #line 4748 "src/parser.c"
4750 yych
= *(mrk
= ++cur
);
4752 case 't': goto yy439
;
4757 yych
= *(mrk
= ++cur
);
4822 case 0x7F: goto yy376
;
4823 case '\\': goto yy148
;
4827 #line 412 "src/parser.re"
4828 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4829 #line 4830 "src/parser.c"
4832 yych
= *(mrk
= ++cur
);
4835 case 'l': goto yy440
;
4840 yych
= *(mrk
= ++cur
);
4843 case 'a': goto yy442
;
4848 yych
= *(mrk
= ++cur
);
4851 case 'b': goto yy443
;
4856 yych
= *(mrk
= ++cur
);
4859 case 'a': goto yy444
;
4864 yych
= *(mrk
= ++cur
);
4867 case 'c': goto yy445
;
4872 yych
= *(mrk
= ++cur
);
4937 case 0x7F: goto yy383
;
4938 case '\\': goto yy148
;
4942 #line 435 "src/parser.re"
4943 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4944 #line 4945 "src/parser.c"
4947 yych
= *(mrk
= ++cur
);
4950 case 'e': goto yy447
;
4955 yych
= *(mrk
= ++cur
);
5020 case 0x7F: goto yy386
;
5021 case '\\': goto yy148
;
5025 #line 398 "src/parser.re"
5026 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5027 #line 5028 "src/parser.c"
5030 yych
= *(mrk
= ++cur
);
5095 case 0x7F: goto yy388
;
5096 case '\\': goto yy148
;
5100 #line 403 "src/parser.re"
5101 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5102 #line 5103 "src/parser.c"
5105 yych
= *(mrk
= ++cur
);
5170 case 0x7F: goto yy390
;
5171 case '\\': goto yy148
;
5175 #line 407 "src/parser.re"
5176 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5177 #line 5178 "src/parser.c"
5180 yych
= *(mrk
= ++cur
);
5183 case 'v': goto yy449
;
5188 yych
= *(mrk
= ++cur
);
5191 case 'i': goto yy450
;
5196 yych
= *(mrk
= ++cur
);
5261 case 0x7F: goto yy394
;
5262 case '\\': goto yy148
;
5266 #line 394 "src/parser.re"
5267 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5268 #line 5269 "src/parser.c"
5271 yych
= *(mrk
= ++cur
);
5274 case 'f': goto yy451
;
5279 yych
= *(mrk
= ++cur
);
5282 case 'd': goto yy453
;
5287 yych
= *(mrk
= ++cur
);
5290 case 'l': goto yy454
;
5295 yych
= *(mrk
= ++cur
);
5360 case 0x7F: goto yy399
;
5361 case '\\': goto yy148
;
5365 #line 409 "src/parser.re"
5366 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5367 #line 5368 "src/parser.c"
5370 yych
= *(mrk
= ++cur
);
5373 case 't': goto yy456
;
5378 yych
= *(mrk
= ++cur
);
5381 case 'l': goto yy458
;
5386 yych
= *(mrk
= ++cur
);
5389 case 'a': goto yy460
;
5394 yych
= *(mrk
= ++cur
);
5397 case 'a': goto yy461
;
5402 yych
= *(mrk
= ++cur
);
5405 case 's': goto yy462
;
5410 yych
= *(mrk
= ++cur
);
5413 case 'n': goto yy463
;
5418 yych
= *(mrk
= ++cur
);
5421 case 'c': goto yy465
;
5426 yych
= *(mrk
= ++cur
);
5429 case 'g': goto yy467
;
5434 yych
= *(mrk
= ++cur
);
5437 case 'n': goto yy469
;
5442 yych
= *(mrk
= ++cur
);
5445 case 'l': goto yy471
;
5450 yych
= *(mrk
= ++cur
);
5453 case 'r': goto yy473
;
5458 yych
= *(mrk
= ++cur
);
5461 case 'o': goto yy474
;
5466 yych
= *(mrk
= ++cur
);
5469 case 'o': goto yy475
;
5474 yych
= *(mrk
= ++cur
);
5477 case 't': goto yy476
;
5482 yych
= *(mrk
= ++cur
);
5485 case 'j': goto yy478
;
5490 yych
= *(mrk
= ++cur
);
5493 case 'r': goto yy479
;
5498 yych
= *(mrk
= ++cur
);
5563 case 0x7F: goto yy417
;
5564 case '\\': goto yy148
;
5568 #line 401 "src/parser.re"
5569 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5570 #line 5571 "src/parser.c"
5573 yych
= *(mrk
= ++cur
);
5576 case 'n': goto yy480
;
5581 yych
= *(mrk
= ++cur
);
5583 case '_': goto yy481
;
5588 yych
= *(mrk
= ++cur
);
5590 case 'r': goto yy482
;
5595 yych
= *(mrk
= ++cur
);
5597 case 'e': goto yy483
;
5602 yych
= *(mrk
= ++cur
);
5604 case 'i': goto yy484
;
5609 yych
= *(mrk
= ++cur
);
5611 case 't': goto yy485
;
5616 yych
= *(mrk
= ++cur
);
5681 case 0x7F: goto yy425
;
5682 case '\\': goto yy148
;
5686 #line 382 "src/parser.re"
5687 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5688 #line 5689 "src/parser.c"
5691 yych
= *(mrk
= ++cur
);
5693 case 'e': goto yy486
;
5698 yych
= *(mrk
= ++cur
);
5763 case 0x7F: goto yy428
;
5765 case 'v': goto yy449
;
5766 case '\\': goto yy148
;
5770 #line 389 "src/parser.re"
5771 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5772 #line 5773 "src/parser.c"
5775 yych
= *(mrk
= ++cur
);
5777 case 'a': goto yy488
;
5782 yych
= *(mrk
= ++cur
);
5847 case 0x7F: goto yy431
;
5848 case '\\': goto yy148
;
5852 #line 386 "src/parser.re"
5853 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5854 #line 5855 "src/parser.c"
5857 yych
= *(mrk
= ++cur
);
5859 case 'd': goto yy490
;
5864 yych
= *(mrk
= ++cur
);
5866 case 'f': goto yy492
;
5871 yych
= *(mrk
= ++cur
);
5873 case 't': goto yy494
;
5878 yych
= *(mrk
= ++cur
);
5880 case 'e': goto yy496
;
5885 yych
= *(mrk
= ++cur
);
5950 case 0x7F: goto yy437
;
5951 case '\\': goto yy148
;
5955 #line 380 "src/parser.re"
5956 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5957 #line 5958 "src/parser.c"
5960 yych
= *(mrk
= ++cur
);
5962 case 'n': goto yy497
;
5967 yych
= *(mrk
= ++cur
);
5969 case 'i': goto yy498
;
5974 yych
= *(mrk
= ++cur
);
6039 case 0x7F: goto yy441
;
6040 case '\\': goto yy148
;
6044 #line 432 "src/parser.re"
6045 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6046 #line 6047 "src/parser.c"
6049 yych
= *(mrk
= ++cur
);
6052 case 'l': goto yy499
;
6057 yych
= *(mrk
= ++cur
);
6060 case 'l': goto yy501
;
6065 yych
= *(mrk
= ++cur
);
6068 case 'c': goto yy502
;
6073 yych
= *(mrk
= ++cur
);
6138 case 0x7F: goto yy446
;
6139 case '\\': goto yy148
;
6143 #line 436 "src/parser.re"
6144 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6145 #line 6146 "src/parser.c"
6148 yych
= *(mrk
= ++cur
);
6213 case 0x7F: goto yy448
;
6215 case 'd': goto yy503
;
6216 case '\\': goto yy148
;
6220 #line 399 "src/parser.re"
6221 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6222 #line 6223 "src/parser.c"
6225 yych
= *(mrk
= ++cur
);
6228 case 'a': goto yy505
;
6233 yych
= *(mrk
= ++cur
);
6236 case 'o': goto yy506
;
6241 yych
= *(mrk
= ++cur
);
6306 case 0x7F: goto yy452
;
6307 case '\\': goto yy148
;
6311 #line 395 "src/parser.re"
6312 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6313 #line 6314 "src/parser.c"
6316 yych
= *(mrk
= ++cur
);
6319 case 'e': goto yy507
;
6324 yych
= *(mrk
= ++cur
);
6389 case 0x7F: goto yy455
;
6390 case '\\': goto yy148
;
6394 #line 429 "src/parser.re"
6395 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6396 #line 6397 "src/parser.c"
6399 yych
= *(mrk
= ++cur
);
6464 case 0x7F: goto yy457
;
6465 case '\\': goto yy148
;
6469 #line 413 "src/parser.re"
6470 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6471 #line 6472 "src/parser.c"
6474 yych
= *(mrk
= ++cur
);
6539 case 0x7F: goto yy459
;
6540 case '\\': goto yy148
;
6544 #line 433 "src/parser.re"
6545 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6546 #line 6547 "src/parser.c"
6549 yych
= *(mrk
= ++cur
);
6552 case 'l': goto yy509
;
6557 yych
= *(mrk
= ++cur
);
6560 case 's': goto yy511
;
6565 yych
= *(mrk
= ++cur
);
6568 case 's': goto yy512
;
6573 yych
= *(mrk
= ++cur
);
6638 case 0x7F: goto yy464
;
6639 case '\\': goto yy148
;
6643 #line 422 "src/parser.re"
6644 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6645 #line 6646 "src/parser.c"
6648 yych
= *(mrk
= ++cur
);
6713 case 0x7F: goto yy466
;
6714 case '\\': goto yy148
;
6718 #line 415 "src/parser.re"
6719 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6720 #line 6721 "src/parser.c"
6723 yych
= *(mrk
= ++cur
);
6788 case 0x7F: goto yy468
;
6789 case '\\': goto yy148
;
6793 #line 411 "src/parser.re"
6794 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6795 #line 6796 "src/parser.c"
6798 yych
= *(mrk
= ++cur
);
6863 case 0x7F: goto yy470
;
6864 case '\\': goto yy148
;
6868 #line 426 "src/parser.re"
6869 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6870 #line 6871 "src/parser.c"
6873 yych
= *(mrk
= ++cur
);
6938 case 0x7F: goto yy472
;
6939 case '\\': goto yy148
;
6943 #line 427 "src/parser.re"
6944 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6945 #line 6946 "src/parser.c"
6948 yych
= *(mrk
= ++cur
);
6951 case 'a': goto yy513
;
6956 yych
= *(mrk
= ++cur
);
6959 case 'l': goto yy514
;
6964 yych
= *(mrk
= ++cur
);
6967 case 'a': goto yy516
;
6972 yych
= *(mrk
= ++cur
);
7037 case 0x7F: goto yy477
;
7038 case '\\': goto yy148
;
7042 #line 440 "src/parser.re"
7043 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7044 #line 7045 "src/parser.c"
7047 yych
= *(mrk
= ++cur
);
7050 case 'e': goto yy517
;
7055 yych
= *(mrk
= ++cur
);
7058 case 'i': goto yy518
;
7063 yych
= *(mrk
= ++cur
);
7066 case 'g': goto yy519
;
7071 yych
= *(mrk
= ++cur
);
7073 case '_': goto yy521
;
7078 yych
= *(mrk
= ++cur
);
7080 case 'i': goto yy523
;
7085 yych
= *(mrk
= ++cur
);
7087 case 'n': goto yy524
;
7092 yych
= *(mrk
= ++cur
);
7094 case 'n': goto yy525
;
7099 yych
= *(mrk
= ++cur
);
7101 case 'r': goto yy526
;
7106 yych
= *(mrk
= ++cur
);
7171 case 0x7F: goto yy487
;
7172 case '\\': goto yy148
;
7176 #line 390 "src/parser.re"
7177 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7178 #line 7179 "src/parser.c"
7181 yych
= *(mrk
= ++cur
);
7246 case 0x7F: goto yy489
;
7247 case '\\': goto yy148
;
7248 default: goto yy527
;
7251 #line 369 "src/parser.re"
7252 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7253 #line 7254 "src/parser.c"
7256 yych
= *(mrk
= ++cur
);
7321 case 0x7F: goto yy491
;
7322 case '\\': goto yy148
;
7326 #line 392 "src/parser.re"
7327 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7328 #line 7329 "src/parser.c"
7331 yych
= *(mrk
= ++cur
);
7396 case 0x7F: goto yy493
;
7397 case '\\': goto yy148
;
7401 #line 376 "src/parser.re"
7402 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7403 #line 7404 "src/parser.c"
7406 yych
= *(mrk
= ++cur
);
7471 case 0x7F: goto yy495
;
7472 case '\\': goto yy148
;
7476 #line 379 "src/parser.re"
7477 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7478 #line 7479 "src/parser.c"
7481 yych
= *(mrk
= ++cur
);
7483 case 'f': goto yy529
;
7488 yych
= *(mrk
= ++cur
);
7490 case 'e': goto yy531
;
7495 yych
= *(mrk
= ++cur
);
7497 case 'l': goto yy532
;
7502 yych
= *(mrk
= ++cur
);
7567 case 0x7F: goto yy500
;
7568 case '\\': goto yy148
;
7572 #line 431 "src/parser.re"
7573 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7574 #line 7575 "src/parser.c"
7577 yych
= *(mrk
= ++cur
);
7580 case 'e': goto yy533
;
7585 yych
= *(mrk
= ++cur
);
7588 case 'k': goto yy535
;
7593 yych
= *(mrk
= ++cur
);
7658 case 0x7F: goto yy504
;
7659 case '\\': goto yy148
;
7663 #line 400 "src/parser.re"
7664 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7665 #line 7666 "src/parser.c"
7668 yych
= *(mrk
= ++cur
);
7671 case 'l': goto yy537
;
7676 yych
= *(mrk
= ++cur
);
7679 case 'n': goto yy539
;
7684 yych
= *(mrk
= ++cur
);
7749 case 0x7F: goto yy508
;
7750 case '\\': goto yy148
;
7751 case '_': goto yy541
;
7755 #line 404 "src/parser.re"
7756 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7757 #line 7758 "src/parser.c"
7760 yych
= *(mrk
= ++cur
);
7825 case 0x7F: goto yy510
;
7826 case '\\': goto yy148
;
7830 #line 428 "src/parser.re"
7831 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7832 #line 7833 "src/parser.c"
7835 yych
= *(mrk
= ++cur
);
7838 case 's': goto yy542
;
7843 yych
= *(mrk
= ++cur
);
7846 case 'e': goto yy543
;
7851 yych
= *(mrk
= ++cur
);
7854 case 'y': goto yy544
;
7859 yych
= *(mrk
= ++cur
);
7924 case 0x7F: goto yy515
;
7925 case '\\': goto yy148
;
7929 #line 442 "src/parser.re"
7930 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7931 #line 7932 "src/parser.c"
7934 yych
= *(mrk
= ++cur
);
7937 case 't': goto yy546
;
7942 yych
= *(mrk
= ++cur
);
7945 case 'c': goto yy548
;
7950 yych
= *(mrk
= ++cur
);
7953 case 'n': goto yy549
;
7958 yych
= *(mrk
= ++cur
);
8023 case 0x7F: goto yy520
;
8024 case '\\': goto yy148
;
8028 #line 402 "src/parser.re"
8029 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8030 #line 8031 "src/parser.c"
8033 yych
= *(mrk
= ++cur
);
8098 case 0x7F: goto yy522
;
8099 case '\\': goto yy148
;
8103 #line 374 "src/parser.re"
8104 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8105 #line 8106 "src/parser.c"
8108 yych
= *(mrk
= ++cur
);
8110 case 'b': goto yy550
;
8115 yych
= *(mrk
= ++cur
);
8117 case 's': goto yy551
;
8122 yych
= *(mrk
= ++cur
);
8124 case 'e': goto yy552
;
8129 yych
= *(mrk
= ++cur
);
8131 case 'i': goto yy554
;
8137 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8203 case 0x7F: goto yy55
;
8204 case '\\': goto yy148
;
8205 case 'o': goto yy555
;
8206 default: goto yy527
;
8210 yych
= *(mrk
= ++cur
);
8275 case 0x7F: goto yy530
;
8276 case '\\': goto yy148
;
8280 #line 378 "src/parser.re"
8281 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8282 #line 8283 "src/parser.c"
8285 yych
= *(mrk
= ++cur
);
8287 case 'd': goto yy557
;
8292 yych
= *(mrk
= ++cur
);
8294 case 'e': goto yy559
;
8299 yych
= *(mrk
= ++cur
);
8364 case 0x7F: goto yy534
;
8365 case '\\': goto yy148
;
8369 #line 410 "src/parser.re"
8370 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8371 #line 8372 "src/parser.c"
8374 yych
= *(mrk
= ++cur
);
8439 case 0x7F: goto yy536
;
8440 case '\\': goto yy148
;
8444 #line 414 "src/parser.re"
8445 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8446 #line 8447 "src/parser.c"
8449 yych
= *(mrk
= ++cur
);
8514 case 0x7F: goto yy538
;
8515 case '\\': goto yy148
;
8519 #line 430 "src/parser.re"
8520 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8521 #line 8522 "src/parser.c"
8524 yych
= *(mrk
= ++cur
);
8589 case 0x7F: goto yy540
;
8590 case '\\': goto yy148
;
8594 #line 416 "src/parser.re"
8595 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8596 #line 8597 "src/parser.c"
8599 yych
= *(mrk
= ++cur
);
8602 case 'n': goto yy561
;
8607 yych
= *(mrk
= ++cur
);
8610 case 'e': goto yy562
;
8615 yych
= *(mrk
= ++cur
);
8618 case 'r': goto yy563
;
8623 yych
= *(mrk
= ++cur
);
8688 case 0x7F: goto yy545
;
8689 case '\\': goto yy148
;
8693 #line 438 "src/parser.re"
8694 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8695 #line 8696 "src/parser.c"
8698 yych
= *(mrk
= ++cur
);
8763 case 0x7F: goto yy547
;
8764 case '\\': goto yy148
;
8768 #line 441 "src/parser.re"
8769 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8770 #line 8771 "src/parser.c"
8773 yych
= *(mrk
= ++cur
);
8776 case 't': goto yy564
;
8781 yych
= *(mrk
= ++cur
);
8784 case 'g': goto yy566
;
8789 yych
= *(mrk
= ++cur
);
8791 case 'u': goto yy568
;
8796 yych
= *(mrk
= ++cur
);
8798 case 'i': goto yy569
;
8803 yych
= *(mrk
= ++cur
);
8868 case 0x7F: goto yy553
;
8869 case '\\': goto yy148
;
8873 #line 371 "src/parser.re"
8874 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8875 #line 8876 "src/parser.c"
8878 yych
= *(mrk
= ++cur
);
8880 case 'c': goto yy570
;
8886 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8952 case 0x7F: goto yy55
;
8953 case '\\': goto yy148
;
8954 case 'n': goto yy571
;
8955 case 'o': goto yy555
;
8956 default: goto yy527
;
8960 yych
= *(mrk
= ++cur
);
9025 case 0x7F: goto yy558
;
9026 case '\\': goto yy148
;
9030 #line 391 "src/parser.re"
9031 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9032 #line 9033 "src/parser.c"
9035 yych
= *(mrk
= ++cur
);
9100 case 0x7F: goto yy560
;
9101 case '\\': goto yy148
;
9105 #line 375 "src/parser.re"
9106 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9107 #line 9108 "src/parser.c"
9110 yych
= *(mrk
= ++cur
);
9113 case 'e': goto yy572
;
9118 yych
= *(mrk
= ++cur
);
9121 case 'r': goto yy573
;
9126 yych
= *(mrk
= ++cur
);
9129 case 't': goto yy574
;
9134 yych
= *(mrk
= ++cur
);
9199 case 0x7F: goto yy565
;
9200 case '\\': goto yy148
;
9204 #line 437 "src/parser.re"
9205 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9206 #line 9207 "src/parser.c"
9209 yych
= *(mrk
= ++cur
);
9274 case 0x7F: goto yy567
;
9275 case '\\': goto yy148
;
9279 #line 439 "src/parser.re"
9280 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9281 #line 9282 "src/parser.c"
9284 yych
= *(mrk
= ++cur
);
9286 case 't': goto yy576
;
9291 yych
= *(mrk
= ++cur
);
9293 case 'o': goto yy577
;
9298 yych
= *(mrk
= ++cur
);
9300 case 't': goto yy578
;
9306 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9372 case 0x7F: goto yy55
;
9373 case '\\': goto yy148
;
9374 case 'c': goto yy580
;
9375 case 'o': goto yy555
;
9376 default: goto yy527
;
9380 yych
= *(mrk
= ++cur
);
9383 case 'x': goto yy581
;
9388 yych
= *(mrk
= ++cur
);
9391 case 't': goto yy582
;
9396 yych
= *(mrk
= ++cur
);
9461 case 0x7F: goto yy575
;
9462 case '\\': goto yy148
;
9466 #line 420 "src/parser.re"
9467 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9468 #line 9469 "src/parser.c"
9471 yych
= *(mrk
= ++cur
);
9473 case 'e': goto yy584
;
9478 yych
= *(mrk
= ++cur
);
9480 case 'n': goto yy585
;
9485 yych
= *(mrk
= ++cur
);
9550 case 0x7F: goto yy579
;
9551 case '\\': goto yy148
;
9555 #line 372 "src/parser.re"
9556 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9557 #line 9558 "src/parser.c"
9561 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9627 case 0x7F: goto yy55
;
9628 case '\\': goto yy148
;
9629 case 'e': goto yy586
;
9630 case 'o': goto yy555
;
9631 default: goto yy527
;
9635 yych
= *(mrk
= ++cur
);
9638 case 't': goto yy588
;
9643 yych
= *(mrk
= ++cur
);
9708 case 0x7F: goto yy583
;
9709 case '\\': goto yy148
;
9713 #line 421 "src/parser.re"
9714 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9715 #line 9716 "src/parser.c"
9718 yych
= *(mrk
= ++cur
);
9720 case '_': goto yy590
;
9725 yych
= *(mrk
= ++cur
);
9727 case '_': goto yy591
;
9733 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9799 case 0x7F: goto yy587
;
9800 case '\\': goto yy148
;
9801 case 'o': goto yy555
;
9802 default: goto yy527
;
9805 #line 370 "src/parser.re"
9806 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9807 #line 9808 "src/parser.c"
9810 yych
= *(mrk
= ++cur
);
9875 case 0x7F: goto yy589
;
9876 case '\\': goto yy148
;
9880 #line 405 "src/parser.re"
9881 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9882 #line 9883 "src/parser.c"
9885 yych
= *(mrk
= ++cur
);
9887 case '_': goto yy592
;
9892 yych
= *(mrk
= ++cur
);
9894 case '_': goto yy593
;
9899 yych
= *(mrk
= ++cur
);
9903 case ' ': goto yy595
;
9904 case '(': goto yy597
;
9909 yych
= *(mrk
= ++cur
);
9974 case 0x7F: goto yy594
;
9975 case '\\': goto yy148
;
9979 #line 373 "src/parser.re"
9980 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
9981 #line 9982 "src/parser.c"
9984 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9989 case ' ': goto yy595
;
9990 case '(': goto yy597
;
9991 default: goto yy114
;
9996 case '(': goto yy598
;
9997 default: goto yy114
;
10001 #line 447 "src/parser.re"
10002 { parens
= 2; goto cpp_attribute
; }
10003 #line 10004 "src/parser.c"
10005 #line 453 "src/parser.re"
10010 #line 10011 "src/parser.c"
10012 unsigned char yych
;
10013 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10017 case '\r': goto yy604
;
10018 case '\'': goto yy606
;
10019 case '\\': goto yy608
;
10020 default: goto yy602
;
10024 #line 471 "src/parser.re"
10025 { escaped
= false; goto character
; }
10026 #line 10027 "src/parser.c"
10029 #line 458 "src/parser.re"
10030 { NEWLINE(); goto character
; }
10031 #line 10032 "src/parser.c"
10034 #line 460 "src/parser.re"
10041 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10043 token
->flags
= char_width
;
10046 #line 10047 "src/parser.c"
10049 #line 459 "src/parser.re"
10050 { escaped
= !escaped
; goto character
; }
10051 #line 10052 "src/parser.c"
10053 #line 473 "src/parser.re"
10058 #line 10059 "src/parser.c"
10060 unsigned char yych
;
10061 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10065 case '\r': goto yy614
;
10066 case '"': goto yy616
;
10067 case '\\': goto yy618
;
10068 default: goto yy612
;
10072 #line 491 "src/parser.re"
10073 { escaped
= false; goto string
; }
10074 #line 10075 "src/parser.c"
10077 #line 478 "src/parser.re"
10078 { NEWLINE(); goto string
; }
10079 #line 10080 "src/parser.c"
10082 #line 480 "src/parser.re"
10089 NEWTOKEN(PSI_T_QUOTED_STRING
);
10091 token
->flags
= char_width
;
10094 #line 10095 "src/parser.c"
10097 #line 479 "src/parser.re"
10098 { escaped
= !escaped
; goto string
; }
10099 #line 10100 "src/parser.c"
10101 #line 493 "src/parser.re"
10106 #line 10107 "src/parser.c"
10108 unsigned char yych
;
10109 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10113 case '\r': goto yy624
;
10114 case '*': goto yy626
;
10115 default: goto yy622
;
10120 #line 500 "src/parser.re"
10122 #line 10123 "src/parser.c"
10125 #line 498 "src/parser.re"
10126 { NEWLINE(); goto comment
; }
10127 #line 10128 "src/parser.c"
10131 case '/': goto yy627
;
10132 default: goto yy623
;
10136 #line 499 "src/parser.re"
10137 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10138 #line 10139 "src/parser.c"
10140 #line 502 "src/parser.re"
10145 #line 10146 "src/parser.c"
10147 unsigned char yych
;
10148 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10152 case '\r': goto yy633
;
10153 default: goto yy631
;
10157 #line 508 "src/parser.re"
10158 { goto comment_sl
; }
10159 #line 10160 "src/parser.c"
10162 #line 507 "src/parser.re"
10163 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10164 #line 10165 "src/parser.c"
10166 #line 510 "src/parser.re"
10172 #line 10173 "src/parser.c"
10174 unsigned char yych
;
10175 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10179 case '\r': goto yy639
;
10180 case '(': goto yy641
;
10181 case ')': goto yy643
;
10182 default: goto yy637
;
10186 #line 519 "src/parser.re"
10187 { goto cpp_attribute
; }
10188 #line 10189 "src/parser.c"
10191 #line 518 "src/parser.re"
10192 { NEWLINE(); goto cpp_attribute
; }
10193 #line 10194 "src/parser.c"
10196 #line 516 "src/parser.re"
10197 { ++parens
; goto cpp_attribute
; }
10198 #line 10199 "src/parser.c"
10201 #line 517 "src/parser.re"
10202 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10203 #line 10204 "src/parser.c"
10205 #line 521 "src/parser.re"
10209 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10210 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10211 psi_plist_free(tokens
);
10216 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);