1 /* Generated by re2c 1.0.2 on Fri Sep 8 10:30:56 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
);
282 #line 283 "src/parser.c"
285 unsigned int yyaccept
= 0;
286 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
331 case '\'': goto yy20
;
382 case '\\': goto yy77
;
400 case '}': goto yy100
;
401 case '~': goto yy102
;
407 #line 447 "src/parser.re"
408 { NEWTOKEN(-2); goto error
; }
409 #line 410 "src/parser.c"
412 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
421 #line 446 "src/parser.re"
422 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
423 #line 424 "src/parser.c"
426 #line 445 "src/parser.re"
427 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
428 #line 429 "src/parser.c"
432 case '=': goto yy104
;
436 #line 349 "src/parser.re"
437 { NEWTOKEN(PSI_T_NOT
); goto start
; }
438 #line 439 "src/parser.c"
441 #line 322 "src/parser.re"
442 { escaped
= false; tok
+= 1; goto string
; }
443 #line 444 "src/parser.c"
447 case '#': goto yy106
;
451 #line 332 "src/parser.re"
452 { NEWTOKEN(PSI_T_HASH
); goto start
; }
453 #line 454 "src/parser.c"
526 #line 350 "src/parser.re"
527 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
528 #line 529 "src/parser.c"
532 case '&': goto yy111
;
536 #line 351 "src/parser.re"
537 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
538 #line 539 "src/parser.c"
541 #line 321 "src/parser.re"
542 { escaped
= false; tok
+= 1; goto character
; }
543 #line 544 "src/parser.c"
546 #line 333 "src/parser.re"
547 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
548 #line 549 "src/parser.c"
551 #line 334 "src/parser.re"
552 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
553 #line 554 "src/parser.c"
556 #line 347 "src/parser.re"
557 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
558 #line 559 "src/parser.c"
561 yych
= *(mrk
= ++cur
);
563 case '.': goto yy113
;
577 #line 352 "src/parser.re"
578 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
579 #line 580 "src/parser.c"
582 #line 336 "src/parser.re"
583 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
584 #line 585 "src/parser.c"
587 yych
= *(mrk
= ++cur
);
589 case '.': goto yy113
;
603 #line 353 "src/parser.re"
604 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
605 #line 606 "src/parser.c"
608 yych
= *(mrk
= ++cur
);
610 case '.': goto yy115
;
620 case '9': goto yy116
;
624 #line 364 "src/parser.re"
625 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
626 #line 627 "src/parser.c"
630 case '*': goto yy119
;
631 case '/': goto yy121
;
635 #line 354 "src/parser.re"
636 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
637 #line 638 "src/parser.c"
640 yych
= *(mrk
= ++cur
);
642 case '.': goto yy123
;
644 case 'e': goto yy127
;
646 case 'x': goto yy132
;
650 #line 308 "src/parser.re"
651 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
652 #line 653 "src/parser.c"
656 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
659 case '.': goto yy123
;
671 case 'e': goto yy127
;
673 case 'l': goto yy128
;
675 case 'u': goto yy130
;
680 #line 337 "src/parser.re"
681 { NEWTOKEN(PSI_T_COLON
); goto start
; }
682 #line 683 "src/parser.c"
685 #line 335 "src/parser.re"
686 { NEWTOKEN(PSI_T_EOS
); goto start
; }
687 #line 688 "src/parser.c"
690 yych
= *(mrk
= ++cur
);
757 case 'z': goto yy133
;
758 case '<': goto yy135
;
759 case '=': goto yy137
;
763 #line 362 "src/parser.re"
764 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
765 #line 766 "src/parser.c"
769 case '=': goto yy139
;
773 #line 346 "src/parser.re"
774 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
775 #line 776 "src/parser.c"
779 case '=': goto yy141
;
780 case '>': goto yy143
;
784 #line 363 "src/parser.re"
785 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
786 #line 787 "src/parser.c"
789 #line 366 "src/parser.re"
790 { NEWTOKEN(PSI_T_IIF
); goto start
; }
791 #line 792 "src/parser.c"
794 yych
= *(mrk
= ++cur
);
797 case 'r': goto yy145
;
801 #line 440 "src/parser.re"
802 { NEWTOKEN(PSI_T_NAME
); goto start
; }
803 #line 804 "src/parser.c"
806 yych
= *(mrk
= ++cur
);
809 case 'o': goto yy147
;
814 yych
= *(mrk
= ++cur
);
817 case 'a': goto yy148
;
819 case 'o': goto yy149
;
824 yych
= *(mrk
= ++cur
);
827 case 'e': goto yy150
;
832 yych
= *(mrk
= ++cur
);
835 case 'l': goto yy151
;
837 case 'n': goto yy152
;
839 case 'r': goto yy153
;
844 yych
= *(mrk
= ++cur
);
847 case 'a': goto yy154
;
849 case 'l': goto yy155
;
851 case 'r': goto yy156
;
853 case 'u': goto yy157
;
859 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
926 case 0x7F: goto yy55
;
927 case '\\': goto yy146
;
932 yych
= *(mrk
= ++cur
);
935 case 'f': goto yy158
;
937 case 'n': goto yy160
;
942 yych
= *(mrk
= ++cur
);
945 case '\'': goto yy161
;
947 case 'e': goto yy163
;
949 case 'i': goto yy164
;
954 yych
= *(mrk
= ++cur
);
957 case 'i': goto yy165
;
962 yych
= *(mrk
= ++cur
);
965 case 'u': goto yy166
;
970 yych
= *(mrk
= ++cur
);
973 case 'b': goto yy167
;
978 yych
= *(mrk
= ++cur
);
981 case 'a': goto yy168
;
983 case 'o': goto yy169
;
985 case 'r': goto yy170
;
990 yych
= *(mrk
= ++cur
);
993 case 'e': goto yy171
;
998 yych
= *(mrk
= ++cur
);
1001 case 'e': goto yy172
;
1003 case 't': goto yy173
;
1008 yych
= *(mrk
= ++cur
);
1011 case 'e': goto yy174
;
1013 case 'o': goto yy175
;
1015 case 'r': goto yy176
;
1020 yych
= *(mrk
= ++cur
);
1023 case '\'': goto yy177
;
1025 case 'n': goto yy179
;
1030 yych
= *(mrk
= ++cur
);
1033 case 'a': goto yy180
;
1038 yych
= *(mrk
= ++cur
);
1041 case 'v': goto yy181
;
1046 #line 340 "src/parser.re"
1047 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1048 #line 1049 "src/parser.c"
1126 case 0x7F: goto yy78
;
1127 default: goto yy182
;
1130 #line 355 "src/parser.re"
1131 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1132 #line 1133 "src/parser.c"
1135 #line 341 "src/parser.re"
1136 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1137 #line 1138 "src/parser.c"
1140 #line 357 "src/parser.re"
1141 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1142 #line 1143 "src/parser.c"
1145 yych
= *(mrk
= ++cur
);
1147 case '_': goto yy185
;
1152 yych
= *(mrk
= ++cur
);
1154 case 'O': goto yy147
;
1155 case 'o': goto yy186
;
1160 yych
= *(mrk
= ++cur
);
1163 case 'a': goto yy148
;
1164 case 'O': goto yy149
;
1165 case 'h': goto yy187
;
1166 case 'o': goto yy188
;
1171 yych
= *(mrk
= ++cur
);
1174 case 'e': goto yy150
;
1175 case 'o': goto yy189
;
1180 yych
= *(mrk
= ++cur
);
1183 case 'l': goto yy151
;
1184 case 'N': goto yy152
;
1186 case 'r': goto yy153
;
1187 case 'n': goto yy190
;
1192 yych
= *(mrk
= ++cur
);
1195 case 'a': goto yy154
;
1196 case 'L': goto yy155
;
1198 case 'r': goto yy156
;
1200 case 'u': goto yy157
;
1201 case 'l': goto yy191
;
1206 yych
= *(mrk
= ++cur
);
1209 case 'f': goto yy158
;
1210 case 'N': goto yy160
;
1211 case 'n': goto yy192
;
1216 yych
= *(mrk
= ++cur
);
1219 case 'e': goto yy163
;
1220 case 'I': goto yy164
;
1221 case 'i': goto yy193
;
1222 case 'o': goto yy194
;
1227 yych
= *(mrk
= ++cur
);
1230 case 'a': goto yy168
;
1232 case 'o': goto yy169
;
1233 case 'R': goto yy170
;
1234 case 'r': goto yy195
;
1239 yych
= *(mrk
= ++cur
);
1242 case 'e': goto yy172
;
1243 case 'T': goto yy173
;
1244 case 'h': goto yy196
;
1245 case 'i': goto yy197
;
1246 case 't': goto yy198
;
1251 yych
= *(mrk
= ++cur
);
1254 case 'e': goto yy174
;
1256 case 'o': goto yy175
;
1258 case 'r': goto yy176
;
1259 case 'y': goto yy199
;
1264 yych
= *(mrk
= ++cur
);
1267 case '\'': goto yy200
;
1268 case '8': goto yy202
;
1269 case 'N': goto yy179
;
1270 case 'n': goto yy203
;
1275 yych
= *(mrk
= ++cur
);
1277 case 'o': goto yy204
;
1282 #line 338 "src/parser.re"
1283 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1284 #line 1285 "src/parser.c"
1288 case '|': goto yy205
;
1292 #line 356 "src/parser.re"
1293 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1294 #line 1295 "src/parser.c"
1297 #line 339 "src/parser.re"
1298 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1299 #line 1300 "src/parser.c"
1302 #line 348 "src/parser.re"
1303 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1304 #line 1305 "src/parser.c"
1307 #line 342 "src/parser.re"
1308 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1309 #line 1310 "src/parser.c"
1312 #line 331 "src/parser.re"
1313 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1314 #line 1315 "src/parser.c"
1317 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1384 case 0x7F: goto yy110
;
1385 default: goto yy108
;
1388 #line 442 "src/parser.re"
1389 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1390 #line 1391 "src/parser.c"
1393 #line 344 "src/parser.re"
1394 { NEWTOKEN(PSI_T_AND
); goto start
; }
1395 #line 1396 "src/parser.c"
1408 case '9': goto yy116
;
1409 default: goto yy114
;
1424 case 10: goto yy240
;
1425 case 11: goto yy242
;
1426 case 12: goto yy251
;
1427 case 13: goto yy271
;
1428 case 14: goto yy303
;
1429 case 15: goto yy305
;
1430 case 16: goto yy311
;
1431 case 17: goto yy319
;
1432 case 18: goto yy331
;
1433 case 19: goto yy339
;
1434 case 20: goto yy343
;
1435 case 21: goto yy350
;
1436 case 22: goto yy352
;
1437 case 23: goto yy356
;
1438 case 24: goto yy359
;
1439 case 25: goto yy361
;
1440 case 26: goto yy371
;
1441 case 27: goto yy374
;
1442 case 28: goto yy381
;
1443 case 29: goto yy384
;
1444 case 30: goto yy386
;
1445 case 31: goto yy388
;
1446 case 32: goto yy392
;
1447 case 33: goto yy397
;
1448 case 34: goto yy415
;
1449 case 35: goto yy423
;
1450 case 36: goto yy426
;
1451 case 37: goto yy429
;
1452 case 38: goto yy435
;
1453 case 39: goto yy439
;
1454 case 40: goto yy444
;
1455 case 41: goto yy446
;
1456 case 42: goto yy450
;
1457 case 43: goto yy453
;
1458 case 44: goto yy455
;
1459 case 45: goto yy457
;
1460 case 46: goto yy462
;
1461 case 47: goto yy464
;
1462 case 48: goto yy466
;
1463 case 49: goto yy468
;
1464 case 50: goto yy470
;
1465 case 51: goto yy475
;
1466 case 52: goto yy485
;
1467 case 53: goto yy487
;
1468 case 54: goto yy489
;
1469 case 55: goto yy491
;
1470 case 56: goto yy493
;
1471 case 57: goto yy498
;
1472 case 58: goto yy502
;
1473 case 59: goto yy506
;
1474 case 60: goto yy508
;
1475 case 61: goto yy513
;
1476 case 62: goto yy518
;
1477 case 63: goto yy520
;
1478 case 64: goto yy528
;
1479 case 65: goto yy532
;
1480 case 66: goto yy534
;
1481 case 67: goto yy536
;
1482 case 68: goto yy538
;
1483 case 69: goto yy543
;
1484 case 70: goto yy545
;
1485 case 71: goto yy551
;
1486 case 72: goto yy556
;
1487 case 73: goto yy558
;
1488 case 74: goto yy563
;
1489 case 75: goto yy565
;
1490 case 76: goto yy573
;
1491 case 77: goto yy577
;
1492 case 78: goto yy581
;
1493 case 79: goto yy585
;
1494 case 80: goto yy587
;
1495 default: goto yy592
;
1500 case '.': goto yy207
;
1501 default: goto yy114
;
1506 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1518 case '9': goto yy116
;
1520 case 'd': goto yy209
;
1522 case 'f': goto yy210
;
1524 case 'l': goto yy212
;
1525 default: goto yy118
;
1528 #line 314 "src/parser.re"
1529 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1530 #line 1531 "src/parser.c"
1533 #line 328 "src/parser.re"
1535 #line 1536 "src/parser.c"
1538 #line 329 "src/parser.re"
1539 { goto comment_sl
; }
1540 #line 1541 "src/parser.c"
1544 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1556 case '9': goto yy123
;
1558 case 'd': goto yy209
;
1560 case 'e': goto yy127
;
1562 case 'f': goto yy210
;
1564 case 'l': goto yy212
;
1565 default: goto yy118
;
1569 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1580 case '7': goto yy125
;
1582 case 'l': goto yy128
;
1584 case 'u': goto yy130
;
1591 case '-': goto yy113
;
1601 case '9': goto yy116
;
1602 default: goto yy114
;
1606 yych
= *(mrk
= ++cur
);
1609 case 'l': goto yy214
;
1611 case 'u': goto yy215
;
1612 default: goto yy129
;
1616 #line 310 "src/parser.re"
1617 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1618 #line 1619 "src/parser.c"
1623 case 'l': goto yy217
;
1624 default: goto yy131
;
1628 #line 309 "src/parser.re"
1629 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1630 #line 1631 "src/parser.c"
1655 case 'f': goto yy218
;
1656 default: goto yy114
;
1660 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1728 case 'z': goto yy133
;
1729 case '>': goto yy220
;
1730 default: goto yy114
;
1734 #line 358 "src/parser.re"
1735 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1736 #line 1737 "src/parser.c"
1739 #line 360 "src/parser.re"
1740 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1741 #line 1742 "src/parser.c"
1744 #line 343 "src/parser.re"
1745 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1746 #line 1747 "src/parser.c"
1749 #line 361 "src/parser.re"
1750 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1751 #line 1752 "src/parser.c"
1754 #line 359 "src/parser.re"
1755 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1756 #line 1757 "src/parser.c"
1759 yych
= *(mrk
= ++cur
);
1762 case 'r': goto yy222
;
1767 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1844 case 0x7F: goto yy114
;
1845 default: goto yy182
;
1849 yych
= *(mrk
= ++cur
);
1852 case 'o': goto yy223
;
1857 yych
= *(mrk
= ++cur
);
1860 case 'l': goto yy224
;
1865 yych
= *(mrk
= ++cur
);
1868 case 'u': goto yy225
;
1873 yych
= *(mrk
= ++cur
);
1876 case 'f': goto yy226
;
1881 yych
= *(mrk
= ++cur
);
1884 case 'i': goto yy227
;
1886 case 's': goto yy228
;
1891 yych
= *(mrk
= ++cur
);
1894 case 'd': goto yy229
;
1899 yych
= *(mrk
= ++cur
);
1902 case 'r': goto yy230
;
1907 yych
= *(mrk
= ++cur
);
1910 case 'l': goto yy231
;
1915 yych
= *(mrk
= ++cur
);
1918 case 'o': goto yy232
;
1923 yych
= *(mrk
= ++cur
);
1926 case 'e': goto yy233
;
1931 yych
= *(mrk
= ++cur
);
1934 case 'n': goto yy234
;
1939 yych
= *(mrk
= ++cur
);
2004 case 0x7F: goto yy159
;
2006 case 'd': goto yy235
;
2008 case 'n': goto yy236
;
2009 case '\\': goto yy146
;
2013 #line 391 "src/parser.re"
2014 { NEWTOKEN(PSI_T_IF
); goto start
; }
2015 #line 2016 "src/parser.c"
2018 yych
= *(mrk
= ++cur
);
2021 case 'c': goto yy237
;
2023 case 't': goto yy238
;
2029 #line 326 "src/parser.re"
2030 { char_width
= SIZEOF_WCHAR_T
/8; }
2031 #line 2032 "src/parser.c"
2034 yych
= *(mrk
= ++cur
);
2037 case 't': goto yy239
;
2042 yych
= *(mrk
= ++cur
);
2045 case 'b': goto yy241
;
2050 yych
= *(mrk
= ++cur
);
2053 case 'x': goto yy243
;
2058 yych
= *(mrk
= ++cur
);
2061 case 'l': goto yy244
;
2066 yych
= *(mrk
= ++cur
);
2069 case 'j': goto yy245
;
2074 yych
= *(mrk
= ++cur
);
2077 case 't': goto yy246
;
2082 yych
= *(mrk
= ++cur
);
2085 case 's': goto yy247
;
2090 yych
= *(mrk
= ++cur
);
2093 case 'e': goto yy248
;
2098 yych
= *(mrk
= ++cur
);
2101 case 't': goto yy249
;
2106 yych
= *(mrk
= ++cur
);
2109 case 't': goto yy250
;
2114 yych
= *(mrk
= ++cur
);
2117 case 'a': goto yy252
;
2119 case 'r': goto yy253
;
2124 yych
= *(mrk
= ++cur
);
2127 case 'm': goto yy254
;
2132 yych
= *(mrk
= ++cur
);
2134 case '_': goto yy255
;
2139 yych
= *(mrk
= ++cur
);
2142 case 'u': goto yy256
;
2148 #line 325 "src/parser.re"
2150 #line 2151 "src/parser.c"
2153 yych
= *(mrk
= ++cur
);
2156 case 'd': goto yy257
;
2161 yych
= *(mrk
= ++cur
);
2164 case 'r': goto yy258
;
2169 yych
= *(mrk
= ++cur
);
2172 case 'a': goto yy259
;
2178 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2244 case 0x7F: goto yy184
;
2245 case '\\': goto yy146
;
2246 default: goto yy182
;
2249 #line 441 "src/parser.re"
2250 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2251 #line 2252 "src/parser.c"
2254 yych
= *(mrk
= ++cur
);
2256 case 'a': goto yy260
;
2257 case 'e': goto yy261
;
2258 case 'i': goto yy262
;
2259 case 'r': goto yy263
;
2264 yych
= *(mrk
= ++cur
);
2266 case 'O': goto yy223
;
2267 case 'o': goto yy264
;
2272 yych
= *(mrk
= ++cur
);
2274 case 'a': goto yy265
;
2279 yych
= *(mrk
= ++cur
);
2282 case 'u': goto yy225
;
2283 case 'n': goto yy266
;
2288 yych
= *(mrk
= ++cur
);
2290 case 'u': goto yy267
;
2295 yych
= *(mrk
= ++cur
);
2298 case 'd': goto yy229
;
2299 case 'u': goto yy268
;
2304 yych
= *(mrk
= ++cur
);
2306 case 'O': goto yy232
;
2307 case 'o': goto yy269
;
2312 yych
= *(mrk
= ++cur
);
2315 case 'c': goto yy237
;
2316 case 'T': goto yy238
;
2317 case 't': goto yy270
;
2322 yych
= *(mrk
= ++cur
);
2325 case 'b': goto yy241
;
2326 case 'n': goto yy272
;
2331 yych
= *(mrk
= ++cur
);
2333 case 'n': goto yy273
;
2338 yych
= *(mrk
= ++cur
);
2341 case 'e': goto yy248
;
2342 case 'a': goto yy274
;
2347 yych
= *(mrk
= ++cur
);
2349 case 'o': goto yy275
;
2354 yych
= *(mrk
= ++cur
);
2356 case 'g': goto yy276
;
2357 case 'z': goto yy277
;
2362 yych
= *(mrk
= ++cur
);
2365 case 'a': goto yy252
;
2366 case 'R': goto yy253
;
2367 case 'r': goto yy278
;
2372 yych
= *(mrk
= ++cur
);
2374 case 'p': goto yy279
;
2380 #line 324 "src/parser.re"
2382 #line 2383 "src/parser.c"
2385 yych
= *(mrk
= ++cur
);
2387 case '"': goto yy280
;
2392 yych
= *(mrk
= ++cur
);
2395 case 'd': goto yy257
;
2396 case 'i': goto yy282
;
2397 case 's': goto yy283
;
2402 yych
= *(mrk
= ++cur
);
2404 case 'i': goto yy284
;
2405 case 'l': goto yy285
;
2410 #line 345 "src/parser.re"
2411 { NEWTOKEN(PSI_T_OR
); goto start
; }
2412 #line 2413 "src/parser.c"
2415 #line 365 "src/parser.re"
2416 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2417 #line 2418 "src/parser.c"
2422 case 'd': goto yy286
;
2424 case 'f': goto yy288
;
2426 case 'l': goto yy290
;
2427 default: goto yy114
;
2432 #line 315 "src/parser.re"
2433 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2434 #line 2435 "src/parser.c"
2438 #line 316 "src/parser.re"
2439 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2440 #line 2441 "src/parser.c"
2445 case 'u': goto yy292
;
2446 default: goto yy114
;
2452 #line 311 "src/parser.re"
2453 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2454 #line 2455 "src/parser.c"
2459 case 'l': goto yy292
;
2460 default: goto yy216
;
2465 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2468 case '.': goto yy294
;
2490 case 'f': goto yy218
;
2492 case 'l': goto yy128
;
2494 case 'p': goto yy127
;
2496 case 'u': goto yy130
;
2501 #line 443 "src/parser.re"
2502 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2503 #line 2504 "src/parser.c"
2506 yych
= *(mrk
= ++cur
);
2509 case 'a': goto yy296
;
2511 case 'v': goto yy297
;
2516 yych
= *(mrk
= ++cur
);
2519 case 'l': goto yy298
;
2524 yych
= *(mrk
= ++cur
);
2527 case 'l': goto yy299
;
2532 yych
= *(mrk
= ++cur
);
2535 case 'n': goto yy300
;
2540 yych
= *(mrk
= ++cur
);
2543 case 'i': goto yy301
;
2548 yych
= *(mrk
= ++cur
);
2551 case 'f': goto yy302
;
2556 yych
= *(mrk
= ++cur
);
2559 case 'e': goto yy304
;
2564 yych
= *(mrk
= ++cur
);
2567 case 'i': goto yy306
;
2572 yych
= *(mrk
= ++cur
);
2575 case 'o': goto yy307
;
2580 yych
= *(mrk
= ++cur
);
2583 case 's': goto yy308
;
2588 yych
= *(mrk
= ++cur
);
2591 case 'a': goto yy309
;
2596 yych
= *(mrk
= ++cur
);
2599 case 'e': goto yy310
;
2604 yych
= *(mrk
= ++cur
);
2607 case 'c': goto yy312
;
2612 yych
= *(mrk
= ++cur
);
2615 case 'e': goto yy313
;
2620 yych
= *(mrk
= ++cur
);
2623 case 'd': goto yy314
;
2628 yych
= *(mrk
= ++cur
);
2631 case 'l': goto yy315
;
2636 yych
= *(mrk
= ++cur
);
2639 case 'v': goto yy316
;
2644 yych
= *(mrk
= ++cur
);
2709 case 0x7F: goto yy240
;
2710 case '\\': goto yy146
;
2714 #line 416 "src/parser.re"
2715 { NEWTOKEN(PSI_T_LET
); goto start
; }
2716 #line 2717 "src/parser.c"
2719 yych
= *(mrk
= ++cur
);
2784 case 0x7F: goto yy242
;
2785 case '\\': goto yy146
;
2789 #line 415 "src/parser.re"
2790 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2791 #line 2792 "src/parser.c"
2794 yych
= *(mrk
= ++cur
);
2797 case 'e': goto yy317
;
2802 yych
= *(mrk
= ++cur
);
2805 case 'l': goto yy318
;
2810 yych
= *(mrk
= ++cur
);
2813 case 'e': goto yy320
;
2815 case 'v': goto yy321
;
2820 yych
= *(mrk
= ++cur
);
2823 case 'h': goto yy322
;
2828 yych
= *(mrk
= ++cur
);
2831 case 't': goto yy323
;
2836 yych
= *(mrk
= ++cur
);
2838 case '_': goto yy324
;
2843 yych
= *(mrk
= ++cur
);
2846 case 'u': goto yy325
;
2851 yych
= *(mrk
= ++cur
);
2916 case 0x7F: goto yy251
;
2917 case '\\': goto yy146
;
2921 #line 417 "src/parser.re"
2922 { NEWTOKEN(PSI_T_SET
); goto start
; }
2923 #line 2924 "src/parser.c"
2926 yych
= *(mrk
= ++cur
);
2929 case 't': goto yy326
;
2934 yych
= *(mrk
= ++cur
);
2937 case 'i': goto yy327
;
2939 case 'l': goto yy328
;
2941 case 'v': goto yy329
;
2946 yych
= *(mrk
= ++cur
);
2949 case 'p': goto yy330
;
2954 yych
= *(mrk
= ++cur
);
2957 case 'a': goto yy332
;
2959 case 'b': goto yy333
;
2961 case 'f': goto yy334
;
2963 case 'i': goto yy335
;
2965 case 'o': goto yy336
;
2967 case 's': goto yy337
;
2972 yych
= *(mrk
= ++cur
);
2975 case 'e': goto yy338
;
2980 yych
= *(mrk
= ++cur
);
2983 case 'e': goto yy340
;
2988 yych
= *(mrk
= ++cur
);
2991 case 'n': goto yy341
;
2996 yych
= *(mrk
= ++cur
);
2999 case 'l': goto yy342
;
3004 yych
= *(mrk
= ++cur
);
3006 case 's': goto yy344
;
3007 case 't': goto yy345
;
3012 yych
= *(mrk
= ++cur
);
3014 case 'x': goto yy346
;
3019 yych
= *(mrk
= ++cur
);
3021 case 'n': goto yy347
;
3026 yych
= *(mrk
= ++cur
);
3028 case 'e': goto yy348
;
3033 yych
= *(mrk
= ++cur
);
3035 case 'L': goto yy298
;
3036 case 'l': goto yy349
;
3041 yych
= *(mrk
= ++cur
);
3043 case 'r': goto yy351
;
3048 yych
= *(mrk
= ++cur
);
3050 case 's': goto yy353
;
3055 yych
= *(mrk
= ++cur
);
3057 case 'b': goto yy354
;
3062 yych
= *(mrk
= ++cur
);
3064 case 'm': goto yy355
;
3069 yych
= *(mrk
= ++cur
);
3071 case 'A': goto yy309
;
3072 case 'a': goto yy357
;
3077 yych
= *(mrk
= ++cur
);
3142 case 0x7F: goto yy271
;
3144 case 'v': goto yy316
;
3145 case '\\': goto yy146
;
3149 #line 385 "src/parser.re"
3150 { NEWTOKEN(PSI_T_INT
); goto start
; }
3151 #line 3152 "src/parser.c"
3154 yych
= *(mrk
= ++cur
);
3156 case 'e': goto yy358
;
3161 yych
= *(mrk
= ++cur
);
3163 case 'g': goto yy360
;
3168 yych
= *(mrk
= ++cur
);
3170 case 'g': goto yy362
;
3175 yych
= *(mrk
= ++cur
);
3177 case 'r': goto yy363
;
3182 yych
= *(mrk
= ++cur
);
3184 case 'n': goto yy364
;
3189 yych
= *(mrk
= ++cur
);
3191 case 'e': goto yy365
;
3196 yych
= *(mrk
= ++cur
);
3199 case 'i': goto yy327
;
3201 case 'l': goto yy328
;
3203 case 'v': goto yy329
;
3204 case 'u': goto yy366
;
3209 yych
= *(mrk
= ++cur
);
3211 case 'e': goto yy367
;
3217 #line 323 "src/parser.re"
3219 #line 3220 "src/parser.c"
3222 yych
= *(mrk
= ++cur
);
3224 case 'o': goto yy368
;
3229 yych
= *(mrk
= ++cur
);
3231 case 'i': goto yy369
;
3236 yych
= *(mrk
= ++cur
);
3238 case 'd': goto yy370
;
3243 yych
= *(mrk
= ++cur
);
3245 case 'a': goto yy372
;
3251 #line 318 "src/parser.re"
3252 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3253 #line 3254 "src/parser.c"
3257 #line 317 "src/parser.re"
3258 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3259 #line 3260 "src/parser.c"
3263 #line 319 "src/parser.re"
3264 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3265 #line 3266 "src/parser.c"
3269 #line 312 "src/parser.re"
3270 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3271 #line 3272 "src/parser.c"
3274 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3298 case 'f': goto yy294
;
3300 case 'p': goto yy127
;
3301 default: goto yy114
;
3305 yych
= *(mrk
= ++cur
);
3308 case 'y': goto yy373
;
3313 yych
= *(mrk
= ++cur
);
3316 case 'a': goto yy375
;
3321 yych
= *(mrk
= ++cur
);
3324 case 'v': goto yy376
;
3329 yych
= *(mrk
= ++cur
);
3332 case 'a': goto yy377
;
3334 case 'b': goto yy378
;
3336 case 'o': goto yy379
;
3341 yych
= *(mrk
= ++cur
);
3344 case 't': goto yy380
;
3349 yych
= *(mrk
= ++cur
);
3352 case 'n': goto yy382
;
3357 yych
= *(mrk
= ++cur
);
3422 case 0x7F: goto yy303
;
3423 case '\\': goto yy146
;
3427 #line 395 "src/parser.re"
3428 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3429 #line 3430 "src/parser.c"
3432 yych
= *(mrk
= ++cur
);
3497 case 0x7F: goto yy305
;
3498 case '\\': goto yy146
;
3502 #line 394 "src/parser.re"
3503 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3504 #line 3505 "src/parser.c"
3507 yych
= *(mrk
= ++cur
);
3510 case 'f': goto yy383
;
3515 yych
= *(mrk
= ++cur
);
3518 case 'r': goto yy385
;
3523 yych
= *(mrk
= ++cur
);
3526 case 'e': goto yy387
;
3531 yych
= *(mrk
= ++cur
);
3534 case 't': goto yy389
;
3539 yych
= *(mrk
= ++cur
);
3604 case 0x7F: goto yy311
;
3605 case '\\': goto yy146
;
3609 #line 421 "src/parser.re"
3610 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3611 #line 3612 "src/parser.c"
3614 yych
= *(mrk
= ++cur
);
3617 case 't': goto yy390
;
3622 yych
= *(mrk
= ++cur
);
3625 case 'f': goto yy391
;
3630 yych
= *(mrk
= ++cur
);
3633 case 'e': goto yy393
;
3638 yych
= *(mrk
= ++cur
);
3641 case 'u': goto yy394
;
3646 yych
= *(mrk
= ++cur
);
3649 case 'a': goto yy395
;
3654 yych
= *(mrk
= ++cur
);
3657 case 'd': goto yy396
;
3662 yych
= *(mrk
= ++cur
);
3727 case 0x7F: goto yy319
;
3728 case '\\': goto yy146
;
3732 #line 406 "src/parser.re"
3733 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3734 #line 3735 "src/parser.c"
3737 yych
= *(mrk
= ++cur
);
3740 case 'c': goto yy398
;
3745 yych
= *(mrk
= ++cur
);
3748 case 'a': goto yy399
;
3753 yych
= *(mrk
= ++cur
);
3756 case 'v': goto yy400
;
3761 yych
= *(mrk
= ++cur
);
3763 case '_': goto yy401
;
3768 yych
= *(mrk
= ++cur
);
3771 case 'a': goto yy402
;
3776 yych
= *(mrk
= ++cur
);
3779 case 'r': goto yy403
;
3784 yych
= *(mrk
= ++cur
);
3787 case 'i': goto yy404
;
3792 yych
= *(mrk
= ++cur
);
3795 case 'n': goto yy405
;
3800 yych
= *(mrk
= ++cur
);
3803 case 'e': goto yy406
;
3808 yych
= *(mrk
= ++cur
);
3811 case 'a': goto yy407
;
3816 yych
= *(mrk
= ++cur
);
3881 case 0x7F: goto yy331
;
3882 case '\\': goto yy146
;
3886 #line 422 "src/parser.re"
3887 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3888 #line 3889 "src/parser.c"
3891 yych
= *(mrk
= ++cur
);
3894 case 'r': goto yy408
;
3899 yych
= *(mrk
= ++cur
);
3902 case 'o': goto yy409
;
3907 yych
= *(mrk
= ++cur
);
3910 case 'l': goto yy410
;
3915 yych
= *(mrk
= ++cur
);
3918 case 'n': goto yy411
;
3923 yych
= *(mrk
= ++cur
);
3926 case 'b': goto yy412
;
3931 yych
= *(mrk
= ++cur
);
3934 case 't': goto yy413
;
3939 yych
= *(mrk
= ++cur
);
4004 case 0x7F: goto yy339
;
4005 case '\\': goto yy146
;
4009 #line 404 "src/parser.re"
4010 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4011 #line 4012 "src/parser.c"
4014 yych
= *(mrk
= ++cur
);
4017 case 'f': goto yy414
;
4022 yych
= *(mrk
= ++cur
);
4025 case 'i': goto yy416
;
4030 yych
= *(mrk
= ++cur
);
4095 case 0x7F: goto yy343
;
4096 case '\\': goto yy146
;
4100 #line 431 "src/parser.re"
4101 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4102 #line 4103 "src/parser.c"
4105 yych
= *(mrk
= ++cur
);
4107 case 'm': goto yy417
;
4112 yych
= *(mrk
= ++cur
);
4114 case 't': goto yy418
;
4119 yych
= *(mrk
= ++cur
);
4121 case 't': goto yy419
;
4126 yych
= *(mrk
= ++cur
);
4128 case 'l': goto yy420
;
4133 yych
= *(mrk
= ++cur
);
4135 case 's': goto yy421
;
4140 yych
= *(mrk
= ++cur
);
4205 case 0x7F: goto yy350
;
4207 case 'v': goto yy376
;
4208 case '\\': goto yy146
;
4212 #line 382 "src/parser.re"
4213 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4214 #line 4215 "src/parser.c"
4217 yych
= *(mrk
= ++cur
);
4282 case 0x7F: goto yy352
;
4283 case '\\': goto yy146
;
4287 #line 383 "src/parser.re"
4288 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4289 #line 4290 "src/parser.c"
4292 yych
= *(mrk
= ++cur
);
4294 case 't': goto yy422
;
4299 yych
= *(mrk
= ++cur
);
4301 case 'l': goto yy424
;
4306 yych
= *(mrk
= ++cur
);
4371 case 0x7F: goto yy356
;
4372 case '\\': goto yy146
;
4376 #line 379 "src/parser.re"
4377 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4378 #line 4379 "src/parser.c"
4381 yych
= *(mrk
= ++cur
);
4383 case 'T': goto yy389
;
4384 case 't': goto yy425
;
4389 yych
= *(mrk
= ++cur
);
4454 case 0x7F: goto yy359
;
4455 case '\\': goto yy146
;
4459 #line 375 "src/parser.re"
4460 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4461 #line 4462 "src/parser.c"
4464 yych
= *(mrk
= ++cur
);
4529 case 0x7F: goto yy361
;
4530 case '\\': goto yy146
;
4534 #line 386 "src/parser.re"
4535 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4536 #line 4537 "src/parser.c"
4539 yych
= *(mrk
= ++cur
);
4541 case 'm': goto yy427
;
4546 yych
= *(mrk
= ++cur
);
4548 case 't': goto yy428
;
4553 yych
= *(mrk
= ++cur
);
4555 case 'e': goto yy430
;
4560 yych
= *(mrk
= ++cur
);
4562 case 'o': goto yy431
;
4567 yych
= *(mrk
= ++cur
);
4569 case 'c': goto yy432
;
4574 yych
= *(mrk
= ++cur
);
4576 case 'd': goto yy433
;
4581 yych
= *(mrk
= ++cur
);
4583 case 'n': goto yy434
;
4588 yych
= *(mrk
= ++cur
);
4590 case 'g': goto yy436
;
4595 yych
= *(mrk
= ++cur
);
4660 case 0x7F: goto yy371
;
4661 case '\\': goto yy146
;
4665 #line 381 "src/parser.re"
4666 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4667 #line 4668 "src/parser.c"
4670 yych
= *(mrk
= ++cur
);
4672 case 't': goto yy437
;
4677 yych
= *(mrk
= ++cur
);
4742 case 0x7F: goto yy374
;
4743 case '\\': goto yy146
;
4747 #line 410 "src/parser.re"
4748 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4749 #line 4750 "src/parser.c"
4752 yych
= *(mrk
= ++cur
);
4755 case 'l': goto yy438
;
4760 yych
= *(mrk
= ++cur
);
4763 case 'a': goto yy440
;
4768 yych
= *(mrk
= ++cur
);
4771 case 'b': goto yy441
;
4776 yych
= *(mrk
= ++cur
);
4779 case 'a': goto yy442
;
4784 yych
= *(mrk
= ++cur
);
4787 case 'c': goto yy443
;
4792 yych
= *(mrk
= ++cur
);
4857 case 0x7F: goto yy381
;
4858 case '\\': goto yy146
;
4862 #line 432 "src/parser.re"
4863 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4864 #line 4865 "src/parser.c"
4867 yych
= *(mrk
= ++cur
);
4870 case 'e': goto yy445
;
4875 yych
= *(mrk
= ++cur
);
4940 case 0x7F: goto yy384
;
4941 case '\\': goto yy146
;
4945 #line 396 "src/parser.re"
4946 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4947 #line 4948 "src/parser.c"
4950 yych
= *(mrk
= ++cur
);
5015 case 0x7F: goto yy386
;
5016 case '\\': goto yy146
;
5020 #line 401 "src/parser.re"
5021 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5022 #line 5023 "src/parser.c"
5025 yych
= *(mrk
= ++cur
);
5090 case 0x7F: goto yy388
;
5091 case '\\': goto yy146
;
5095 #line 405 "src/parser.re"
5096 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5097 #line 5098 "src/parser.c"
5100 yych
= *(mrk
= ++cur
);
5103 case 'v': goto yy447
;
5108 yych
= *(mrk
= ++cur
);
5111 case 'i': goto yy448
;
5116 yych
= *(mrk
= ++cur
);
5181 case 0x7F: goto yy392
;
5182 case '\\': goto yy146
;
5186 #line 392 "src/parser.re"
5187 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5188 #line 5189 "src/parser.c"
5191 yych
= *(mrk
= ++cur
);
5194 case 'f': goto yy449
;
5199 yych
= *(mrk
= ++cur
);
5202 case 'd': goto yy451
;
5207 yych
= *(mrk
= ++cur
);
5210 case 'l': goto yy452
;
5215 yych
= *(mrk
= ++cur
);
5280 case 0x7F: goto yy397
;
5281 case '\\': goto yy146
;
5285 #line 407 "src/parser.re"
5286 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5287 #line 5288 "src/parser.c"
5290 yych
= *(mrk
= ++cur
);
5293 case 't': goto yy454
;
5298 yych
= *(mrk
= ++cur
);
5301 case 'l': goto yy456
;
5306 yych
= *(mrk
= ++cur
);
5309 case 'a': goto yy458
;
5314 yych
= *(mrk
= ++cur
);
5317 case 'a': goto yy459
;
5322 yych
= *(mrk
= ++cur
);
5325 case 's': goto yy460
;
5330 yych
= *(mrk
= ++cur
);
5333 case 'n': goto yy461
;
5338 yych
= *(mrk
= ++cur
);
5341 case 'c': goto yy463
;
5346 yych
= *(mrk
= ++cur
);
5349 case 'g': goto yy465
;
5354 yych
= *(mrk
= ++cur
);
5357 case 'n': goto yy467
;
5362 yych
= *(mrk
= ++cur
);
5365 case 'l': goto yy469
;
5370 yych
= *(mrk
= ++cur
);
5373 case 'r': goto yy471
;
5378 yych
= *(mrk
= ++cur
);
5381 case 'o': goto yy472
;
5386 yych
= *(mrk
= ++cur
);
5389 case 'o': goto yy473
;
5394 yych
= *(mrk
= ++cur
);
5397 case 't': goto yy474
;
5402 yych
= *(mrk
= ++cur
);
5405 case 'j': goto yy476
;
5410 yych
= *(mrk
= ++cur
);
5413 case 'r': goto yy477
;
5418 yych
= *(mrk
= ++cur
);
5483 case 0x7F: goto yy415
;
5484 case '\\': goto yy146
;
5488 #line 399 "src/parser.re"
5489 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5490 #line 5491 "src/parser.c"
5493 yych
= *(mrk
= ++cur
);
5496 case 'n': goto yy478
;
5501 yych
= *(mrk
= ++cur
);
5503 case '_': goto yy479
;
5508 yych
= *(mrk
= ++cur
);
5510 case 'r': goto yy480
;
5515 yych
= *(mrk
= ++cur
);
5517 case 'e': goto yy481
;
5522 yych
= *(mrk
= ++cur
);
5524 case 'i': goto yy482
;
5529 yych
= *(mrk
= ++cur
);
5531 case 't': goto yy483
;
5536 yych
= *(mrk
= ++cur
);
5601 case 0x7F: goto yy423
;
5602 case '\\': goto yy146
;
5606 #line 380 "src/parser.re"
5607 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5608 #line 5609 "src/parser.c"
5611 yych
= *(mrk
= ++cur
);
5613 case 'e': goto yy484
;
5618 yych
= *(mrk
= ++cur
);
5683 case 0x7F: goto yy426
;
5685 case 'v': goto yy447
;
5686 case '\\': goto yy146
;
5690 #line 387 "src/parser.re"
5691 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5692 #line 5693 "src/parser.c"
5695 yych
= *(mrk
= ++cur
);
5697 case 'a': goto yy486
;
5702 yych
= *(mrk
= ++cur
);
5767 case 0x7F: goto yy429
;
5768 case '\\': goto yy146
;
5772 #line 384 "src/parser.re"
5773 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5774 #line 5775 "src/parser.c"
5777 yych
= *(mrk
= ++cur
);
5779 case 'd': goto yy488
;
5784 yych
= *(mrk
= ++cur
);
5786 case 'f': goto yy490
;
5791 yych
= *(mrk
= ++cur
);
5793 case 't': goto yy492
;
5798 yych
= *(mrk
= ++cur
);
5800 case 'e': goto yy494
;
5805 yych
= *(mrk
= ++cur
);
5870 case 0x7F: goto yy435
;
5871 case '\\': goto yy146
;
5875 #line 378 "src/parser.re"
5876 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5877 #line 5878 "src/parser.c"
5880 yych
= *(mrk
= ++cur
);
5882 case 'n': goto yy495
;
5887 yych
= *(mrk
= ++cur
);
5889 case 'i': goto yy496
;
5894 yych
= *(mrk
= ++cur
);
5959 case 0x7F: goto yy439
;
5960 case '\\': goto yy146
;
5964 #line 429 "src/parser.re"
5965 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5966 #line 5967 "src/parser.c"
5969 yych
= *(mrk
= ++cur
);
5972 case 'l': goto yy497
;
5977 yych
= *(mrk
= ++cur
);
5980 case 'l': goto yy499
;
5985 yych
= *(mrk
= ++cur
);
5988 case 'c': goto yy500
;
5993 yych
= *(mrk
= ++cur
);
6058 case 0x7F: goto yy444
;
6059 case '\\': goto yy146
;
6063 #line 433 "src/parser.re"
6064 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6065 #line 6066 "src/parser.c"
6068 yych
= *(mrk
= ++cur
);
6133 case 0x7F: goto yy446
;
6135 case 'd': goto yy501
;
6136 case '\\': goto yy146
;
6140 #line 397 "src/parser.re"
6141 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6142 #line 6143 "src/parser.c"
6145 yych
= *(mrk
= ++cur
);
6148 case 'a': goto yy503
;
6153 yych
= *(mrk
= ++cur
);
6156 case 'o': goto yy504
;
6161 yych
= *(mrk
= ++cur
);
6226 case 0x7F: goto yy450
;
6227 case '\\': goto yy146
;
6231 #line 393 "src/parser.re"
6232 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6233 #line 6234 "src/parser.c"
6236 yych
= *(mrk
= ++cur
);
6239 case 'e': goto yy505
;
6244 yych
= *(mrk
= ++cur
);
6309 case 0x7F: goto yy453
;
6310 case '\\': goto yy146
;
6314 #line 426 "src/parser.re"
6315 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6316 #line 6317 "src/parser.c"
6319 yych
= *(mrk
= ++cur
);
6384 case 0x7F: goto yy455
;
6385 case '\\': goto yy146
;
6389 #line 411 "src/parser.re"
6390 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6391 #line 6392 "src/parser.c"
6394 yych
= *(mrk
= ++cur
);
6459 case 0x7F: goto yy457
;
6460 case '\\': goto yy146
;
6464 #line 430 "src/parser.re"
6465 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6466 #line 6467 "src/parser.c"
6469 yych
= *(mrk
= ++cur
);
6472 case 'l': goto yy507
;
6477 yych
= *(mrk
= ++cur
);
6480 case 's': goto yy509
;
6485 yych
= *(mrk
= ++cur
);
6488 case 's': goto yy510
;
6493 yych
= *(mrk
= ++cur
);
6558 case 0x7F: goto yy462
;
6559 case '\\': goto yy146
;
6563 #line 420 "src/parser.re"
6564 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6565 #line 6566 "src/parser.c"
6568 yych
= *(mrk
= ++cur
);
6633 case 0x7F: goto yy464
;
6634 case '\\': goto yy146
;
6638 #line 413 "src/parser.re"
6639 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6640 #line 6641 "src/parser.c"
6643 yych
= *(mrk
= ++cur
);
6708 case 0x7F: goto yy466
;
6709 case '\\': goto yy146
;
6713 #line 409 "src/parser.re"
6714 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6715 #line 6716 "src/parser.c"
6718 yych
= *(mrk
= ++cur
);
6783 case 0x7F: goto yy468
;
6784 case '\\': goto yy146
;
6788 #line 423 "src/parser.re"
6789 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6790 #line 6791 "src/parser.c"
6793 yych
= *(mrk
= ++cur
);
6858 case 0x7F: goto yy470
;
6859 case '\\': goto yy146
;
6863 #line 424 "src/parser.re"
6864 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6865 #line 6866 "src/parser.c"
6868 yych
= *(mrk
= ++cur
);
6871 case 'a': goto yy511
;
6876 yych
= *(mrk
= ++cur
);
6879 case 'l': goto yy512
;
6884 yych
= *(mrk
= ++cur
);
6887 case 'a': goto yy514
;
6892 yych
= *(mrk
= ++cur
);
6957 case 0x7F: goto yy475
;
6958 case '\\': goto yy146
;
6962 #line 437 "src/parser.re"
6963 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
6964 #line 6965 "src/parser.c"
6967 yych
= *(mrk
= ++cur
);
6970 case 'e': goto yy515
;
6975 yych
= *(mrk
= ++cur
);
6978 case 'i': goto yy516
;
6983 yych
= *(mrk
= ++cur
);
6986 case 'g': goto yy517
;
6991 yych
= *(mrk
= ++cur
);
6993 case '_': goto yy519
;
6998 yych
= *(mrk
= ++cur
);
7000 case 'i': goto yy521
;
7005 yych
= *(mrk
= ++cur
);
7007 case 'n': goto yy522
;
7012 yych
= *(mrk
= ++cur
);
7014 case 'n': goto yy523
;
7019 yych
= *(mrk
= ++cur
);
7021 case 'r': goto yy524
;
7026 yych
= *(mrk
= ++cur
);
7091 case 0x7F: goto yy485
;
7092 case '\\': goto yy146
;
7096 #line 388 "src/parser.re"
7097 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7098 #line 7099 "src/parser.c"
7101 yych
= *(mrk
= ++cur
);
7166 case 0x7F: goto yy487
;
7167 case '\\': goto yy146
;
7168 default: goto yy525
;
7171 #line 367 "src/parser.re"
7172 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7173 #line 7174 "src/parser.c"
7176 yych
= *(mrk
= ++cur
);
7241 case 0x7F: goto yy489
;
7242 case '\\': goto yy146
;
7246 #line 390 "src/parser.re"
7247 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7248 #line 7249 "src/parser.c"
7251 yych
= *(mrk
= ++cur
);
7316 case 0x7F: goto yy491
;
7317 case '\\': goto yy146
;
7321 #line 374 "src/parser.re"
7322 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7323 #line 7324 "src/parser.c"
7326 yych
= *(mrk
= ++cur
);
7391 case 0x7F: goto yy493
;
7392 case '\\': goto yy146
;
7396 #line 377 "src/parser.re"
7397 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7398 #line 7399 "src/parser.c"
7401 yych
= *(mrk
= ++cur
);
7403 case 'f': goto yy527
;
7408 yych
= *(mrk
= ++cur
);
7410 case 'e': goto yy529
;
7415 yych
= *(mrk
= ++cur
);
7417 case 'l': goto yy530
;
7422 yych
= *(mrk
= ++cur
);
7487 case 0x7F: goto yy498
;
7488 case '\\': goto yy146
;
7492 #line 428 "src/parser.re"
7493 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7494 #line 7495 "src/parser.c"
7497 yych
= *(mrk
= ++cur
);
7500 case 'e': goto yy531
;
7505 yych
= *(mrk
= ++cur
);
7508 case 'k': goto yy533
;
7513 yych
= *(mrk
= ++cur
);
7578 case 0x7F: goto yy502
;
7579 case '\\': goto yy146
;
7583 #line 398 "src/parser.re"
7584 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7585 #line 7586 "src/parser.c"
7588 yych
= *(mrk
= ++cur
);
7591 case 'l': goto yy535
;
7596 yych
= *(mrk
= ++cur
);
7599 case 'n': goto yy537
;
7604 yych
= *(mrk
= ++cur
);
7669 case 0x7F: goto yy506
;
7670 case '\\': goto yy146
;
7671 case '_': goto yy539
;
7675 #line 402 "src/parser.re"
7676 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7677 #line 7678 "src/parser.c"
7680 yych
= *(mrk
= ++cur
);
7745 case 0x7F: goto yy508
;
7746 case '\\': goto yy146
;
7750 #line 425 "src/parser.re"
7751 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7752 #line 7753 "src/parser.c"
7755 yych
= *(mrk
= ++cur
);
7758 case 's': goto yy540
;
7763 yych
= *(mrk
= ++cur
);
7766 case 'e': goto yy541
;
7771 yych
= *(mrk
= ++cur
);
7774 case 'y': goto yy542
;
7779 yych
= *(mrk
= ++cur
);
7844 case 0x7F: goto yy513
;
7845 case '\\': goto yy146
;
7849 #line 439 "src/parser.re"
7850 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7851 #line 7852 "src/parser.c"
7854 yych
= *(mrk
= ++cur
);
7857 case 't': goto yy544
;
7862 yych
= *(mrk
= ++cur
);
7865 case 'c': goto yy546
;
7870 yych
= *(mrk
= ++cur
);
7873 case 'n': goto yy547
;
7878 yych
= *(mrk
= ++cur
);
7943 case 0x7F: goto yy518
;
7944 case '\\': goto yy146
;
7948 #line 400 "src/parser.re"
7949 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
7950 #line 7951 "src/parser.c"
7953 yych
= *(mrk
= ++cur
);
8018 case 0x7F: goto yy520
;
8019 case '\\': goto yy146
;
8023 #line 372 "src/parser.re"
8024 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8025 #line 8026 "src/parser.c"
8028 yych
= *(mrk
= ++cur
);
8030 case 'b': goto yy548
;
8035 yych
= *(mrk
= ++cur
);
8037 case 's': goto yy549
;
8042 yych
= *(mrk
= ++cur
);
8044 case 'e': goto yy550
;
8049 yych
= *(mrk
= ++cur
);
8051 case 'i': goto yy552
;
8057 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8123 case 0x7F: goto yy55
;
8124 case '\\': goto yy146
;
8125 case 'o': goto yy553
;
8126 default: goto yy525
;
8130 yych
= *(mrk
= ++cur
);
8195 case 0x7F: goto yy528
;
8196 case '\\': goto yy146
;
8200 #line 376 "src/parser.re"
8201 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8202 #line 8203 "src/parser.c"
8205 yych
= *(mrk
= ++cur
);
8207 case 'd': goto yy555
;
8212 yych
= *(mrk
= ++cur
);
8214 case 'e': goto yy557
;
8219 yych
= *(mrk
= ++cur
);
8284 case 0x7F: goto yy532
;
8285 case '\\': goto yy146
;
8289 #line 408 "src/parser.re"
8290 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8291 #line 8292 "src/parser.c"
8294 yych
= *(mrk
= ++cur
);
8359 case 0x7F: goto yy534
;
8360 case '\\': goto yy146
;
8364 #line 412 "src/parser.re"
8365 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8366 #line 8367 "src/parser.c"
8369 yych
= *(mrk
= ++cur
);
8434 case 0x7F: goto yy536
;
8435 case '\\': goto yy146
;
8439 #line 427 "src/parser.re"
8440 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8441 #line 8442 "src/parser.c"
8444 yych
= *(mrk
= ++cur
);
8509 case 0x7F: goto yy538
;
8510 case '\\': goto yy146
;
8514 #line 414 "src/parser.re"
8515 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8516 #line 8517 "src/parser.c"
8519 yych
= *(mrk
= ++cur
);
8522 case 'n': goto yy559
;
8527 yych
= *(mrk
= ++cur
);
8530 case 'e': goto yy560
;
8535 yych
= *(mrk
= ++cur
);
8538 case 'r': goto yy561
;
8543 yych
= *(mrk
= ++cur
);
8608 case 0x7F: goto yy543
;
8609 case '\\': goto yy146
;
8613 #line 435 "src/parser.re"
8614 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8615 #line 8616 "src/parser.c"
8618 yych
= *(mrk
= ++cur
);
8683 case 0x7F: goto yy545
;
8684 case '\\': goto yy146
;
8688 #line 438 "src/parser.re"
8689 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8690 #line 8691 "src/parser.c"
8693 yych
= *(mrk
= ++cur
);
8696 case 't': goto yy562
;
8701 yych
= *(mrk
= ++cur
);
8704 case 'g': goto yy564
;
8709 yych
= *(mrk
= ++cur
);
8711 case 'u': goto yy566
;
8716 yych
= *(mrk
= ++cur
);
8718 case 'i': goto yy567
;
8723 yych
= *(mrk
= ++cur
);
8788 case 0x7F: goto yy551
;
8789 case '\\': goto yy146
;
8793 #line 369 "src/parser.re"
8794 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8795 #line 8796 "src/parser.c"
8798 yych
= *(mrk
= ++cur
);
8800 case 'c': goto yy568
;
8806 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8872 case 0x7F: goto yy55
;
8873 case '\\': goto yy146
;
8874 case 'n': goto yy569
;
8875 case 'o': goto yy553
;
8876 default: goto yy525
;
8880 yych
= *(mrk
= ++cur
);
8945 case 0x7F: goto yy556
;
8946 case '\\': goto yy146
;
8950 #line 389 "src/parser.re"
8951 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
8952 #line 8953 "src/parser.c"
8955 yych
= *(mrk
= ++cur
);
9020 case 0x7F: goto yy558
;
9021 case '\\': goto yy146
;
9025 #line 373 "src/parser.re"
9026 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9027 #line 9028 "src/parser.c"
9030 yych
= *(mrk
= ++cur
);
9033 case 'e': goto yy570
;
9038 yych
= *(mrk
= ++cur
);
9041 case 'r': goto yy571
;
9046 yych
= *(mrk
= ++cur
);
9049 case 't': goto yy572
;
9054 yych
= *(mrk
= ++cur
);
9119 case 0x7F: goto yy563
;
9120 case '\\': goto yy146
;
9124 #line 434 "src/parser.re"
9125 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9126 #line 9127 "src/parser.c"
9129 yych
= *(mrk
= ++cur
);
9194 case 0x7F: goto yy565
;
9195 case '\\': goto yy146
;
9199 #line 436 "src/parser.re"
9200 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9201 #line 9202 "src/parser.c"
9204 yych
= *(mrk
= ++cur
);
9206 case 't': goto yy574
;
9211 yych
= *(mrk
= ++cur
);
9213 case 'o': goto yy575
;
9218 yych
= *(mrk
= ++cur
);
9220 case 't': goto yy576
;
9226 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9292 case 0x7F: goto yy55
;
9293 case '\\': goto yy146
;
9294 case 'c': goto yy578
;
9295 case 'o': goto yy553
;
9296 default: goto yy525
;
9300 yych
= *(mrk
= ++cur
);
9303 case 'x': goto yy579
;
9308 yych
= *(mrk
= ++cur
);
9311 case 't': goto yy580
;
9316 yych
= *(mrk
= ++cur
);
9381 case 0x7F: goto yy573
;
9382 case '\\': goto yy146
;
9386 #line 418 "src/parser.re"
9387 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9388 #line 9389 "src/parser.c"
9391 yych
= *(mrk
= ++cur
);
9393 case 'e': goto yy582
;
9398 yych
= *(mrk
= ++cur
);
9400 case 'n': goto yy583
;
9405 yych
= *(mrk
= ++cur
);
9470 case 0x7F: goto yy577
;
9471 case '\\': goto yy146
;
9475 #line 370 "src/parser.re"
9476 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9477 #line 9478 "src/parser.c"
9481 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9547 case 0x7F: goto yy55
;
9548 case '\\': goto yy146
;
9549 case 'e': goto yy584
;
9550 case 'o': goto yy553
;
9551 default: goto yy525
;
9555 yych
= *(mrk
= ++cur
);
9558 case 't': goto yy586
;
9563 yych
= *(mrk
= ++cur
);
9628 case 0x7F: goto yy581
;
9629 case '\\': goto yy146
;
9633 #line 419 "src/parser.re"
9634 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9635 #line 9636 "src/parser.c"
9638 yych
= *(mrk
= ++cur
);
9640 case '_': goto yy588
;
9645 yych
= *(mrk
= ++cur
);
9647 case '_': goto yy589
;
9653 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9719 case 0x7F: goto yy585
;
9720 case '\\': goto yy146
;
9721 case 'o': goto yy553
;
9722 default: goto yy525
;
9725 #line 368 "src/parser.re"
9726 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9727 #line 9728 "src/parser.c"
9730 yych
= *(mrk
= ++cur
);
9795 case 0x7F: goto yy587
;
9796 case '\\': goto yy146
;
9800 #line 403 "src/parser.re"
9801 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9802 #line 9803 "src/parser.c"
9805 yych
= *(mrk
= ++cur
);
9807 case '_': goto yy590
;
9812 yych
= *(mrk
= ++cur
);
9814 case '_': goto yy591
;
9819 yych
= *(mrk
= ++cur
);
9823 case ' ': goto yy593
;
9824 case '(': goto yy595
;
9829 yych
= *(mrk
= ++cur
);
9894 case 0x7F: goto yy592
;
9895 case '\\': goto yy146
;
9899 #line 371 "src/parser.re"
9900 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
9901 #line 9902 "src/parser.c"
9904 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9909 case ' ': goto yy593
;
9910 case '(': goto yy595
;
9911 default: goto yy114
;
9916 case '(': goto yy596
;
9917 default: goto yy114
;
9921 #line 444 "src/parser.re"
9922 { parens
= 2; goto cpp_attribute
; }
9923 #line 9924 "src/parser.c"
9925 #line 450 "src/parser.re"
9930 #line 9931 "src/parser.c"
9933 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9937 case '\r': goto yy602
;
9938 case '\'': goto yy604
;
9939 case '\\': goto yy606
;
9940 default: goto yy600
;
9944 #line 468 "src/parser.re"
9945 { escaped
= false; goto character
; }
9946 #line 9947 "src/parser.c"
9949 #line 455 "src/parser.re"
9950 { NEWLINE(); goto character
; }
9951 #line 9952 "src/parser.c"
9954 #line 457 "src/parser.re"
9961 NEWTOKEN(PSI_T_QUOTED_CHAR
);
9963 token
->flags
= char_width
;
9966 #line 9967 "src/parser.c"
9969 #line 456 "src/parser.re"
9970 { escaped
= !escaped
; goto character
; }
9971 #line 9972 "src/parser.c"
9973 #line 470 "src/parser.re"
9978 #line 9979 "src/parser.c"
9981 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9985 case '\r': goto yy612
;
9986 case '"': goto yy614
;
9987 case '\\': goto yy616
;
9988 default: goto yy610
;
9992 #line 488 "src/parser.re"
9993 { escaped
= false; goto string
; }
9994 #line 9995 "src/parser.c"
9997 #line 475 "src/parser.re"
9998 { NEWLINE(); goto string
; }
9999 #line 10000 "src/parser.c"
10002 #line 477 "src/parser.re"
10009 NEWTOKEN(PSI_T_QUOTED_STRING
);
10011 token
->flags
= char_width
;
10014 #line 10015 "src/parser.c"
10017 #line 476 "src/parser.re"
10018 { escaped
= !escaped
; goto string
; }
10019 #line 10020 "src/parser.c"
10021 #line 490 "src/parser.re"
10026 #line 10027 "src/parser.c"
10028 unsigned char yych
;
10029 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10033 case '\r': goto yy622
;
10034 case '*': goto yy624
;
10035 default: goto yy620
;
10040 #line 497 "src/parser.re"
10042 #line 10043 "src/parser.c"
10045 #line 495 "src/parser.re"
10046 { NEWLINE(); goto comment
; }
10047 #line 10048 "src/parser.c"
10051 case '/': goto yy625
;
10052 default: goto yy621
;
10056 #line 496 "src/parser.re"
10057 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10058 #line 10059 "src/parser.c"
10060 #line 499 "src/parser.re"
10065 #line 10066 "src/parser.c"
10067 unsigned char yych
;
10068 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10072 case '\r': goto yy631
;
10073 default: goto yy629
;
10077 #line 505 "src/parser.re"
10078 { goto comment_sl
; }
10079 #line 10080 "src/parser.c"
10082 #line 504 "src/parser.re"
10083 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10084 #line 10085 "src/parser.c"
10086 #line 507 "src/parser.re"
10092 #line 10093 "src/parser.c"
10094 unsigned char yych
;
10095 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10099 case '\r': goto yy637
;
10100 case '(': goto yy639
;
10101 case ')': goto yy641
;
10102 default: goto yy635
;
10106 #line 516 "src/parser.re"
10107 { goto cpp_attribute
; }
10108 #line 10109 "src/parser.c"
10111 #line 515 "src/parser.re"
10112 { NEWLINE(); goto cpp_attribute
; }
10113 #line 10114 "src/parser.c"
10116 #line 513 "src/parser.re"
10117 { ++parens
; goto cpp_attribute
; }
10118 #line 10119 "src/parser.c"
10121 #line 514 "src/parser.re"
10122 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10123 #line 10124 "src/parser.c"
10125 #line 518 "src/parser.re"
10129 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10130 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10131 psi_plist_free(tokens
);
10136 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);