aad454662c76db8cda45113826d71f417198c7be
1 /* Generated by re2c 1.0.2 on Mon Sep 11 16:12:23 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 448 "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 447 "src/parser.re"
422 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
423 #line 424 "src/parser.c"
426 #line 446 "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
;
799 case 's': goto yy146
;
803 #line 441 "src/parser.re"
804 { NEWTOKEN(PSI_T_NAME
); goto start
; }
805 #line 806 "src/parser.c"
808 yych
= *(mrk
= ++cur
);
811 case 'o': goto yy149
;
816 yych
= *(mrk
= ++cur
);
819 case 'a': goto yy150
;
821 case 'o': goto yy151
;
826 yych
= *(mrk
= ++cur
);
829 case 'e': goto yy152
;
834 yych
= *(mrk
= ++cur
);
837 case 'l': goto yy153
;
839 case 'n': goto yy154
;
841 case 'r': goto yy155
;
846 yych
= *(mrk
= ++cur
);
849 case 'a': goto yy156
;
851 case 'l': goto yy157
;
853 case 'r': goto yy158
;
855 case 'u': goto yy159
;
861 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
928 case 0x7F: goto yy55
;
929 case '\\': goto yy148
;
934 yych
= *(mrk
= ++cur
);
937 case 'f': goto yy160
;
939 case 'n': goto yy162
;
944 yych
= *(mrk
= ++cur
);
947 case '\'': goto yy163
;
949 case 'e': goto yy165
;
951 case 'i': goto yy166
;
956 yych
= *(mrk
= ++cur
);
959 case 'i': goto yy167
;
964 yych
= *(mrk
= ++cur
);
967 case 'u': goto yy168
;
972 yych
= *(mrk
= ++cur
);
975 case 'b': goto yy169
;
980 yych
= *(mrk
= ++cur
);
983 case 'a': goto yy170
;
985 case 'o': goto yy171
;
987 case 'r': goto yy172
;
992 yych
= *(mrk
= ++cur
);
995 case 'e': goto yy173
;
1000 yych
= *(mrk
= ++cur
);
1003 case 'e': goto yy174
;
1005 case 't': goto yy175
;
1010 yych
= *(mrk
= ++cur
);
1013 case 'e': goto yy176
;
1015 case 'o': goto yy177
;
1017 case 'r': goto yy178
;
1022 yych
= *(mrk
= ++cur
);
1025 case '\'': goto yy179
;
1027 case 'n': goto yy181
;
1032 yych
= *(mrk
= ++cur
);
1035 case 'a': goto yy182
;
1040 yych
= *(mrk
= ++cur
);
1043 case 'v': goto yy183
;
1048 #line 340 "src/parser.re"
1049 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1050 #line 1051 "src/parser.c"
1128 case 0x7F: goto yy78
;
1129 default: goto yy184
;
1132 #line 355 "src/parser.re"
1133 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1134 #line 1135 "src/parser.c"
1137 #line 341 "src/parser.re"
1138 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1139 #line 1140 "src/parser.c"
1142 #line 357 "src/parser.re"
1143 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1144 #line 1145 "src/parser.c"
1147 yych
= *(mrk
= ++cur
);
1149 case '_': goto yy187
;
1154 yych
= *(mrk
= ++cur
);
1156 case 'O': goto yy149
;
1157 case 'o': goto yy188
;
1162 yych
= *(mrk
= ++cur
);
1165 case 'a': goto yy150
;
1166 case 'O': goto yy151
;
1167 case 'h': goto yy189
;
1168 case 'o': goto yy190
;
1173 yych
= *(mrk
= ++cur
);
1176 case 'e': goto yy152
;
1177 case 'o': goto yy191
;
1182 yych
= *(mrk
= ++cur
);
1185 case 'l': goto yy153
;
1186 case 'N': goto yy154
;
1188 case 'r': goto yy155
;
1189 case 'n': goto yy192
;
1194 yych
= *(mrk
= ++cur
);
1197 case 'a': goto yy156
;
1198 case 'L': goto yy157
;
1200 case 'r': goto yy158
;
1202 case 'u': goto yy159
;
1203 case 'l': goto yy193
;
1208 yych
= *(mrk
= ++cur
);
1211 case 'f': goto yy160
;
1212 case 'N': goto yy162
;
1213 case 'n': goto yy194
;
1218 yych
= *(mrk
= ++cur
);
1221 case 'e': goto yy165
;
1222 case 'I': goto yy166
;
1223 case 'i': goto yy195
;
1224 case 'o': goto yy196
;
1229 yych
= *(mrk
= ++cur
);
1232 case 'a': goto yy170
;
1234 case 'o': goto yy171
;
1235 case 'R': goto yy172
;
1236 case 'r': goto yy197
;
1241 yych
= *(mrk
= ++cur
);
1244 case 'e': goto yy174
;
1245 case 'T': goto yy175
;
1246 case 'h': goto yy198
;
1247 case 'i': goto yy199
;
1248 case 't': goto yy200
;
1253 yych
= *(mrk
= ++cur
);
1256 case 'e': goto yy176
;
1258 case 'o': goto yy177
;
1260 case 'r': goto yy178
;
1261 case 'y': goto yy201
;
1266 yych
= *(mrk
= ++cur
);
1269 case '\'': goto yy202
;
1270 case '8': goto yy204
;
1271 case 'N': goto yy181
;
1272 case 'n': goto yy205
;
1277 yych
= *(mrk
= ++cur
);
1279 case 'o': goto yy206
;
1284 #line 338 "src/parser.re"
1285 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1286 #line 1287 "src/parser.c"
1290 case '|': goto yy207
;
1294 #line 356 "src/parser.re"
1295 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1296 #line 1297 "src/parser.c"
1299 #line 339 "src/parser.re"
1300 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1301 #line 1302 "src/parser.c"
1304 #line 348 "src/parser.re"
1305 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1306 #line 1307 "src/parser.c"
1309 #line 342 "src/parser.re"
1310 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1311 #line 1312 "src/parser.c"
1314 #line 331 "src/parser.re"
1315 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1316 #line 1317 "src/parser.c"
1319 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1386 case 0x7F: goto yy110
;
1387 default: goto yy108
;
1390 #line 443 "src/parser.re"
1391 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1392 #line 1393 "src/parser.c"
1395 #line 344 "src/parser.re"
1396 { NEWTOKEN(PSI_T_AND
); goto start
; }
1397 #line 1398 "src/parser.c"
1410 case '9': goto yy116
;
1411 default: goto yy114
;
1426 case 10: goto yy186
;
1427 case 11: goto yy242
;
1428 case 12: goto yy244
;
1429 case 13: goto yy253
;
1430 case 14: goto yy273
;
1431 case 15: goto yy305
;
1432 case 16: goto yy307
;
1433 case 17: goto yy313
;
1434 case 18: goto yy321
;
1435 case 19: goto yy333
;
1436 case 20: goto yy341
;
1437 case 21: goto yy345
;
1438 case 22: goto yy352
;
1439 case 23: goto yy354
;
1440 case 24: goto yy358
;
1441 case 25: goto yy361
;
1442 case 26: goto yy363
;
1443 case 27: goto yy373
;
1444 case 28: goto yy376
;
1445 case 29: goto yy383
;
1446 case 30: goto yy386
;
1447 case 31: goto yy388
;
1448 case 32: goto yy390
;
1449 case 33: goto yy394
;
1450 case 34: goto yy399
;
1451 case 35: goto yy417
;
1452 case 36: goto yy425
;
1453 case 37: goto yy428
;
1454 case 38: goto yy431
;
1455 case 39: goto yy437
;
1456 case 40: goto yy441
;
1457 case 41: goto yy446
;
1458 case 42: goto yy448
;
1459 case 43: goto yy452
;
1460 case 44: goto yy455
;
1461 case 45: goto yy457
;
1462 case 46: goto yy459
;
1463 case 47: goto yy464
;
1464 case 48: goto yy466
;
1465 case 49: goto yy468
;
1466 case 50: goto yy470
;
1467 case 51: goto yy472
;
1468 case 52: goto yy477
;
1469 case 53: goto yy487
;
1470 case 54: goto yy489
;
1471 case 55: goto yy491
;
1472 case 56: goto yy493
;
1473 case 57: goto yy495
;
1474 case 58: goto yy500
;
1475 case 59: goto yy504
;
1476 case 60: goto yy508
;
1477 case 61: goto yy510
;
1478 case 62: goto yy515
;
1479 case 63: goto yy520
;
1480 case 64: goto yy522
;
1481 case 65: goto yy530
;
1482 case 66: goto yy534
;
1483 case 67: goto yy536
;
1484 case 68: goto yy538
;
1485 case 69: goto yy540
;
1486 case 70: goto yy545
;
1487 case 71: goto yy547
;
1488 case 72: goto yy553
;
1489 case 73: goto yy558
;
1490 case 74: goto yy560
;
1491 case 75: goto yy565
;
1492 case 76: goto yy567
;
1493 case 77: goto yy575
;
1494 case 78: goto yy579
;
1495 case 79: goto yy583
;
1496 case 80: goto yy587
;
1497 case 81: goto yy589
;
1498 default: goto yy594
;
1503 case '.': goto yy209
;
1504 default: goto yy114
;
1509 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1521 case '9': goto yy116
;
1523 case 'd': goto yy211
;
1525 case 'f': goto yy212
;
1527 case 'l': goto yy214
;
1528 default: goto yy118
;
1531 #line 314 "src/parser.re"
1532 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1533 #line 1534 "src/parser.c"
1536 #line 328 "src/parser.re"
1538 #line 1539 "src/parser.c"
1541 #line 329 "src/parser.re"
1542 { goto comment_sl
; }
1543 #line 1544 "src/parser.c"
1547 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1559 case '9': goto yy123
;
1561 case 'd': goto yy211
;
1563 case 'e': goto yy127
;
1565 case 'f': goto yy212
;
1567 case 'l': goto yy214
;
1568 default: goto yy118
;
1572 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1583 case '7': goto yy125
;
1585 case 'l': goto yy128
;
1587 case 'u': goto yy130
;
1594 case '-': goto yy113
;
1604 case '9': goto yy116
;
1605 default: goto yy114
;
1609 yych
= *(mrk
= ++cur
);
1612 case 'l': goto yy216
;
1614 case 'u': goto yy217
;
1615 default: goto yy129
;
1619 #line 310 "src/parser.re"
1620 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1621 #line 1622 "src/parser.c"
1626 case 'l': goto yy219
;
1627 default: goto yy131
;
1631 #line 309 "src/parser.re"
1632 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1633 #line 1634 "src/parser.c"
1658 case 'f': goto yy220
;
1659 default: goto yy114
;
1663 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1731 case 'z': goto yy133
;
1732 case '>': goto yy222
;
1733 default: goto yy114
;
1737 #line 358 "src/parser.re"
1738 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1739 #line 1740 "src/parser.c"
1742 #line 360 "src/parser.re"
1743 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1744 #line 1745 "src/parser.c"
1747 #line 343 "src/parser.re"
1748 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1749 #line 1750 "src/parser.c"
1752 #line 361 "src/parser.re"
1753 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1754 #line 1755 "src/parser.c"
1757 #line 359 "src/parser.re"
1758 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1759 #line 1760 "src/parser.c"
1762 yych
= *(mrk
= ++cur
);
1765 case 'r': goto yy224
;
1770 yych
= *(mrk
= ++cur
);
1835 case 0x7F: goto yy147
;
1836 case '\\': goto yy148
;
1840 #line 421 "src/parser.re"
1841 { NEWTOKEN(PSI_T_AS
); goto start
; }
1842 #line 1843 "src/parser.c"
1845 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1922 case 0x7F: goto yy114
;
1923 default: goto yy184
;
1927 yych
= *(mrk
= ++cur
);
1930 case 'o': goto yy225
;
1935 yych
= *(mrk
= ++cur
);
1938 case 'l': goto yy226
;
1943 yych
= *(mrk
= ++cur
);
1946 case 'u': goto yy227
;
1951 yych
= *(mrk
= ++cur
);
1954 case 'f': goto yy228
;
1959 yych
= *(mrk
= ++cur
);
1962 case 'i': goto yy229
;
1964 case 's': goto yy230
;
1969 yych
= *(mrk
= ++cur
);
1972 case 'd': goto yy231
;
1977 yych
= *(mrk
= ++cur
);
1980 case 'r': goto yy232
;
1985 yych
= *(mrk
= ++cur
);
1988 case 'l': goto yy233
;
1993 yych
= *(mrk
= ++cur
);
1996 case 'o': goto yy234
;
2001 yych
= *(mrk
= ++cur
);
2004 case 'e': goto yy235
;
2009 yych
= *(mrk
= ++cur
);
2012 case 'n': goto yy236
;
2017 yych
= *(mrk
= ++cur
);
2082 case 0x7F: goto yy161
;
2084 case 'd': goto yy237
;
2086 case 'n': goto yy238
;
2087 case '\\': goto yy148
;
2091 #line 391 "src/parser.re"
2092 { NEWTOKEN(PSI_T_IF
); goto start
; }
2093 #line 2094 "src/parser.c"
2096 yych
= *(mrk
= ++cur
);
2099 case 'c': goto yy239
;
2101 case 't': goto yy240
;
2107 #line 326 "src/parser.re"
2108 { char_width
= SIZEOF_WCHAR_T
/8; }
2109 #line 2110 "src/parser.c"
2112 yych
= *(mrk
= ++cur
);
2115 case 't': goto yy241
;
2120 yych
= *(mrk
= ++cur
);
2123 case 'b': goto yy243
;
2128 yych
= *(mrk
= ++cur
);
2131 case 'x': goto yy245
;
2136 yych
= *(mrk
= ++cur
);
2139 case 'l': goto yy246
;
2144 yych
= *(mrk
= ++cur
);
2147 case 'j': goto yy247
;
2152 yych
= *(mrk
= ++cur
);
2155 case 't': goto yy248
;
2160 yych
= *(mrk
= ++cur
);
2163 case 's': goto yy249
;
2168 yych
= *(mrk
= ++cur
);
2171 case 'e': goto yy250
;
2176 yych
= *(mrk
= ++cur
);
2179 case 't': goto yy251
;
2184 yych
= *(mrk
= ++cur
);
2187 case 't': goto yy252
;
2192 yych
= *(mrk
= ++cur
);
2195 case 'a': goto yy254
;
2197 case 'r': goto yy255
;
2202 yych
= *(mrk
= ++cur
);
2205 case 'm': goto yy256
;
2210 yych
= *(mrk
= ++cur
);
2212 case '_': goto yy257
;
2217 yych
= *(mrk
= ++cur
);
2220 case 'u': goto yy258
;
2226 #line 325 "src/parser.re"
2228 #line 2229 "src/parser.c"
2231 yych
= *(mrk
= ++cur
);
2234 case 'd': goto yy259
;
2239 yych
= *(mrk
= ++cur
);
2242 case 'r': goto yy260
;
2247 yych
= *(mrk
= ++cur
);
2250 case 'a': goto yy261
;
2256 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2322 case 0x7F: goto yy186
;
2323 case '\\': goto yy148
;
2324 default: goto yy184
;
2327 #line 442 "src/parser.re"
2328 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2329 #line 2330 "src/parser.c"
2332 yych
= *(mrk
= ++cur
);
2334 case 'a': goto yy262
;
2335 case 'e': goto yy263
;
2336 case 'i': goto yy264
;
2337 case 'r': goto yy265
;
2342 yych
= *(mrk
= ++cur
);
2344 case 'O': goto yy225
;
2345 case 'o': goto yy266
;
2350 yych
= *(mrk
= ++cur
);
2352 case 'a': goto yy267
;
2357 yych
= *(mrk
= ++cur
);
2360 case 'u': goto yy227
;
2361 case 'n': goto yy268
;
2366 yych
= *(mrk
= ++cur
);
2368 case 'u': goto yy269
;
2373 yych
= *(mrk
= ++cur
);
2376 case 'd': goto yy231
;
2377 case 'u': goto yy270
;
2382 yych
= *(mrk
= ++cur
);
2384 case 'O': goto yy234
;
2385 case 'o': goto yy271
;
2390 yych
= *(mrk
= ++cur
);
2393 case 'c': goto yy239
;
2394 case 'T': goto yy240
;
2395 case 't': goto yy272
;
2400 yych
= *(mrk
= ++cur
);
2403 case 'b': goto yy243
;
2404 case 'n': goto yy274
;
2409 yych
= *(mrk
= ++cur
);
2411 case 'n': goto yy275
;
2416 yych
= *(mrk
= ++cur
);
2419 case 'e': goto yy250
;
2420 case 'a': goto yy276
;
2425 yych
= *(mrk
= ++cur
);
2427 case 'o': goto yy277
;
2432 yych
= *(mrk
= ++cur
);
2434 case 'g': goto yy278
;
2435 case 'z': goto yy279
;
2440 yych
= *(mrk
= ++cur
);
2443 case 'a': goto yy254
;
2444 case 'R': goto yy255
;
2445 case 'r': goto yy280
;
2450 yych
= *(mrk
= ++cur
);
2452 case 'p': goto yy281
;
2458 #line 324 "src/parser.re"
2460 #line 2461 "src/parser.c"
2463 yych
= *(mrk
= ++cur
);
2465 case '"': goto yy282
;
2470 yych
= *(mrk
= ++cur
);
2473 case 'd': goto yy259
;
2474 case 'i': goto yy284
;
2475 case 's': goto yy285
;
2480 yych
= *(mrk
= ++cur
);
2482 case 'i': goto yy286
;
2483 case 'l': goto yy287
;
2488 #line 345 "src/parser.re"
2489 { NEWTOKEN(PSI_T_OR
); goto start
; }
2490 #line 2491 "src/parser.c"
2493 #line 365 "src/parser.re"
2494 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2495 #line 2496 "src/parser.c"
2500 case 'd': goto yy288
;
2502 case 'f': goto yy290
;
2504 case 'l': goto yy292
;
2505 default: goto yy114
;
2510 #line 315 "src/parser.re"
2511 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2512 #line 2513 "src/parser.c"
2516 #line 316 "src/parser.re"
2517 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2518 #line 2519 "src/parser.c"
2523 case 'u': goto yy294
;
2524 default: goto yy114
;
2530 #line 311 "src/parser.re"
2531 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2532 #line 2533 "src/parser.c"
2537 case 'l': goto yy294
;
2538 default: goto yy218
;
2543 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2546 case '.': goto yy296
;
2568 case 'f': goto yy220
;
2570 case 'l': goto yy128
;
2572 case 'p': goto yy127
;
2574 case 'u': goto yy130
;
2579 #line 444 "src/parser.re"
2580 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2581 #line 2582 "src/parser.c"
2584 yych
= *(mrk
= ++cur
);
2587 case 'a': goto yy298
;
2589 case 'v': goto yy299
;
2594 yych
= *(mrk
= ++cur
);
2597 case 'l': goto yy300
;
2602 yych
= *(mrk
= ++cur
);
2605 case 'l': goto yy301
;
2610 yych
= *(mrk
= ++cur
);
2613 case 'n': goto yy302
;
2618 yych
= *(mrk
= ++cur
);
2621 case 'i': goto yy303
;
2626 yych
= *(mrk
= ++cur
);
2629 case 'f': goto yy304
;
2634 yych
= *(mrk
= ++cur
);
2637 case 'e': goto yy306
;
2642 yych
= *(mrk
= ++cur
);
2645 case 'i': goto yy308
;
2650 yych
= *(mrk
= ++cur
);
2653 case 'o': goto yy309
;
2658 yych
= *(mrk
= ++cur
);
2661 case 's': goto yy310
;
2666 yych
= *(mrk
= ++cur
);
2669 case 'a': goto yy311
;
2674 yych
= *(mrk
= ++cur
);
2677 case 'e': goto yy312
;
2682 yych
= *(mrk
= ++cur
);
2685 case 'c': goto yy314
;
2690 yych
= *(mrk
= ++cur
);
2693 case 'e': goto yy315
;
2698 yych
= *(mrk
= ++cur
);
2701 case 'd': goto yy316
;
2706 yych
= *(mrk
= ++cur
);
2709 case 'l': goto yy317
;
2714 yych
= *(mrk
= ++cur
);
2717 case 'v': goto yy318
;
2722 yych
= *(mrk
= ++cur
);
2787 case 0x7F: goto yy242
;
2788 case '\\': goto yy148
;
2792 #line 416 "src/parser.re"
2793 { NEWTOKEN(PSI_T_LET
); goto start
; }
2794 #line 2795 "src/parser.c"
2797 yych
= *(mrk
= ++cur
);
2862 case 0x7F: goto yy244
;
2863 case '\\': goto yy148
;
2867 #line 415 "src/parser.re"
2868 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2869 #line 2870 "src/parser.c"
2872 yych
= *(mrk
= ++cur
);
2875 case 'e': goto yy319
;
2880 yych
= *(mrk
= ++cur
);
2883 case 'l': goto yy320
;
2888 yych
= *(mrk
= ++cur
);
2891 case 'e': goto yy322
;
2893 case 'v': goto yy323
;
2898 yych
= *(mrk
= ++cur
);
2901 case 'h': goto yy324
;
2906 yych
= *(mrk
= ++cur
);
2909 case 't': goto yy325
;
2914 yych
= *(mrk
= ++cur
);
2916 case '_': goto yy326
;
2921 yych
= *(mrk
= ++cur
);
2924 case 'u': goto yy327
;
2929 yych
= *(mrk
= ++cur
);
2994 case 0x7F: goto yy253
;
2995 case '\\': goto yy148
;
2999 #line 417 "src/parser.re"
3000 { NEWTOKEN(PSI_T_SET
); goto start
; }
3001 #line 3002 "src/parser.c"
3004 yych
= *(mrk
= ++cur
);
3007 case 't': goto yy328
;
3012 yych
= *(mrk
= ++cur
);
3015 case 'i': goto yy329
;
3017 case 'l': goto yy330
;
3019 case 'v': goto yy331
;
3024 yych
= *(mrk
= ++cur
);
3027 case 'p': goto yy332
;
3032 yych
= *(mrk
= ++cur
);
3035 case 'a': goto yy334
;
3037 case 'b': goto yy335
;
3039 case 'f': goto yy336
;
3041 case 'i': goto yy337
;
3043 case 'o': goto yy338
;
3045 case 's': goto yy339
;
3050 yych
= *(mrk
= ++cur
);
3053 case 'e': goto yy340
;
3058 yych
= *(mrk
= ++cur
);
3061 case 'e': goto yy342
;
3066 yych
= *(mrk
= ++cur
);
3069 case 'n': goto yy343
;
3074 yych
= *(mrk
= ++cur
);
3077 case 'l': goto yy344
;
3082 yych
= *(mrk
= ++cur
);
3084 case 's': goto yy346
;
3085 case 't': goto yy347
;
3090 yych
= *(mrk
= ++cur
);
3092 case 'x': goto yy348
;
3097 yych
= *(mrk
= ++cur
);
3099 case 'n': goto yy349
;
3104 yych
= *(mrk
= ++cur
);
3106 case 'e': goto yy350
;
3111 yych
= *(mrk
= ++cur
);
3113 case 'L': goto yy300
;
3114 case 'l': goto yy351
;
3119 yych
= *(mrk
= ++cur
);
3121 case 'r': goto yy353
;
3126 yych
= *(mrk
= ++cur
);
3128 case 's': goto yy355
;
3133 yych
= *(mrk
= ++cur
);
3135 case 'b': goto yy356
;
3140 yych
= *(mrk
= ++cur
);
3142 case 'm': goto yy357
;
3147 yych
= *(mrk
= ++cur
);
3149 case 'A': goto yy311
;
3150 case 'a': goto yy359
;
3155 yych
= *(mrk
= ++cur
);
3220 case 0x7F: goto yy273
;
3222 case 'v': goto yy318
;
3223 case '\\': goto yy148
;
3227 #line 385 "src/parser.re"
3228 { NEWTOKEN(PSI_T_INT
); goto start
; }
3229 #line 3230 "src/parser.c"
3232 yych
= *(mrk
= ++cur
);
3234 case 'e': goto yy360
;
3239 yych
= *(mrk
= ++cur
);
3241 case 'g': goto yy362
;
3246 yych
= *(mrk
= ++cur
);
3248 case 'g': goto yy364
;
3253 yych
= *(mrk
= ++cur
);
3255 case 'r': goto yy365
;
3260 yych
= *(mrk
= ++cur
);
3262 case 'n': goto yy366
;
3267 yych
= *(mrk
= ++cur
);
3269 case 'e': goto yy367
;
3274 yych
= *(mrk
= ++cur
);
3277 case 'i': goto yy329
;
3279 case 'l': goto yy330
;
3281 case 'v': goto yy331
;
3282 case 'u': goto yy368
;
3287 yych
= *(mrk
= ++cur
);
3289 case 'e': goto yy369
;
3295 #line 323 "src/parser.re"
3297 #line 3298 "src/parser.c"
3300 yych
= *(mrk
= ++cur
);
3302 case 'o': goto yy370
;
3307 yych
= *(mrk
= ++cur
);
3309 case 'i': goto yy371
;
3314 yych
= *(mrk
= ++cur
);
3316 case 'd': goto yy372
;
3321 yych
= *(mrk
= ++cur
);
3323 case 'a': goto yy374
;
3329 #line 318 "src/parser.re"
3330 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3331 #line 3332 "src/parser.c"
3335 #line 317 "src/parser.re"
3336 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3337 #line 3338 "src/parser.c"
3341 #line 319 "src/parser.re"
3342 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3343 #line 3344 "src/parser.c"
3347 #line 312 "src/parser.re"
3348 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3349 #line 3350 "src/parser.c"
3352 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3376 case 'f': goto yy296
;
3378 case 'p': goto yy127
;
3379 default: goto yy114
;
3383 yych
= *(mrk
= ++cur
);
3386 case 'y': goto yy375
;
3391 yych
= *(mrk
= ++cur
);
3394 case 'a': goto yy377
;
3399 yych
= *(mrk
= ++cur
);
3402 case 'v': goto yy378
;
3407 yych
= *(mrk
= ++cur
);
3410 case 'a': goto yy379
;
3412 case 'b': goto yy380
;
3414 case 'o': goto yy381
;
3419 yych
= *(mrk
= ++cur
);
3422 case 't': goto yy382
;
3427 yych
= *(mrk
= ++cur
);
3430 case 'n': goto yy384
;
3435 yych
= *(mrk
= ++cur
);
3500 case 0x7F: goto yy305
;
3501 case '\\': goto yy148
;
3505 #line 395 "src/parser.re"
3506 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3507 #line 3508 "src/parser.c"
3510 yych
= *(mrk
= ++cur
);
3575 case 0x7F: goto yy307
;
3576 case '\\': goto yy148
;
3580 #line 394 "src/parser.re"
3581 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3582 #line 3583 "src/parser.c"
3585 yych
= *(mrk
= ++cur
);
3588 case 'f': goto yy385
;
3593 yych
= *(mrk
= ++cur
);
3596 case 'r': goto yy387
;
3601 yych
= *(mrk
= ++cur
);
3604 case 'e': goto yy389
;
3609 yych
= *(mrk
= ++cur
);
3612 case 't': goto yy391
;
3617 yych
= *(mrk
= ++cur
);
3682 case 0x7F: goto yy313
;
3683 case '\\': goto yy148
;
3687 #line 422 "src/parser.re"
3688 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3689 #line 3690 "src/parser.c"
3692 yych
= *(mrk
= ++cur
);
3695 case 't': goto yy392
;
3700 yych
= *(mrk
= ++cur
);
3703 case 'f': goto yy393
;
3708 yych
= *(mrk
= ++cur
);
3711 case 'e': goto yy395
;
3716 yych
= *(mrk
= ++cur
);
3719 case 'u': goto yy396
;
3724 yych
= *(mrk
= ++cur
);
3727 case 'a': goto yy397
;
3732 yych
= *(mrk
= ++cur
);
3735 case 'd': goto yy398
;
3740 yych
= *(mrk
= ++cur
);
3805 case 0x7F: goto yy321
;
3806 case '\\': goto yy148
;
3810 #line 406 "src/parser.re"
3811 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3812 #line 3813 "src/parser.c"
3815 yych
= *(mrk
= ++cur
);
3818 case 'c': goto yy400
;
3823 yych
= *(mrk
= ++cur
);
3826 case 'a': goto yy401
;
3831 yych
= *(mrk
= ++cur
);
3834 case 'v': goto yy402
;
3839 yych
= *(mrk
= ++cur
);
3841 case '_': goto yy403
;
3846 yych
= *(mrk
= ++cur
);
3849 case 'a': goto yy404
;
3854 yych
= *(mrk
= ++cur
);
3857 case 'r': goto yy405
;
3862 yych
= *(mrk
= ++cur
);
3865 case 'i': goto yy406
;
3870 yych
= *(mrk
= ++cur
);
3873 case 'n': goto yy407
;
3878 yych
= *(mrk
= ++cur
);
3881 case 'e': goto yy408
;
3886 yych
= *(mrk
= ++cur
);
3889 case 'a': goto yy409
;
3894 yych
= *(mrk
= ++cur
);
3959 case 0x7F: goto yy333
;
3960 case '\\': goto yy148
;
3964 #line 423 "src/parser.re"
3965 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3966 #line 3967 "src/parser.c"
3969 yych
= *(mrk
= ++cur
);
3972 case 'r': goto yy410
;
3977 yych
= *(mrk
= ++cur
);
3980 case 'o': goto yy411
;
3985 yych
= *(mrk
= ++cur
);
3988 case 'l': goto yy412
;
3993 yych
= *(mrk
= ++cur
);
3996 case 'n': goto yy413
;
4001 yych
= *(mrk
= ++cur
);
4004 case 'b': goto yy414
;
4009 yych
= *(mrk
= ++cur
);
4012 case 't': goto yy415
;
4017 yych
= *(mrk
= ++cur
);
4082 case 0x7F: goto yy341
;
4083 case '\\': goto yy148
;
4087 #line 404 "src/parser.re"
4088 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4089 #line 4090 "src/parser.c"
4092 yych
= *(mrk
= ++cur
);
4095 case 'f': goto yy416
;
4100 yych
= *(mrk
= ++cur
);
4103 case 'i': goto yy418
;
4108 yych
= *(mrk
= ++cur
);
4173 case 0x7F: goto yy345
;
4174 case '\\': goto yy148
;
4178 #line 432 "src/parser.re"
4179 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4180 #line 4181 "src/parser.c"
4183 yych
= *(mrk
= ++cur
);
4185 case 'm': goto yy419
;
4190 yych
= *(mrk
= ++cur
);
4192 case 't': goto yy420
;
4197 yych
= *(mrk
= ++cur
);
4199 case 't': goto yy421
;
4204 yych
= *(mrk
= ++cur
);
4206 case 'l': goto yy422
;
4211 yych
= *(mrk
= ++cur
);
4213 case 's': goto yy423
;
4218 yych
= *(mrk
= ++cur
);
4283 case 0x7F: goto yy352
;
4285 case 'v': goto yy378
;
4286 case '\\': goto yy148
;
4290 #line 382 "src/parser.re"
4291 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4292 #line 4293 "src/parser.c"
4295 yych
= *(mrk
= ++cur
);
4360 case 0x7F: goto yy354
;
4361 case '\\': goto yy148
;
4365 #line 383 "src/parser.re"
4366 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4367 #line 4368 "src/parser.c"
4370 yych
= *(mrk
= ++cur
);
4372 case 't': goto yy424
;
4377 yych
= *(mrk
= ++cur
);
4379 case 'l': goto yy426
;
4384 yych
= *(mrk
= ++cur
);
4449 case 0x7F: goto yy358
;
4450 case '\\': goto yy148
;
4454 #line 379 "src/parser.re"
4455 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4456 #line 4457 "src/parser.c"
4459 yych
= *(mrk
= ++cur
);
4461 case 'T': goto yy391
;
4462 case 't': goto yy427
;
4467 yych
= *(mrk
= ++cur
);
4532 case 0x7F: goto yy361
;
4533 case '\\': goto yy148
;
4537 #line 375 "src/parser.re"
4538 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4539 #line 4540 "src/parser.c"
4542 yych
= *(mrk
= ++cur
);
4607 case 0x7F: goto yy363
;
4608 case '\\': goto yy148
;
4612 #line 386 "src/parser.re"
4613 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4614 #line 4615 "src/parser.c"
4617 yych
= *(mrk
= ++cur
);
4619 case 'm': goto yy429
;
4624 yych
= *(mrk
= ++cur
);
4626 case 't': goto yy430
;
4631 yych
= *(mrk
= ++cur
);
4633 case 'e': goto yy432
;
4638 yych
= *(mrk
= ++cur
);
4640 case 'o': goto yy433
;
4645 yych
= *(mrk
= ++cur
);
4647 case 'c': goto yy434
;
4652 yych
= *(mrk
= ++cur
);
4654 case 'd': goto yy435
;
4659 yych
= *(mrk
= ++cur
);
4661 case 'n': goto yy436
;
4666 yych
= *(mrk
= ++cur
);
4668 case 'g': goto yy438
;
4673 yych
= *(mrk
= ++cur
);
4738 case 0x7F: goto yy373
;
4739 case '\\': goto yy148
;
4743 #line 381 "src/parser.re"
4744 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4745 #line 4746 "src/parser.c"
4748 yych
= *(mrk
= ++cur
);
4750 case 't': goto yy439
;
4755 yych
= *(mrk
= ++cur
);
4820 case 0x7F: goto yy376
;
4821 case '\\': goto yy148
;
4825 #line 410 "src/parser.re"
4826 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4827 #line 4828 "src/parser.c"
4830 yych
= *(mrk
= ++cur
);
4833 case 'l': goto yy440
;
4838 yych
= *(mrk
= ++cur
);
4841 case 'a': goto yy442
;
4846 yych
= *(mrk
= ++cur
);
4849 case 'b': goto yy443
;
4854 yych
= *(mrk
= ++cur
);
4857 case 'a': goto yy444
;
4862 yych
= *(mrk
= ++cur
);
4865 case 'c': goto yy445
;
4870 yych
= *(mrk
= ++cur
);
4935 case 0x7F: goto yy383
;
4936 case '\\': goto yy148
;
4940 #line 433 "src/parser.re"
4941 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4942 #line 4943 "src/parser.c"
4945 yych
= *(mrk
= ++cur
);
4948 case 'e': goto yy447
;
4953 yych
= *(mrk
= ++cur
);
5018 case 0x7F: goto yy386
;
5019 case '\\': goto yy148
;
5023 #line 396 "src/parser.re"
5024 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5025 #line 5026 "src/parser.c"
5028 yych
= *(mrk
= ++cur
);
5093 case 0x7F: goto yy388
;
5094 case '\\': goto yy148
;
5098 #line 401 "src/parser.re"
5099 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5100 #line 5101 "src/parser.c"
5103 yych
= *(mrk
= ++cur
);
5168 case 0x7F: goto yy390
;
5169 case '\\': goto yy148
;
5173 #line 405 "src/parser.re"
5174 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5175 #line 5176 "src/parser.c"
5178 yych
= *(mrk
= ++cur
);
5181 case 'v': goto yy449
;
5186 yych
= *(mrk
= ++cur
);
5189 case 'i': goto yy450
;
5194 yych
= *(mrk
= ++cur
);
5259 case 0x7F: goto yy394
;
5260 case '\\': goto yy148
;
5264 #line 392 "src/parser.re"
5265 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5266 #line 5267 "src/parser.c"
5269 yych
= *(mrk
= ++cur
);
5272 case 'f': goto yy451
;
5277 yych
= *(mrk
= ++cur
);
5280 case 'd': goto yy453
;
5285 yych
= *(mrk
= ++cur
);
5288 case 'l': goto yy454
;
5293 yych
= *(mrk
= ++cur
);
5358 case 0x7F: goto yy399
;
5359 case '\\': goto yy148
;
5363 #line 407 "src/parser.re"
5364 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5365 #line 5366 "src/parser.c"
5368 yych
= *(mrk
= ++cur
);
5371 case 't': goto yy456
;
5376 yych
= *(mrk
= ++cur
);
5379 case 'l': goto yy458
;
5384 yych
= *(mrk
= ++cur
);
5387 case 'a': goto yy460
;
5392 yych
= *(mrk
= ++cur
);
5395 case 'a': goto yy461
;
5400 yych
= *(mrk
= ++cur
);
5403 case 's': goto yy462
;
5408 yych
= *(mrk
= ++cur
);
5411 case 'n': goto yy463
;
5416 yych
= *(mrk
= ++cur
);
5419 case 'c': goto yy465
;
5424 yych
= *(mrk
= ++cur
);
5427 case 'g': goto yy467
;
5432 yych
= *(mrk
= ++cur
);
5435 case 'n': goto yy469
;
5440 yych
= *(mrk
= ++cur
);
5443 case 'l': goto yy471
;
5448 yych
= *(mrk
= ++cur
);
5451 case 'r': goto yy473
;
5456 yych
= *(mrk
= ++cur
);
5459 case 'o': goto yy474
;
5464 yych
= *(mrk
= ++cur
);
5467 case 'o': goto yy475
;
5472 yych
= *(mrk
= ++cur
);
5475 case 't': goto yy476
;
5480 yych
= *(mrk
= ++cur
);
5483 case 'j': goto yy478
;
5488 yych
= *(mrk
= ++cur
);
5491 case 'r': goto yy479
;
5496 yych
= *(mrk
= ++cur
);
5561 case 0x7F: goto yy417
;
5562 case '\\': goto yy148
;
5566 #line 399 "src/parser.re"
5567 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5568 #line 5569 "src/parser.c"
5571 yych
= *(mrk
= ++cur
);
5574 case 'n': goto yy480
;
5579 yych
= *(mrk
= ++cur
);
5581 case '_': goto yy481
;
5586 yych
= *(mrk
= ++cur
);
5588 case 'r': goto yy482
;
5593 yych
= *(mrk
= ++cur
);
5595 case 'e': goto yy483
;
5600 yych
= *(mrk
= ++cur
);
5602 case 'i': goto yy484
;
5607 yych
= *(mrk
= ++cur
);
5609 case 't': goto yy485
;
5614 yych
= *(mrk
= ++cur
);
5679 case 0x7F: goto yy425
;
5680 case '\\': goto yy148
;
5684 #line 380 "src/parser.re"
5685 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5686 #line 5687 "src/parser.c"
5689 yych
= *(mrk
= ++cur
);
5691 case 'e': goto yy486
;
5696 yych
= *(mrk
= ++cur
);
5761 case 0x7F: goto yy428
;
5763 case 'v': goto yy449
;
5764 case '\\': goto yy148
;
5768 #line 387 "src/parser.re"
5769 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5770 #line 5771 "src/parser.c"
5773 yych
= *(mrk
= ++cur
);
5775 case 'a': goto yy488
;
5780 yych
= *(mrk
= ++cur
);
5845 case 0x7F: goto yy431
;
5846 case '\\': goto yy148
;
5850 #line 384 "src/parser.re"
5851 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5852 #line 5853 "src/parser.c"
5855 yych
= *(mrk
= ++cur
);
5857 case 'd': goto yy490
;
5862 yych
= *(mrk
= ++cur
);
5864 case 'f': goto yy492
;
5869 yych
= *(mrk
= ++cur
);
5871 case 't': goto yy494
;
5876 yych
= *(mrk
= ++cur
);
5878 case 'e': goto yy496
;
5883 yych
= *(mrk
= ++cur
);
5948 case 0x7F: goto yy437
;
5949 case '\\': goto yy148
;
5953 #line 378 "src/parser.re"
5954 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5955 #line 5956 "src/parser.c"
5958 yych
= *(mrk
= ++cur
);
5960 case 'n': goto yy497
;
5965 yych
= *(mrk
= ++cur
);
5967 case 'i': goto yy498
;
5972 yych
= *(mrk
= ++cur
);
6037 case 0x7F: goto yy441
;
6038 case '\\': goto yy148
;
6042 #line 430 "src/parser.re"
6043 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6044 #line 6045 "src/parser.c"
6047 yych
= *(mrk
= ++cur
);
6050 case 'l': goto yy499
;
6055 yych
= *(mrk
= ++cur
);
6058 case 'l': goto yy501
;
6063 yych
= *(mrk
= ++cur
);
6066 case 'c': goto yy502
;
6071 yych
= *(mrk
= ++cur
);
6136 case 0x7F: goto yy446
;
6137 case '\\': goto yy148
;
6141 #line 434 "src/parser.re"
6142 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6143 #line 6144 "src/parser.c"
6146 yych
= *(mrk
= ++cur
);
6211 case 0x7F: goto yy448
;
6213 case 'd': goto yy503
;
6214 case '\\': goto yy148
;
6218 #line 397 "src/parser.re"
6219 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6220 #line 6221 "src/parser.c"
6223 yych
= *(mrk
= ++cur
);
6226 case 'a': goto yy505
;
6231 yych
= *(mrk
= ++cur
);
6234 case 'o': goto yy506
;
6239 yych
= *(mrk
= ++cur
);
6304 case 0x7F: goto yy452
;
6305 case '\\': goto yy148
;
6309 #line 393 "src/parser.re"
6310 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6311 #line 6312 "src/parser.c"
6314 yych
= *(mrk
= ++cur
);
6317 case 'e': goto yy507
;
6322 yych
= *(mrk
= ++cur
);
6387 case 0x7F: goto yy455
;
6388 case '\\': goto yy148
;
6392 #line 427 "src/parser.re"
6393 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6394 #line 6395 "src/parser.c"
6397 yych
= *(mrk
= ++cur
);
6462 case 0x7F: goto yy457
;
6463 case '\\': goto yy148
;
6467 #line 411 "src/parser.re"
6468 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6469 #line 6470 "src/parser.c"
6472 yych
= *(mrk
= ++cur
);
6537 case 0x7F: goto yy459
;
6538 case '\\': goto yy148
;
6542 #line 431 "src/parser.re"
6543 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6544 #line 6545 "src/parser.c"
6547 yych
= *(mrk
= ++cur
);
6550 case 'l': goto yy509
;
6555 yych
= *(mrk
= ++cur
);
6558 case 's': goto yy511
;
6563 yych
= *(mrk
= ++cur
);
6566 case 's': goto yy512
;
6571 yych
= *(mrk
= ++cur
);
6636 case 0x7F: goto yy464
;
6637 case '\\': goto yy148
;
6641 #line 420 "src/parser.re"
6642 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6643 #line 6644 "src/parser.c"
6646 yych
= *(mrk
= ++cur
);
6711 case 0x7F: goto yy466
;
6712 case '\\': goto yy148
;
6716 #line 413 "src/parser.re"
6717 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6718 #line 6719 "src/parser.c"
6721 yych
= *(mrk
= ++cur
);
6786 case 0x7F: goto yy468
;
6787 case '\\': goto yy148
;
6791 #line 409 "src/parser.re"
6792 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6793 #line 6794 "src/parser.c"
6796 yych
= *(mrk
= ++cur
);
6861 case 0x7F: goto yy470
;
6862 case '\\': goto yy148
;
6866 #line 424 "src/parser.re"
6867 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6868 #line 6869 "src/parser.c"
6871 yych
= *(mrk
= ++cur
);
6936 case 0x7F: goto yy472
;
6937 case '\\': goto yy148
;
6941 #line 425 "src/parser.re"
6942 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6943 #line 6944 "src/parser.c"
6946 yych
= *(mrk
= ++cur
);
6949 case 'a': goto yy513
;
6954 yych
= *(mrk
= ++cur
);
6957 case 'l': goto yy514
;
6962 yych
= *(mrk
= ++cur
);
6965 case 'a': goto yy516
;
6970 yych
= *(mrk
= ++cur
);
7035 case 0x7F: goto yy477
;
7036 case '\\': goto yy148
;
7040 #line 438 "src/parser.re"
7041 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7042 #line 7043 "src/parser.c"
7045 yych
= *(mrk
= ++cur
);
7048 case 'e': goto yy517
;
7053 yych
= *(mrk
= ++cur
);
7056 case 'i': goto yy518
;
7061 yych
= *(mrk
= ++cur
);
7064 case 'g': goto yy519
;
7069 yych
= *(mrk
= ++cur
);
7071 case '_': goto yy521
;
7076 yych
= *(mrk
= ++cur
);
7078 case 'i': goto yy523
;
7083 yych
= *(mrk
= ++cur
);
7085 case 'n': goto yy524
;
7090 yych
= *(mrk
= ++cur
);
7092 case 'n': goto yy525
;
7097 yych
= *(mrk
= ++cur
);
7099 case 'r': goto yy526
;
7104 yych
= *(mrk
= ++cur
);
7169 case 0x7F: goto yy487
;
7170 case '\\': goto yy148
;
7174 #line 388 "src/parser.re"
7175 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7176 #line 7177 "src/parser.c"
7179 yych
= *(mrk
= ++cur
);
7244 case 0x7F: goto yy489
;
7245 case '\\': goto yy148
;
7246 default: goto yy527
;
7249 #line 367 "src/parser.re"
7250 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7251 #line 7252 "src/parser.c"
7254 yych
= *(mrk
= ++cur
);
7319 case 0x7F: goto yy491
;
7320 case '\\': goto yy148
;
7324 #line 390 "src/parser.re"
7325 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7326 #line 7327 "src/parser.c"
7329 yych
= *(mrk
= ++cur
);
7394 case 0x7F: goto yy493
;
7395 case '\\': goto yy148
;
7399 #line 374 "src/parser.re"
7400 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7401 #line 7402 "src/parser.c"
7404 yych
= *(mrk
= ++cur
);
7469 case 0x7F: goto yy495
;
7470 case '\\': goto yy148
;
7474 #line 377 "src/parser.re"
7475 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7476 #line 7477 "src/parser.c"
7479 yych
= *(mrk
= ++cur
);
7481 case 'f': goto yy529
;
7486 yych
= *(mrk
= ++cur
);
7488 case 'e': goto yy531
;
7493 yych
= *(mrk
= ++cur
);
7495 case 'l': goto yy532
;
7500 yych
= *(mrk
= ++cur
);
7565 case 0x7F: goto yy500
;
7566 case '\\': goto yy148
;
7570 #line 429 "src/parser.re"
7571 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7572 #line 7573 "src/parser.c"
7575 yych
= *(mrk
= ++cur
);
7578 case 'e': goto yy533
;
7583 yych
= *(mrk
= ++cur
);
7586 case 'k': goto yy535
;
7591 yych
= *(mrk
= ++cur
);
7656 case 0x7F: goto yy504
;
7657 case '\\': goto yy148
;
7661 #line 398 "src/parser.re"
7662 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7663 #line 7664 "src/parser.c"
7666 yych
= *(mrk
= ++cur
);
7669 case 'l': goto yy537
;
7674 yych
= *(mrk
= ++cur
);
7677 case 'n': goto yy539
;
7682 yych
= *(mrk
= ++cur
);
7747 case 0x7F: goto yy508
;
7748 case '\\': goto yy148
;
7749 case '_': goto yy541
;
7753 #line 402 "src/parser.re"
7754 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7755 #line 7756 "src/parser.c"
7758 yych
= *(mrk
= ++cur
);
7823 case 0x7F: goto yy510
;
7824 case '\\': goto yy148
;
7828 #line 426 "src/parser.re"
7829 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7830 #line 7831 "src/parser.c"
7833 yych
= *(mrk
= ++cur
);
7836 case 's': goto yy542
;
7841 yych
= *(mrk
= ++cur
);
7844 case 'e': goto yy543
;
7849 yych
= *(mrk
= ++cur
);
7852 case 'y': goto yy544
;
7857 yych
= *(mrk
= ++cur
);
7922 case 0x7F: goto yy515
;
7923 case '\\': goto yy148
;
7927 #line 440 "src/parser.re"
7928 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7929 #line 7930 "src/parser.c"
7932 yych
= *(mrk
= ++cur
);
7935 case 't': goto yy546
;
7940 yych
= *(mrk
= ++cur
);
7943 case 'c': goto yy548
;
7948 yych
= *(mrk
= ++cur
);
7951 case 'n': goto yy549
;
7956 yych
= *(mrk
= ++cur
);
8021 case 0x7F: goto yy520
;
8022 case '\\': goto yy148
;
8026 #line 400 "src/parser.re"
8027 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8028 #line 8029 "src/parser.c"
8031 yych
= *(mrk
= ++cur
);
8096 case 0x7F: goto yy522
;
8097 case '\\': goto yy148
;
8101 #line 372 "src/parser.re"
8102 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8103 #line 8104 "src/parser.c"
8106 yych
= *(mrk
= ++cur
);
8108 case 'b': goto yy550
;
8113 yych
= *(mrk
= ++cur
);
8115 case 's': goto yy551
;
8120 yych
= *(mrk
= ++cur
);
8122 case 'e': goto yy552
;
8127 yych
= *(mrk
= ++cur
);
8129 case 'i': goto yy554
;
8135 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8201 case 0x7F: goto yy55
;
8202 case '\\': goto yy148
;
8203 case 'o': goto yy555
;
8204 default: goto yy527
;
8208 yych
= *(mrk
= ++cur
);
8273 case 0x7F: goto yy530
;
8274 case '\\': goto yy148
;
8278 #line 376 "src/parser.re"
8279 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8280 #line 8281 "src/parser.c"
8283 yych
= *(mrk
= ++cur
);
8285 case 'd': goto yy557
;
8290 yych
= *(mrk
= ++cur
);
8292 case 'e': goto yy559
;
8297 yych
= *(mrk
= ++cur
);
8362 case 0x7F: goto yy534
;
8363 case '\\': goto yy148
;
8367 #line 408 "src/parser.re"
8368 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8369 #line 8370 "src/parser.c"
8372 yych
= *(mrk
= ++cur
);
8437 case 0x7F: goto yy536
;
8438 case '\\': goto yy148
;
8442 #line 412 "src/parser.re"
8443 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8444 #line 8445 "src/parser.c"
8447 yych
= *(mrk
= ++cur
);
8512 case 0x7F: goto yy538
;
8513 case '\\': goto yy148
;
8517 #line 428 "src/parser.re"
8518 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8519 #line 8520 "src/parser.c"
8522 yych
= *(mrk
= ++cur
);
8587 case 0x7F: goto yy540
;
8588 case '\\': goto yy148
;
8592 #line 414 "src/parser.re"
8593 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8594 #line 8595 "src/parser.c"
8597 yych
= *(mrk
= ++cur
);
8600 case 'n': goto yy561
;
8605 yych
= *(mrk
= ++cur
);
8608 case 'e': goto yy562
;
8613 yych
= *(mrk
= ++cur
);
8616 case 'r': goto yy563
;
8621 yych
= *(mrk
= ++cur
);
8686 case 0x7F: goto yy545
;
8687 case '\\': goto yy148
;
8691 #line 436 "src/parser.re"
8692 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8693 #line 8694 "src/parser.c"
8696 yych
= *(mrk
= ++cur
);
8761 case 0x7F: goto yy547
;
8762 case '\\': goto yy148
;
8766 #line 439 "src/parser.re"
8767 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8768 #line 8769 "src/parser.c"
8771 yych
= *(mrk
= ++cur
);
8774 case 't': goto yy564
;
8779 yych
= *(mrk
= ++cur
);
8782 case 'g': goto yy566
;
8787 yych
= *(mrk
= ++cur
);
8789 case 'u': goto yy568
;
8794 yych
= *(mrk
= ++cur
);
8796 case 'i': goto yy569
;
8801 yych
= *(mrk
= ++cur
);
8866 case 0x7F: goto yy553
;
8867 case '\\': goto yy148
;
8871 #line 369 "src/parser.re"
8872 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8873 #line 8874 "src/parser.c"
8876 yych
= *(mrk
= ++cur
);
8878 case 'c': goto yy570
;
8884 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8950 case 0x7F: goto yy55
;
8951 case '\\': goto yy148
;
8952 case 'n': goto yy571
;
8953 case 'o': goto yy555
;
8954 default: goto yy527
;
8958 yych
= *(mrk
= ++cur
);
9023 case 0x7F: goto yy558
;
9024 case '\\': goto yy148
;
9028 #line 389 "src/parser.re"
9029 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9030 #line 9031 "src/parser.c"
9033 yych
= *(mrk
= ++cur
);
9098 case 0x7F: goto yy560
;
9099 case '\\': goto yy148
;
9103 #line 373 "src/parser.re"
9104 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9105 #line 9106 "src/parser.c"
9108 yych
= *(mrk
= ++cur
);
9111 case 'e': goto yy572
;
9116 yych
= *(mrk
= ++cur
);
9119 case 'r': goto yy573
;
9124 yych
= *(mrk
= ++cur
);
9127 case 't': goto yy574
;
9132 yych
= *(mrk
= ++cur
);
9197 case 0x7F: goto yy565
;
9198 case '\\': goto yy148
;
9202 #line 435 "src/parser.re"
9203 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9204 #line 9205 "src/parser.c"
9207 yych
= *(mrk
= ++cur
);
9272 case 0x7F: goto yy567
;
9273 case '\\': goto yy148
;
9277 #line 437 "src/parser.re"
9278 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9279 #line 9280 "src/parser.c"
9282 yych
= *(mrk
= ++cur
);
9284 case 't': goto yy576
;
9289 yych
= *(mrk
= ++cur
);
9291 case 'o': goto yy577
;
9296 yych
= *(mrk
= ++cur
);
9298 case 't': goto yy578
;
9304 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9370 case 0x7F: goto yy55
;
9371 case '\\': goto yy148
;
9372 case 'c': goto yy580
;
9373 case 'o': goto yy555
;
9374 default: goto yy527
;
9378 yych
= *(mrk
= ++cur
);
9381 case 'x': goto yy581
;
9386 yych
= *(mrk
= ++cur
);
9389 case 't': goto yy582
;
9394 yych
= *(mrk
= ++cur
);
9459 case 0x7F: goto yy575
;
9460 case '\\': goto yy148
;
9464 #line 418 "src/parser.re"
9465 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9466 #line 9467 "src/parser.c"
9469 yych
= *(mrk
= ++cur
);
9471 case 'e': goto yy584
;
9476 yych
= *(mrk
= ++cur
);
9478 case 'n': goto yy585
;
9483 yych
= *(mrk
= ++cur
);
9548 case 0x7F: goto yy579
;
9549 case '\\': goto yy148
;
9553 #line 370 "src/parser.re"
9554 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9555 #line 9556 "src/parser.c"
9559 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9625 case 0x7F: goto yy55
;
9626 case '\\': goto yy148
;
9627 case 'e': goto yy586
;
9628 case 'o': goto yy555
;
9629 default: goto yy527
;
9633 yych
= *(mrk
= ++cur
);
9636 case 't': goto yy588
;
9641 yych
= *(mrk
= ++cur
);
9706 case 0x7F: goto yy583
;
9707 case '\\': goto yy148
;
9711 #line 419 "src/parser.re"
9712 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9713 #line 9714 "src/parser.c"
9716 yych
= *(mrk
= ++cur
);
9718 case '_': goto yy590
;
9723 yych
= *(mrk
= ++cur
);
9725 case '_': goto yy591
;
9731 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9797 case 0x7F: goto yy587
;
9798 case '\\': goto yy148
;
9799 case 'o': goto yy555
;
9800 default: goto yy527
;
9803 #line 368 "src/parser.re"
9804 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9805 #line 9806 "src/parser.c"
9808 yych
= *(mrk
= ++cur
);
9873 case 0x7F: goto yy589
;
9874 case '\\': goto yy148
;
9878 #line 403 "src/parser.re"
9879 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9880 #line 9881 "src/parser.c"
9883 yych
= *(mrk
= ++cur
);
9885 case '_': goto yy592
;
9890 yych
= *(mrk
= ++cur
);
9892 case '_': goto yy593
;
9897 yych
= *(mrk
= ++cur
);
9901 case ' ': goto yy595
;
9902 case '(': goto yy597
;
9907 yych
= *(mrk
= ++cur
);
9972 case 0x7F: goto yy594
;
9973 case '\\': goto yy148
;
9977 #line 371 "src/parser.re"
9978 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
9979 #line 9980 "src/parser.c"
9982 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9987 case ' ': goto yy595
;
9988 case '(': goto yy597
;
9989 default: goto yy114
;
9994 case '(': goto yy598
;
9995 default: goto yy114
;
9999 #line 445 "src/parser.re"
10000 { parens
= 2; goto cpp_attribute
; }
10001 #line 10002 "src/parser.c"
10003 #line 451 "src/parser.re"
10008 #line 10009 "src/parser.c"
10010 unsigned char yych
;
10011 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10015 case '\r': goto yy604
;
10016 case '\'': goto yy606
;
10017 case '\\': goto yy608
;
10018 default: goto yy602
;
10022 #line 469 "src/parser.re"
10023 { escaped
= false; goto character
; }
10024 #line 10025 "src/parser.c"
10027 #line 456 "src/parser.re"
10028 { NEWLINE(); goto character
; }
10029 #line 10030 "src/parser.c"
10032 #line 458 "src/parser.re"
10039 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10041 token
->flags
= char_width
;
10044 #line 10045 "src/parser.c"
10047 #line 457 "src/parser.re"
10048 { escaped
= !escaped
; goto character
; }
10049 #line 10050 "src/parser.c"
10051 #line 471 "src/parser.re"
10056 #line 10057 "src/parser.c"
10058 unsigned char yych
;
10059 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10063 case '\r': goto yy614
;
10064 case '"': goto yy616
;
10065 case '\\': goto yy618
;
10066 default: goto yy612
;
10070 #line 489 "src/parser.re"
10071 { escaped
= false; goto string
; }
10072 #line 10073 "src/parser.c"
10075 #line 476 "src/parser.re"
10076 { NEWLINE(); goto string
; }
10077 #line 10078 "src/parser.c"
10080 #line 478 "src/parser.re"
10087 NEWTOKEN(PSI_T_QUOTED_STRING
);
10089 token
->flags
= char_width
;
10092 #line 10093 "src/parser.c"
10095 #line 477 "src/parser.re"
10096 { escaped
= !escaped
; goto string
; }
10097 #line 10098 "src/parser.c"
10099 #line 491 "src/parser.re"
10104 #line 10105 "src/parser.c"
10106 unsigned char yych
;
10107 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10111 case '\r': goto yy624
;
10112 case '*': goto yy626
;
10113 default: goto yy622
;
10118 #line 498 "src/parser.re"
10120 #line 10121 "src/parser.c"
10123 #line 496 "src/parser.re"
10124 { NEWLINE(); goto comment
; }
10125 #line 10126 "src/parser.c"
10129 case '/': goto yy627
;
10130 default: goto yy623
;
10134 #line 497 "src/parser.re"
10135 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10136 #line 10137 "src/parser.c"
10138 #line 500 "src/parser.re"
10143 #line 10144 "src/parser.c"
10145 unsigned char yych
;
10146 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10150 case '\r': goto yy633
;
10151 default: goto yy631
;
10155 #line 506 "src/parser.re"
10156 { goto comment_sl
; }
10157 #line 10158 "src/parser.c"
10160 #line 505 "src/parser.re"
10161 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10162 #line 10163 "src/parser.c"
10164 #line 508 "src/parser.re"
10170 #line 10171 "src/parser.c"
10172 unsigned char yych
;
10173 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10177 case '\r': goto yy639
;
10178 case '(': goto yy641
;
10179 case ')': goto yy643
;
10180 default: goto yy637
;
10184 #line 517 "src/parser.re"
10185 { goto cpp_attribute
; }
10186 #line 10187 "src/parser.c"
10189 #line 516 "src/parser.re"
10190 { NEWLINE(); goto cpp_attribute
; }
10191 #line 10192 "src/parser.c"
10194 #line 514 "src/parser.re"
10195 { ++parens
; goto cpp_attribute
; }
10196 #line 10197 "src/parser.c"
10199 #line 515 "src/parser.re"
10200 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10201 #line 10202 "src/parser.c"
10203 #line 519 "src/parser.re"
10207 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10208 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10209 psi_plist_free(tokens
);
10214 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);