1 /* Generated by re2c 1.0.2 on Thu Sep 7 14:09:09 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 455 "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 454 "src/parser.re"
422 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
423 #line 424 "src/parser.c"
426 #line 453 "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 448 "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 'i': goto yy203
;
1271 case 'n': goto yy204
;
1276 yych
= *(mrk
= ++cur
);
1278 case 'o': goto yy205
;
1283 #line 338 "src/parser.re"
1284 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1285 #line 1286 "src/parser.c"
1289 case '|': goto yy206
;
1293 #line 356 "src/parser.re"
1294 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1295 #line 1296 "src/parser.c"
1298 #line 339 "src/parser.re"
1299 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1300 #line 1301 "src/parser.c"
1303 #line 348 "src/parser.re"
1304 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1305 #line 1306 "src/parser.c"
1308 #line 342 "src/parser.re"
1309 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1310 #line 1311 "src/parser.c"
1313 #line 331 "src/parser.re"
1314 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1315 #line 1316 "src/parser.c"
1318 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1385 case 0x7F: goto yy110
;
1386 default: goto yy108
;
1389 #line 450 "src/parser.re"
1390 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1391 #line 1392 "src/parser.c"
1394 #line 344 "src/parser.re"
1395 { NEWTOKEN(PSI_T_AND
); goto start
; }
1396 #line 1397 "src/parser.c"
1409 case '9': goto yy116
;
1410 default: goto yy114
;
1425 case 10: goto yy241
;
1426 case 11: goto yy243
;
1427 case 12: goto yy252
;
1428 case 13: goto yy272
;
1429 case 14: goto yy305
;
1430 case 15: goto yy307
;
1431 case 16: goto yy313
;
1432 case 17: goto yy321
;
1433 case 18: goto yy333
;
1434 case 19: goto yy341
;
1435 case 20: goto yy345
;
1436 case 21: goto yy352
;
1437 case 22: goto yy354
;
1438 case 23: goto yy358
;
1439 case 24: goto yy365
;
1440 case 25: goto yy367
;
1441 case 26: goto yy378
;
1442 case 27: goto yy381
;
1443 case 28: goto yy388
;
1444 case 29: goto yy391
;
1445 case 30: goto yy393
;
1446 case 31: goto yy395
;
1447 case 32: goto yy399
;
1448 case 33: goto yy404
;
1449 case 34: goto yy422
;
1450 case 35: goto yy430
;
1451 case 36: goto yy433
;
1452 case 37: goto yy440
;
1453 case 38: goto yy450
;
1454 case 39: goto yy454
;
1455 case 40: goto yy459
;
1456 case 41: goto yy461
;
1457 case 42: goto yy465
;
1458 case 43: goto yy468
;
1459 case 44: goto yy470
;
1460 case 45: goto yy472
;
1461 case 46: goto yy477
;
1462 case 47: goto yy479
;
1463 case 48: goto yy481
;
1464 case 49: goto yy483
;
1465 case 50: goto yy485
;
1466 case 51: goto yy490
;
1467 case 52: goto yy500
;
1468 case 53: goto yy505
;
1469 case 54: goto yy507
;
1470 case 55: goto yy509
;
1471 case 56: goto yy511
;
1472 case 57: goto yy513
;
1473 case 58: goto yy522
;
1474 case 59: goto yy526
;
1475 case 60: goto yy530
;
1476 case 61: goto yy532
;
1477 case 62: goto yy537
;
1478 case 63: goto yy542
;
1479 case 64: goto yy544
;
1480 case 65: goto yy550
;
1481 case 66: goto yy552
;
1482 case 67: goto yy554
;
1483 case 68: goto yy558
;
1484 case 69: goto yy563
;
1485 case 70: goto yy567
;
1486 case 71: goto yy569
;
1487 case 72: goto yy571
;
1488 case 73: goto yy573
;
1489 case 74: goto yy578
;
1490 case 75: goto yy580
;
1491 case 76: goto yy586
;
1492 case 77: goto yy591
;
1493 case 78: goto yy593
;
1494 case 79: goto yy595
;
1495 case 80: goto yy597
;
1496 case 81: goto yy599
;
1497 case 82: goto yy604
;
1498 case 83: goto yy606
;
1499 case 84: goto yy614
;
1500 case 85: goto yy618
;
1501 case 86: goto yy622
;
1502 case 87: goto yy626
;
1503 case 88: goto yy628
;
1504 default: goto yy633
;
1509 case '.': goto yy208
;
1510 default: goto yy114
;
1515 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1527 case '9': goto yy116
;
1529 case 'd': goto yy210
;
1531 case 'f': goto yy211
;
1533 case 'l': goto yy213
;
1534 default: goto yy118
;
1537 #line 314 "src/parser.re"
1538 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1539 #line 1540 "src/parser.c"
1542 #line 328 "src/parser.re"
1544 #line 1545 "src/parser.c"
1547 #line 329 "src/parser.re"
1548 { goto comment_sl
; }
1549 #line 1550 "src/parser.c"
1553 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1565 case '9': goto yy123
;
1567 case 'd': goto yy210
;
1569 case 'e': goto yy127
;
1571 case 'f': goto yy211
;
1573 case 'l': goto yy213
;
1574 default: goto yy118
;
1578 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1589 case '7': goto yy125
;
1591 case 'l': goto yy128
;
1593 case 'u': goto yy130
;
1600 case '-': goto yy113
;
1610 case '9': goto yy116
;
1611 default: goto yy114
;
1615 yych
= *(mrk
= ++cur
);
1618 case 'l': goto yy215
;
1620 case 'u': goto yy216
;
1621 default: goto yy129
;
1625 #line 310 "src/parser.re"
1626 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1627 #line 1628 "src/parser.c"
1632 case 'l': goto yy218
;
1633 default: goto yy131
;
1637 #line 309 "src/parser.re"
1638 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1639 #line 1640 "src/parser.c"
1664 case 'f': goto yy219
;
1665 default: goto yy114
;
1669 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1737 case 'z': goto yy133
;
1738 case '>': goto yy221
;
1739 default: goto yy114
;
1743 #line 358 "src/parser.re"
1744 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1745 #line 1746 "src/parser.c"
1748 #line 360 "src/parser.re"
1749 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1750 #line 1751 "src/parser.c"
1753 #line 343 "src/parser.re"
1754 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1755 #line 1756 "src/parser.c"
1758 #line 361 "src/parser.re"
1759 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1760 #line 1761 "src/parser.c"
1763 #line 359 "src/parser.re"
1764 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1765 #line 1766 "src/parser.c"
1768 yych
= *(mrk
= ++cur
);
1771 case 'r': goto yy223
;
1776 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1853 case 0x7F: goto yy114
;
1854 default: goto yy182
;
1858 yych
= *(mrk
= ++cur
);
1861 case 'o': goto yy224
;
1866 yych
= *(mrk
= ++cur
);
1869 case 'l': goto yy225
;
1874 yych
= *(mrk
= ++cur
);
1877 case 'u': goto yy226
;
1882 yych
= *(mrk
= ++cur
);
1885 case 'f': goto yy227
;
1890 yych
= *(mrk
= ++cur
);
1893 case 'i': goto yy228
;
1895 case 's': goto yy229
;
1900 yych
= *(mrk
= ++cur
);
1903 case 'd': goto yy230
;
1908 yych
= *(mrk
= ++cur
);
1911 case 'r': goto yy231
;
1916 yych
= *(mrk
= ++cur
);
1919 case 'l': goto yy232
;
1924 yych
= *(mrk
= ++cur
);
1927 case 'o': goto yy233
;
1932 yych
= *(mrk
= ++cur
);
1935 case 'e': goto yy234
;
1940 yych
= *(mrk
= ++cur
);
1943 case 'n': goto yy235
;
1948 yych
= *(mrk
= ++cur
);
2013 case 0x7F: goto yy159
;
2015 case 'd': goto yy236
;
2017 case 'n': goto yy237
;
2018 case '\\': goto yy146
;
2022 #line 399 "src/parser.re"
2023 { NEWTOKEN(PSI_T_IF
); goto start
; }
2024 #line 2025 "src/parser.c"
2027 yych
= *(mrk
= ++cur
);
2030 case 'c': goto yy238
;
2032 case 't': goto yy239
;
2038 #line 326 "src/parser.re"
2039 { char_width
= SIZEOF_WCHAR_T
/8; }
2040 #line 2041 "src/parser.c"
2043 yych
= *(mrk
= ++cur
);
2046 case 't': goto yy240
;
2051 yych
= *(mrk
= ++cur
);
2054 case 'b': goto yy242
;
2059 yych
= *(mrk
= ++cur
);
2062 case 'x': goto yy244
;
2067 yych
= *(mrk
= ++cur
);
2070 case 'l': goto yy245
;
2075 yych
= *(mrk
= ++cur
);
2078 case 'j': goto yy246
;
2083 yych
= *(mrk
= ++cur
);
2086 case 't': goto yy247
;
2091 yych
= *(mrk
= ++cur
);
2094 case 's': goto yy248
;
2099 yych
= *(mrk
= ++cur
);
2102 case 'e': goto yy249
;
2107 yych
= *(mrk
= ++cur
);
2110 case 't': goto yy250
;
2115 yych
= *(mrk
= ++cur
);
2118 case 't': goto yy251
;
2123 yych
= *(mrk
= ++cur
);
2126 case 'a': goto yy253
;
2128 case 'r': goto yy254
;
2133 yych
= *(mrk
= ++cur
);
2136 case 'm': goto yy255
;
2141 yych
= *(mrk
= ++cur
);
2143 case '_': goto yy256
;
2148 yych
= *(mrk
= ++cur
);
2151 case 'u': goto yy257
;
2157 #line 325 "src/parser.re"
2159 #line 2160 "src/parser.c"
2162 yych
= *(mrk
= ++cur
);
2165 case 'd': goto yy258
;
2170 yych
= *(mrk
= ++cur
);
2173 case 'r': goto yy259
;
2178 yych
= *(mrk
= ++cur
);
2181 case 'a': goto yy260
;
2187 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2253 case 0x7F: goto yy184
;
2254 case '\\': goto yy146
;
2255 default: goto yy182
;
2258 #line 449 "src/parser.re"
2259 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2260 #line 2261 "src/parser.c"
2263 yych
= *(mrk
= ++cur
);
2265 case 'a': goto yy261
;
2266 case 'e': goto yy262
;
2267 case 'i': goto yy263
;
2268 case 'r': goto yy264
;
2273 yych
= *(mrk
= ++cur
);
2275 case 'O': goto yy224
;
2276 case 'o': goto yy265
;
2281 yych
= *(mrk
= ++cur
);
2283 case 'a': goto yy266
;
2288 yych
= *(mrk
= ++cur
);
2291 case 'u': goto yy226
;
2292 case 'n': goto yy267
;
2297 yych
= *(mrk
= ++cur
);
2299 case 'u': goto yy268
;
2304 yych
= *(mrk
= ++cur
);
2307 case 'd': goto yy230
;
2308 case 'u': goto yy269
;
2313 yych
= *(mrk
= ++cur
);
2315 case 'O': goto yy233
;
2316 case 'o': goto yy270
;
2321 yych
= *(mrk
= ++cur
);
2324 case 'c': goto yy238
;
2325 case 'T': goto yy239
;
2326 case 't': goto yy271
;
2331 yych
= *(mrk
= ++cur
);
2334 case 'b': goto yy242
;
2335 case 'n': goto yy273
;
2340 yych
= *(mrk
= ++cur
);
2342 case 'n': goto yy274
;
2347 yych
= *(mrk
= ++cur
);
2350 case 'e': goto yy249
;
2351 case 'a': goto yy275
;
2356 yych
= *(mrk
= ++cur
);
2358 case 'o': goto yy276
;
2363 yych
= *(mrk
= ++cur
);
2365 case 'g': goto yy277
;
2366 case 'z': goto yy278
;
2371 yych
= *(mrk
= ++cur
);
2374 case 'a': goto yy253
;
2375 case 'R': goto yy254
;
2376 case 'r': goto yy279
;
2381 yych
= *(mrk
= ++cur
);
2383 case 'p': goto yy280
;
2389 #line 324 "src/parser.re"
2391 #line 2392 "src/parser.c"
2394 yych
= *(mrk
= ++cur
);
2396 case '"': goto yy281
;
2401 yych
= *(mrk
= ++cur
);
2403 case 'n': goto yy283
;
2408 yych
= *(mrk
= ++cur
);
2411 case 'd': goto yy258
;
2412 case 'i': goto yy284
;
2413 case 's': goto yy285
;
2418 yych
= *(mrk
= ++cur
);
2420 case 'i': goto yy286
;
2421 case 'l': goto yy287
;
2426 #line 345 "src/parser.re"
2427 { NEWTOKEN(PSI_T_OR
); goto start
; }
2428 #line 2429 "src/parser.c"
2431 #line 365 "src/parser.re"
2432 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2433 #line 2434 "src/parser.c"
2438 case 'd': goto yy288
;
2440 case 'f': goto yy290
;
2442 case 'l': goto yy292
;
2443 default: goto yy114
;
2448 #line 315 "src/parser.re"
2449 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2450 #line 2451 "src/parser.c"
2454 #line 316 "src/parser.re"
2455 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2456 #line 2457 "src/parser.c"
2461 case 'u': goto yy294
;
2462 default: goto yy114
;
2468 #line 311 "src/parser.re"
2469 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2470 #line 2471 "src/parser.c"
2475 case 'l': goto yy294
;
2476 default: goto yy217
;
2481 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2484 case '.': goto yy296
;
2506 case 'f': goto yy219
;
2508 case 'l': goto yy128
;
2510 case 'p': goto yy127
;
2512 case 'u': goto yy130
;
2517 #line 451 "src/parser.re"
2518 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2519 #line 2520 "src/parser.c"
2522 yych
= *(mrk
= ++cur
);
2525 case 'a': goto yy298
;
2527 case 'v': goto yy299
;
2532 yych
= *(mrk
= ++cur
);
2535 case 'l': goto yy300
;
2540 yych
= *(mrk
= ++cur
);
2543 case 'l': goto yy301
;
2548 yych
= *(mrk
= ++cur
);
2551 case 'n': goto yy302
;
2556 yych
= *(mrk
= ++cur
);
2559 case 'i': goto yy303
;
2564 yych
= *(mrk
= ++cur
);
2567 case 'f': goto yy304
;
2572 yych
= *(mrk
= ++cur
);
2575 case 'e': goto yy306
;
2580 yych
= *(mrk
= ++cur
);
2583 case 'i': goto yy308
;
2588 yych
= *(mrk
= ++cur
);
2591 case 'o': goto yy309
;
2596 yych
= *(mrk
= ++cur
);
2599 case 's': goto yy310
;
2604 yych
= *(mrk
= ++cur
);
2607 case 'a': goto yy311
;
2612 yych
= *(mrk
= ++cur
);
2615 case 'e': goto yy312
;
2620 yych
= *(mrk
= ++cur
);
2623 case 'c': goto yy314
;
2628 yych
= *(mrk
= ++cur
);
2631 case 'e': goto yy315
;
2636 yych
= *(mrk
= ++cur
);
2639 case 'd': goto yy316
;
2644 yych
= *(mrk
= ++cur
);
2647 case 'l': goto yy317
;
2652 yych
= *(mrk
= ++cur
);
2655 case 'v': goto yy318
;
2660 yych
= *(mrk
= ++cur
);
2725 case 0x7F: goto yy241
;
2726 case '\\': goto yy146
;
2730 #line 424 "src/parser.re"
2731 { NEWTOKEN(PSI_T_LET
); goto start
; }
2732 #line 2733 "src/parser.c"
2735 yych
= *(mrk
= ++cur
);
2800 case 0x7F: goto yy243
;
2801 case '\\': goto yy146
;
2805 #line 423 "src/parser.re"
2806 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2807 #line 2808 "src/parser.c"
2810 yych
= *(mrk
= ++cur
);
2813 case 'e': goto yy319
;
2818 yych
= *(mrk
= ++cur
);
2821 case 'l': goto yy320
;
2826 yych
= *(mrk
= ++cur
);
2829 case 'e': goto yy322
;
2831 case 'v': goto yy323
;
2836 yych
= *(mrk
= ++cur
);
2839 case 'h': goto yy324
;
2844 yych
= *(mrk
= ++cur
);
2847 case 't': goto yy325
;
2852 yych
= *(mrk
= ++cur
);
2854 case '_': goto yy326
;
2859 yych
= *(mrk
= ++cur
);
2862 case 'u': goto yy327
;
2867 yych
= *(mrk
= ++cur
);
2932 case 0x7F: goto yy252
;
2933 case '\\': goto yy146
;
2937 #line 425 "src/parser.re"
2938 { NEWTOKEN(PSI_T_SET
); goto start
; }
2939 #line 2940 "src/parser.c"
2942 yych
= *(mrk
= ++cur
);
2945 case 't': goto yy328
;
2950 yych
= *(mrk
= ++cur
);
2953 case 'i': goto yy329
;
2955 case 'l': goto yy330
;
2957 case 'v': goto yy331
;
2962 yych
= *(mrk
= ++cur
);
2965 case 'p': goto yy332
;
2970 yych
= *(mrk
= ++cur
);
2973 case 'a': goto yy334
;
2975 case 'b': goto yy335
;
2977 case 'f': goto yy336
;
2979 case 'i': goto yy337
;
2981 case 'o': goto yy338
;
2983 case 's': goto yy339
;
2988 yych
= *(mrk
= ++cur
);
2991 case 'e': goto yy340
;
2996 yych
= *(mrk
= ++cur
);
2999 case 'e': goto yy342
;
3004 yych
= *(mrk
= ++cur
);
3007 case 'n': goto yy343
;
3012 yych
= *(mrk
= ++cur
);
3015 case 'l': goto yy344
;
3020 yych
= *(mrk
= ++cur
);
3022 case 's': goto yy346
;
3023 case 't': goto yy347
;
3028 yych
= *(mrk
= ++cur
);
3030 case 'x': goto yy348
;
3035 yych
= *(mrk
= ++cur
);
3037 case 'n': goto yy349
;
3042 yych
= *(mrk
= ++cur
);
3044 case 'e': goto yy350
;
3049 yych
= *(mrk
= ++cur
);
3051 case 'L': goto yy300
;
3052 case 'l': goto yy351
;
3057 yych
= *(mrk
= ++cur
);
3059 case 'r': goto yy353
;
3064 yych
= *(mrk
= ++cur
);
3066 case 's': goto yy355
;
3071 yych
= *(mrk
= ++cur
);
3073 case 'b': goto yy356
;
3078 yych
= *(mrk
= ++cur
);
3080 case 'm': goto yy357
;
3085 yych
= *(mrk
= ++cur
);
3087 case 'A': goto yy311
;
3088 case 'a': goto yy359
;
3093 yych
= *(mrk
= ++cur
);
3158 case 0x7F: goto yy272
;
3159 case '1': goto yy360
;
3160 case '3': goto yy361
;
3161 case '6': goto yy362
;
3162 case '8': goto yy363
;
3164 case 'v': goto yy318
;
3165 case '\\': goto yy146
;
3169 #line 385 "src/parser.re"
3170 { NEWTOKEN(PSI_T_INT
); goto start
; }
3171 #line 3172 "src/parser.c"
3174 yych
= *(mrk
= ++cur
);
3176 case 'e': goto yy364
;
3181 yych
= *(mrk
= ++cur
);
3183 case 'g': goto yy366
;
3188 yych
= *(mrk
= ++cur
);
3190 case 'g': goto yy368
;
3195 yych
= *(mrk
= ++cur
);
3197 case 'r': goto yy369
;
3202 yych
= *(mrk
= ++cur
);
3204 case 'n': goto yy370
;
3209 yych
= *(mrk
= ++cur
);
3211 case 'e': goto yy371
;
3216 yych
= *(mrk
= ++cur
);
3219 case 'i': goto yy329
;
3221 case 'l': goto yy330
;
3223 case 'v': goto yy331
;
3224 case 'u': goto yy372
;
3229 yych
= *(mrk
= ++cur
);
3231 case 'e': goto yy373
;
3237 #line 323 "src/parser.re"
3239 #line 3240 "src/parser.c"
3242 yych
= *(mrk
= ++cur
);
3244 case 't': goto yy374
;
3249 yych
= *(mrk
= ++cur
);
3251 case 'o': goto yy375
;
3256 yych
= *(mrk
= ++cur
);
3258 case 'i': goto yy376
;
3263 yych
= *(mrk
= ++cur
);
3265 case 'd': goto yy377
;
3270 yych
= *(mrk
= ++cur
);
3272 case 'a': goto yy379
;
3278 #line 318 "src/parser.re"
3279 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3280 #line 3281 "src/parser.c"
3284 #line 317 "src/parser.re"
3285 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3286 #line 3287 "src/parser.c"
3290 #line 319 "src/parser.re"
3291 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3292 #line 3293 "src/parser.c"
3296 #line 312 "src/parser.re"
3297 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3298 #line 3299 "src/parser.c"
3301 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3325 case 'f': goto yy296
;
3327 case 'p': goto yy127
;
3328 default: goto yy114
;
3332 yych
= *(mrk
= ++cur
);
3335 case 'y': goto yy380
;
3340 yych
= *(mrk
= ++cur
);
3343 case 'a': goto yy382
;
3348 yych
= *(mrk
= ++cur
);
3351 case 'v': goto yy383
;
3356 yych
= *(mrk
= ++cur
);
3359 case 'a': goto yy384
;
3361 case 'b': goto yy385
;
3363 case 'o': goto yy386
;
3368 yych
= *(mrk
= ++cur
);
3371 case 't': goto yy387
;
3376 yych
= *(mrk
= ++cur
);
3379 case 'n': goto yy389
;
3384 yych
= *(mrk
= ++cur
);
3449 case 0x7F: goto yy305
;
3450 case '\\': goto yy146
;
3454 #line 403 "src/parser.re"
3455 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3456 #line 3457 "src/parser.c"
3459 yych
= *(mrk
= ++cur
);
3524 case 0x7F: goto yy307
;
3525 case '\\': goto yy146
;
3529 #line 402 "src/parser.re"
3530 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3531 #line 3532 "src/parser.c"
3534 yych
= *(mrk
= ++cur
);
3537 case 'f': goto yy390
;
3542 yych
= *(mrk
= ++cur
);
3545 case 'r': goto yy392
;
3550 yych
= *(mrk
= ++cur
);
3553 case 'e': goto yy394
;
3558 yych
= *(mrk
= ++cur
);
3561 case 't': goto yy396
;
3566 yych
= *(mrk
= ++cur
);
3631 case 0x7F: goto yy313
;
3632 case '\\': goto yy146
;
3636 #line 429 "src/parser.re"
3637 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3638 #line 3639 "src/parser.c"
3641 yych
= *(mrk
= ++cur
);
3644 case 't': goto yy397
;
3649 yych
= *(mrk
= ++cur
);
3652 case 'f': goto yy398
;
3657 yych
= *(mrk
= ++cur
);
3660 case 'e': goto yy400
;
3665 yych
= *(mrk
= ++cur
);
3668 case 'u': goto yy401
;
3673 yych
= *(mrk
= ++cur
);
3676 case 'a': goto yy402
;
3681 yych
= *(mrk
= ++cur
);
3684 case 'd': goto yy403
;
3689 yych
= *(mrk
= ++cur
);
3754 case 0x7F: goto yy321
;
3755 case '\\': goto yy146
;
3759 #line 414 "src/parser.re"
3760 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3761 #line 3762 "src/parser.c"
3764 yych
= *(mrk
= ++cur
);
3767 case 'c': goto yy405
;
3772 yych
= *(mrk
= ++cur
);
3775 case 'a': goto yy406
;
3780 yych
= *(mrk
= ++cur
);
3783 case 'v': goto yy407
;
3788 yych
= *(mrk
= ++cur
);
3790 case '_': goto yy408
;
3795 yych
= *(mrk
= ++cur
);
3798 case 'a': goto yy409
;
3803 yych
= *(mrk
= ++cur
);
3806 case 'r': goto yy410
;
3811 yych
= *(mrk
= ++cur
);
3814 case 'i': goto yy411
;
3819 yych
= *(mrk
= ++cur
);
3822 case 'n': goto yy412
;
3827 yych
= *(mrk
= ++cur
);
3830 case 'e': goto yy413
;
3835 yych
= *(mrk
= ++cur
);
3838 case 'a': goto yy414
;
3843 yych
= *(mrk
= ++cur
);
3908 case 0x7F: goto yy333
;
3909 case '\\': goto yy146
;
3913 #line 430 "src/parser.re"
3914 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3915 #line 3916 "src/parser.c"
3918 yych
= *(mrk
= ++cur
);
3921 case 'r': goto yy415
;
3926 yych
= *(mrk
= ++cur
);
3929 case 'o': goto yy416
;
3934 yych
= *(mrk
= ++cur
);
3937 case 'l': goto yy417
;
3942 yych
= *(mrk
= ++cur
);
3945 case 'n': goto yy418
;
3950 yych
= *(mrk
= ++cur
);
3953 case 'b': goto yy419
;
3958 yych
= *(mrk
= ++cur
);
3961 case 't': goto yy420
;
3966 yych
= *(mrk
= ++cur
);
4031 case 0x7F: goto yy341
;
4032 case '\\': goto yy146
;
4036 #line 412 "src/parser.re"
4037 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4038 #line 4039 "src/parser.c"
4041 yych
= *(mrk
= ++cur
);
4044 case 'f': goto yy421
;
4049 yych
= *(mrk
= ++cur
);
4052 case 'i': goto yy423
;
4057 yych
= *(mrk
= ++cur
);
4122 case 0x7F: goto yy345
;
4123 case '\\': goto yy146
;
4127 #line 439 "src/parser.re"
4128 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4129 #line 4130 "src/parser.c"
4132 yych
= *(mrk
= ++cur
);
4134 case 'm': goto yy424
;
4139 yych
= *(mrk
= ++cur
);
4141 case 't': goto yy425
;
4146 yych
= *(mrk
= ++cur
);
4148 case 't': goto yy426
;
4153 yych
= *(mrk
= ++cur
);
4155 case 'l': goto yy427
;
4160 yych
= *(mrk
= ++cur
);
4162 case 's': goto yy428
;
4167 yych
= *(mrk
= ++cur
);
4232 case 0x7F: goto yy352
;
4234 case 'v': goto yy383
;
4235 case '\\': goto yy146
;
4239 #line 382 "src/parser.re"
4240 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4241 #line 4242 "src/parser.c"
4244 yych
= *(mrk
= ++cur
);
4309 case 0x7F: goto yy354
;
4310 case '\\': goto yy146
;
4314 #line 383 "src/parser.re"
4315 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4316 #line 4317 "src/parser.c"
4319 yych
= *(mrk
= ++cur
);
4321 case 't': goto yy429
;
4326 yych
= *(mrk
= ++cur
);
4328 case 'l': goto yy431
;
4333 yych
= *(mrk
= ++cur
);
4398 case 0x7F: goto yy358
;
4399 case '\\': goto yy146
;
4403 #line 379 "src/parser.re"
4404 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4405 #line 4406 "src/parser.c"
4408 yych
= *(mrk
= ++cur
);
4410 case 'T': goto yy396
;
4411 case 't': goto yy432
;
4416 yych
= *(mrk
= ++cur
);
4418 case '6': goto yy434
;
4423 yych
= *(mrk
= ++cur
);
4425 case '2': goto yy435
;
4430 yych
= *(mrk
= ++cur
);
4432 case '4': goto yy436
;
4437 yych
= *(mrk
= ++cur
);
4439 case '_': goto yy437
;
4444 yych
= *(mrk
= ++cur
);
4509 case 0x7F: goto yy365
;
4510 case '\\': goto yy146
;
4514 #line 375 "src/parser.re"
4515 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4516 #line 4517 "src/parser.c"
4519 yych
= *(mrk
= ++cur
);
4584 case 0x7F: goto yy367
;
4585 case '\\': goto yy146
;
4589 #line 386 "src/parser.re"
4590 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4591 #line 4592 "src/parser.c"
4594 yych
= *(mrk
= ++cur
);
4596 case 'm': goto yy438
;
4601 yych
= *(mrk
= ++cur
);
4603 case 't': goto yy439
;
4608 yych
= *(mrk
= ++cur
);
4610 case 'e': goto yy441
;
4615 yych
= *(mrk
= ++cur
);
4617 case 'o': goto yy442
;
4622 yych
= *(mrk
= ++cur
);
4624 case 'c': goto yy443
;
4629 yych
= *(mrk
= ++cur
);
4631 case 'd': goto yy444
;
4636 yych
= *(mrk
= ++cur
);
4638 case '1': goto yy445
;
4639 case '3': goto yy446
;
4640 case '6': goto yy447
;
4641 case '8': goto yy448
;
4646 yych
= *(mrk
= ++cur
);
4648 case 'n': goto yy449
;
4653 yych
= *(mrk
= ++cur
);
4655 case 'g': goto yy451
;
4660 yych
= *(mrk
= ++cur
);
4725 case 0x7F: goto yy378
;
4726 case '\\': goto yy146
;
4730 #line 381 "src/parser.re"
4731 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4732 #line 4733 "src/parser.c"
4735 yych
= *(mrk
= ++cur
);
4737 case 't': goto yy452
;
4742 yych
= *(mrk
= ++cur
);
4807 case 0x7F: goto yy381
;
4808 case '\\': goto yy146
;
4812 #line 418 "src/parser.re"
4813 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4814 #line 4815 "src/parser.c"
4817 yych
= *(mrk
= ++cur
);
4820 case 'l': goto yy453
;
4825 yych
= *(mrk
= ++cur
);
4828 case 'a': goto yy455
;
4833 yych
= *(mrk
= ++cur
);
4836 case 'b': goto yy456
;
4841 yych
= *(mrk
= ++cur
);
4844 case 'a': goto yy457
;
4849 yych
= *(mrk
= ++cur
);
4852 case 'c': goto yy458
;
4857 yych
= *(mrk
= ++cur
);
4922 case 0x7F: goto yy388
;
4923 case '\\': goto yy146
;
4927 #line 440 "src/parser.re"
4928 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4929 #line 4930 "src/parser.c"
4932 yych
= *(mrk
= ++cur
);
4935 case 'e': goto yy460
;
4940 yych
= *(mrk
= ++cur
);
5005 case 0x7F: goto yy391
;
5006 case '\\': goto yy146
;
5010 #line 404 "src/parser.re"
5011 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5012 #line 5013 "src/parser.c"
5015 yych
= *(mrk
= ++cur
);
5080 case 0x7F: goto yy393
;
5081 case '\\': goto yy146
;
5085 #line 409 "src/parser.re"
5086 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5087 #line 5088 "src/parser.c"
5090 yych
= *(mrk
= ++cur
);
5155 case 0x7F: goto yy395
;
5156 case '\\': goto yy146
;
5160 #line 413 "src/parser.re"
5161 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5162 #line 5163 "src/parser.c"
5165 yych
= *(mrk
= ++cur
);
5168 case 'v': goto yy462
;
5173 yych
= *(mrk
= ++cur
);
5176 case 'i': goto yy463
;
5181 yych
= *(mrk
= ++cur
);
5246 case 0x7F: goto yy399
;
5247 case '\\': goto yy146
;
5251 #line 400 "src/parser.re"
5252 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5253 #line 5254 "src/parser.c"
5256 yych
= *(mrk
= ++cur
);
5259 case 'f': goto yy464
;
5264 yych
= *(mrk
= ++cur
);
5267 case 'd': goto yy466
;
5272 yych
= *(mrk
= ++cur
);
5275 case 'l': goto yy467
;
5280 yych
= *(mrk
= ++cur
);
5345 case 0x7F: goto yy404
;
5346 case '\\': goto yy146
;
5350 #line 415 "src/parser.re"
5351 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5352 #line 5353 "src/parser.c"
5355 yych
= *(mrk
= ++cur
);
5358 case 't': goto yy469
;
5363 yych
= *(mrk
= ++cur
);
5366 case 'l': goto yy471
;
5371 yych
= *(mrk
= ++cur
);
5374 case 'a': goto yy473
;
5379 yych
= *(mrk
= ++cur
);
5382 case 'a': goto yy474
;
5387 yych
= *(mrk
= ++cur
);
5390 case 's': goto yy475
;
5395 yych
= *(mrk
= ++cur
);
5398 case 'n': goto yy476
;
5403 yych
= *(mrk
= ++cur
);
5406 case 'c': goto yy478
;
5411 yych
= *(mrk
= ++cur
);
5414 case 'g': goto yy480
;
5419 yych
= *(mrk
= ++cur
);
5422 case 'n': goto yy482
;
5427 yych
= *(mrk
= ++cur
);
5430 case 'l': goto yy484
;
5435 yych
= *(mrk
= ++cur
);
5438 case 'r': goto yy486
;
5443 yych
= *(mrk
= ++cur
);
5446 case 'o': goto yy487
;
5451 yych
= *(mrk
= ++cur
);
5454 case 'o': goto yy488
;
5459 yych
= *(mrk
= ++cur
);
5462 case 't': goto yy489
;
5467 yych
= *(mrk
= ++cur
);
5470 case 'j': goto yy491
;
5475 yych
= *(mrk
= ++cur
);
5478 case 'r': goto yy492
;
5483 yych
= *(mrk
= ++cur
);
5548 case 0x7F: goto yy422
;
5549 case '\\': goto yy146
;
5553 #line 407 "src/parser.re"
5554 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5555 #line 5556 "src/parser.c"
5558 yych
= *(mrk
= ++cur
);
5561 case 'n': goto yy493
;
5566 yych
= *(mrk
= ++cur
);
5568 case '_': goto yy494
;
5573 yych
= *(mrk
= ++cur
);
5575 case 'r': goto yy495
;
5580 yych
= *(mrk
= ++cur
);
5582 case 'e': goto yy496
;
5587 yych
= *(mrk
= ++cur
);
5589 case 'i': goto yy497
;
5594 yych
= *(mrk
= ++cur
);
5596 case 't': goto yy498
;
5601 yych
= *(mrk
= ++cur
);
5666 case 0x7F: goto yy430
;
5667 case '\\': goto yy146
;
5671 #line 380 "src/parser.re"
5672 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5673 #line 5674 "src/parser.c"
5676 yych
= *(mrk
= ++cur
);
5678 case 'e': goto yy499
;
5683 yych
= *(mrk
= ++cur
);
5748 case 0x7F: goto yy433
;
5750 case 'v': goto yy462
;
5751 case '\\': goto yy146
;
5755 #line 387 "src/parser.re"
5756 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5757 #line 5758 "src/parser.c"
5760 yych
= *(mrk
= ++cur
);
5762 case '_': goto yy501
;
5767 yych
= *(mrk
= ++cur
);
5769 case '_': goto yy502
;
5774 yych
= *(mrk
= ++cur
);
5776 case '_': goto yy503
;
5781 yych
= *(mrk
= ++cur
);
5783 case 't': goto yy504
;
5788 yych
= *(mrk
= ++cur
);
5790 case 'a': goto yy506
;
5795 yych
= *(mrk
= ++cur
);
5860 case 0x7F: goto yy440
;
5861 case '\\': goto yy146
;
5865 #line 384 "src/parser.re"
5866 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5867 #line 5868 "src/parser.c"
5870 yych
= *(mrk
= ++cur
);
5872 case 'd': goto yy508
;
5877 yych
= *(mrk
= ++cur
);
5879 case 'f': goto yy510
;
5884 yych
= *(mrk
= ++cur
);
5886 case 't': goto yy512
;
5891 yych
= *(mrk
= ++cur
);
5893 case 'e': goto yy514
;
5898 yych
= *(mrk
= ++cur
);
5900 case '6': goto yy515
;
5905 yych
= *(mrk
= ++cur
);
5907 case '2': goto yy516
;
5912 yych
= *(mrk
= ++cur
);
5914 case '4': goto yy517
;
5919 yych
= *(mrk
= ++cur
);
5921 case '_': goto yy518
;
5926 yych
= *(mrk
= ++cur
);
5991 case 0x7F: goto yy450
;
5992 case '\\': goto yy146
;
5996 #line 378 "src/parser.re"
5997 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5998 #line 5999 "src/parser.c"
6001 yych
= *(mrk
= ++cur
);
6003 case 'n': goto yy519
;
6008 yych
= *(mrk
= ++cur
);
6010 case 'i': goto yy520
;
6015 yych
= *(mrk
= ++cur
);
6080 case 0x7F: goto yy454
;
6081 case '\\': goto yy146
;
6085 #line 437 "src/parser.re"
6086 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6087 #line 6088 "src/parser.c"
6090 yych
= *(mrk
= ++cur
);
6093 case 'l': goto yy521
;
6098 yych
= *(mrk
= ++cur
);
6101 case 'l': goto yy523
;
6106 yych
= *(mrk
= ++cur
);
6109 case 'c': goto yy524
;
6114 yych
= *(mrk
= ++cur
);
6179 case 0x7F: goto yy459
;
6180 case '\\': goto yy146
;
6184 #line 441 "src/parser.re"
6185 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6186 #line 6187 "src/parser.c"
6189 yych
= *(mrk
= ++cur
);
6254 case 0x7F: goto yy461
;
6256 case 'd': goto yy525
;
6257 case '\\': goto yy146
;
6261 #line 405 "src/parser.re"
6262 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6263 #line 6264 "src/parser.c"
6266 yych
= *(mrk
= ++cur
);
6269 case 'a': goto yy527
;
6274 yych
= *(mrk
= ++cur
);
6277 case 'o': goto yy528
;
6282 yych
= *(mrk
= ++cur
);
6347 case 0x7F: goto yy465
;
6348 case '\\': goto yy146
;
6352 #line 401 "src/parser.re"
6353 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6354 #line 6355 "src/parser.c"
6357 yych
= *(mrk
= ++cur
);
6360 case 'e': goto yy529
;
6365 yych
= *(mrk
= ++cur
);
6430 case 0x7F: goto yy468
;
6431 case '\\': goto yy146
;
6435 #line 434 "src/parser.re"
6436 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6437 #line 6438 "src/parser.c"
6440 yych
= *(mrk
= ++cur
);
6505 case 0x7F: goto yy470
;
6506 case '\\': goto yy146
;
6510 #line 419 "src/parser.re"
6511 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6512 #line 6513 "src/parser.c"
6515 yych
= *(mrk
= ++cur
);
6580 case 0x7F: goto yy472
;
6581 case '\\': goto yy146
;
6585 #line 438 "src/parser.re"
6586 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6587 #line 6588 "src/parser.c"
6590 yych
= *(mrk
= ++cur
);
6593 case 'l': goto yy531
;
6598 yych
= *(mrk
= ++cur
);
6601 case 's': goto yy533
;
6606 yych
= *(mrk
= ++cur
);
6609 case 's': goto yy534
;
6614 yych
= *(mrk
= ++cur
);
6679 case 0x7F: goto yy477
;
6680 case '\\': goto yy146
;
6684 #line 428 "src/parser.re"
6685 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6686 #line 6687 "src/parser.c"
6689 yych
= *(mrk
= ++cur
);
6754 case 0x7F: goto yy479
;
6755 case '\\': goto yy146
;
6759 #line 421 "src/parser.re"
6760 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6761 #line 6762 "src/parser.c"
6764 yych
= *(mrk
= ++cur
);
6829 case 0x7F: goto yy481
;
6830 case '\\': goto yy146
;
6834 #line 417 "src/parser.re"
6835 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6836 #line 6837 "src/parser.c"
6839 yych
= *(mrk
= ++cur
);
6904 case 0x7F: goto yy483
;
6905 case '\\': goto yy146
;
6909 #line 431 "src/parser.re"
6910 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6911 #line 6912 "src/parser.c"
6914 yych
= *(mrk
= ++cur
);
6979 case 0x7F: goto yy485
;
6980 case '\\': goto yy146
;
6984 #line 432 "src/parser.re"
6985 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6986 #line 6987 "src/parser.c"
6989 yych
= *(mrk
= ++cur
);
6992 case 'a': goto yy535
;
6997 yych
= *(mrk
= ++cur
);
7000 case 'l': goto yy536
;
7005 yych
= *(mrk
= ++cur
);
7008 case 'a': goto yy538
;
7013 yych
= *(mrk
= ++cur
);
7078 case 0x7F: goto yy490
;
7079 case '\\': goto yy146
;
7083 #line 445 "src/parser.re"
7084 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7085 #line 7086 "src/parser.c"
7088 yych
= *(mrk
= ++cur
);
7091 case 'e': goto yy539
;
7096 yych
= *(mrk
= ++cur
);
7099 case 'i': goto yy540
;
7104 yych
= *(mrk
= ++cur
);
7107 case 'g': goto yy541
;
7112 yych
= *(mrk
= ++cur
);
7114 case '_': goto yy543
;
7119 yych
= *(mrk
= ++cur
);
7121 case 'i': goto yy545
;
7126 yych
= *(mrk
= ++cur
);
7128 case 'n': goto yy546
;
7133 yych
= *(mrk
= ++cur
);
7135 case 'n': goto yy547
;
7140 yych
= *(mrk
= ++cur
);
7142 case 'r': goto yy548
;
7147 yych
= *(mrk
= ++cur
);
7212 case 0x7F: goto yy500
;
7213 case '\\': goto yy146
;
7217 #line 388 "src/parser.re"
7218 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7219 #line 7220 "src/parser.c"
7222 yych
= *(mrk
= ++cur
);
7224 case 't': goto yy549
;
7229 yych
= *(mrk
= ++cur
);
7231 case 't': goto yy551
;
7236 yych
= *(mrk
= ++cur
);
7238 case 't': goto yy553
;
7243 yych
= *(mrk
= ++cur
);
7308 case 0x7F: goto yy505
;
7309 case '\\': goto yy146
;
7313 #line 389 "src/parser.re"
7314 { NEWTOKEN(PSI_T_INT8
); goto start
; }
7315 #line 7316 "src/parser.c"
7318 yych
= *(mrk
= ++cur
);
7383 case 0x7F: goto yy507
;
7384 case '\\': goto yy146
;
7385 default: goto yy555
;
7388 #line 367 "src/parser.re"
7389 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7390 #line 7391 "src/parser.c"
7393 yych
= *(mrk
= ++cur
);
7458 case 0x7F: goto yy509
;
7459 case '\\': goto yy146
;
7463 #line 398 "src/parser.re"
7464 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7465 #line 7466 "src/parser.c"
7468 yych
= *(mrk
= ++cur
);
7533 case 0x7F: goto yy511
;
7534 case '\\': goto yy146
;
7538 #line 374 "src/parser.re"
7539 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7540 #line 7541 "src/parser.c"
7543 yych
= *(mrk
= ++cur
);
7608 case 0x7F: goto yy513
;
7609 case '\\': goto yy146
;
7613 #line 377 "src/parser.re"
7614 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7615 #line 7616 "src/parser.c"
7618 yych
= *(mrk
= ++cur
);
7620 case 'f': goto yy557
;
7625 yych
= *(mrk
= ++cur
);
7627 case '_': goto yy559
;
7632 yych
= *(mrk
= ++cur
);
7634 case '_': goto yy560
;
7639 yych
= *(mrk
= ++cur
);
7641 case '_': goto yy561
;
7646 yych
= *(mrk
= ++cur
);
7648 case 't': goto yy562
;
7653 yych
= *(mrk
= ++cur
);
7655 case 'e': goto yy564
;
7660 yych
= *(mrk
= ++cur
);
7662 case 'l': goto yy565
;
7667 yych
= *(mrk
= ++cur
);
7732 case 0x7F: goto yy522
;
7733 case '\\': goto yy146
;
7737 #line 436 "src/parser.re"
7738 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7739 #line 7740 "src/parser.c"
7742 yych
= *(mrk
= ++cur
);
7745 case 'e': goto yy566
;
7750 yych
= *(mrk
= ++cur
);
7753 case 'k': goto yy568
;
7758 yych
= *(mrk
= ++cur
);
7823 case 0x7F: goto yy526
;
7824 case '\\': goto yy146
;
7828 #line 406 "src/parser.re"
7829 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7830 #line 7831 "src/parser.c"
7833 yych
= *(mrk
= ++cur
);
7836 case 'l': goto yy570
;
7841 yych
= *(mrk
= ++cur
);
7844 case 'n': goto yy572
;
7849 yych
= *(mrk
= ++cur
);
7914 case 0x7F: goto yy530
;
7915 case '\\': goto yy146
;
7916 case '_': goto yy574
;
7920 #line 410 "src/parser.re"
7921 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7922 #line 7923 "src/parser.c"
7925 yych
= *(mrk
= ++cur
);
7990 case 0x7F: goto yy532
;
7991 case '\\': goto yy146
;
7995 #line 433 "src/parser.re"
7996 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7997 #line 7998 "src/parser.c"
8000 yych
= *(mrk
= ++cur
);
8003 case 's': goto yy575
;
8008 yych
= *(mrk
= ++cur
);
8011 case 'e': goto yy576
;
8016 yych
= *(mrk
= ++cur
);
8019 case 'y': goto yy577
;
8024 yych
= *(mrk
= ++cur
);
8089 case 0x7F: goto yy537
;
8090 case '\\': goto yy146
;
8094 #line 447 "src/parser.re"
8095 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
8096 #line 8097 "src/parser.c"
8099 yych
= *(mrk
= ++cur
);
8102 case 't': goto yy579
;
8107 yych
= *(mrk
= ++cur
);
8110 case 'c': goto yy581
;
8115 yych
= *(mrk
= ++cur
);
8118 case 'n': goto yy582
;
8123 yych
= *(mrk
= ++cur
);
8188 case 0x7F: goto yy542
;
8189 case '\\': goto yy146
;
8193 #line 408 "src/parser.re"
8194 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8195 #line 8196 "src/parser.c"
8198 yych
= *(mrk
= ++cur
);
8263 case 0x7F: goto yy544
;
8264 case '\\': goto yy146
;
8268 #line 372 "src/parser.re"
8269 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8270 #line 8271 "src/parser.c"
8273 yych
= *(mrk
= ++cur
);
8275 case 'b': goto yy583
;
8280 yych
= *(mrk
= ++cur
);
8282 case 's': goto yy584
;
8287 yych
= *(mrk
= ++cur
);
8289 case 'e': goto yy585
;
8294 yych
= *(mrk
= ++cur
);
8296 case 'i': goto yy587
;
8301 yych
= *(mrk
= ++cur
);
8366 case 0x7F: goto yy550
;
8367 case '\\': goto yy146
;
8371 #line 391 "src/parser.re"
8372 { NEWTOKEN(PSI_T_INT16
); goto start
; }
8373 #line 8374 "src/parser.c"
8376 yych
= *(mrk
= ++cur
);
8441 case 0x7F: goto yy552
;
8442 case '\\': goto yy146
;
8446 #line 393 "src/parser.re"
8447 { NEWTOKEN(PSI_T_INT32
); goto start
; }
8448 #line 8449 "src/parser.c"
8451 yych
= *(mrk
= ++cur
);
8516 case 0x7F: goto yy554
;
8517 case '\\': goto yy146
;
8521 #line 395 "src/parser.re"
8522 { NEWTOKEN(PSI_T_INT64
); goto start
; }
8523 #line 8524 "src/parser.c"
8527 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8593 case 0x7F: goto yy55
;
8594 case '\\': goto yy146
;
8595 case 'o': goto yy588
;
8596 default: goto yy555
;
8600 yych
= *(mrk
= ++cur
);
8665 case 0x7F: goto yy558
;
8666 case '\\': goto yy146
;
8670 #line 376 "src/parser.re"
8671 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8672 #line 8673 "src/parser.c"
8675 yych
= *(mrk
= ++cur
);
8677 case 't': goto yy590
;
8682 yych
= *(mrk
= ++cur
);
8684 case 't': goto yy592
;
8689 yych
= *(mrk
= ++cur
);
8691 case 't': goto yy594
;
8696 yych
= *(mrk
= ++cur
);
8761 case 0x7F: goto yy563
;
8762 case '\\': goto yy146
;
8766 #line 390 "src/parser.re"
8767 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
8768 #line 8769 "src/parser.c"
8771 yych
= *(mrk
= ++cur
);
8773 case 'd': goto yy596
;
8778 yych
= *(mrk
= ++cur
);
8780 case 'e': goto yy598
;
8785 yych
= *(mrk
= ++cur
);
8850 case 0x7F: goto yy567
;
8851 case '\\': goto yy146
;
8855 #line 416 "src/parser.re"
8856 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8857 #line 8858 "src/parser.c"
8860 yych
= *(mrk
= ++cur
);
8925 case 0x7F: goto yy569
;
8926 case '\\': goto yy146
;
8930 #line 420 "src/parser.re"
8931 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8932 #line 8933 "src/parser.c"
8935 yych
= *(mrk
= ++cur
);
9000 case 0x7F: goto yy571
;
9001 case '\\': goto yy146
;
9005 #line 435 "src/parser.re"
9006 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
9007 #line 9008 "src/parser.c"
9010 yych
= *(mrk
= ++cur
);
9075 case 0x7F: goto yy573
;
9076 case '\\': goto yy146
;
9080 #line 422 "src/parser.re"
9081 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
9082 #line 9083 "src/parser.c"
9085 yych
= *(mrk
= ++cur
);
9088 case 'n': goto yy600
;
9093 yych
= *(mrk
= ++cur
);
9096 case 'e': goto yy601
;
9101 yych
= *(mrk
= ++cur
);
9104 case 'r': goto yy602
;
9109 yych
= *(mrk
= ++cur
);
9174 case 0x7F: goto yy578
;
9175 case '\\': goto yy146
;
9179 #line 443 "src/parser.re"
9180 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
9181 #line 9182 "src/parser.c"
9184 yych
= *(mrk
= ++cur
);
9249 case 0x7F: goto yy580
;
9250 case '\\': goto yy146
;
9254 #line 446 "src/parser.re"
9255 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
9256 #line 9257 "src/parser.c"
9259 yych
= *(mrk
= ++cur
);
9262 case 't': goto yy603
;
9267 yych
= *(mrk
= ++cur
);
9270 case 'g': goto yy605
;
9275 yych
= *(mrk
= ++cur
);
9277 case 'u': goto yy607
;
9282 yych
= *(mrk
= ++cur
);
9284 case 'i': goto yy608
;
9289 yych
= *(mrk
= ++cur
);
9354 case 0x7F: goto yy586
;
9355 case '\\': goto yy146
;
9359 #line 369 "src/parser.re"
9360 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
9361 #line 9362 "src/parser.c"
9364 yych
= *(mrk
= ++cur
);
9366 case 'c': goto yy609
;
9372 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9438 case 0x7F: goto yy55
;
9439 case '\\': goto yy146
;
9440 case 'n': goto yy610
;
9441 case 'o': goto yy588
;
9442 default: goto yy555
;
9446 yych
= *(mrk
= ++cur
);
9511 case 0x7F: goto yy591
;
9512 case '\\': goto yy146
;
9516 #line 392 "src/parser.re"
9517 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
9518 #line 9519 "src/parser.c"
9521 yych
= *(mrk
= ++cur
);
9586 case 0x7F: goto yy593
;
9587 case '\\': goto yy146
;
9591 #line 394 "src/parser.re"
9592 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
9593 #line 9594 "src/parser.c"
9596 yych
= *(mrk
= ++cur
);
9661 case 0x7F: goto yy595
;
9662 case '\\': goto yy146
;
9666 #line 396 "src/parser.re"
9667 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
9668 #line 9669 "src/parser.c"
9671 yych
= *(mrk
= ++cur
);
9736 case 0x7F: goto yy597
;
9737 case '\\': goto yy146
;
9741 #line 397 "src/parser.re"
9742 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9743 #line 9744 "src/parser.c"
9746 yych
= *(mrk
= ++cur
);
9811 case 0x7F: goto yy599
;
9812 case '\\': goto yy146
;
9816 #line 373 "src/parser.re"
9817 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9818 #line 9819 "src/parser.c"
9821 yych
= *(mrk
= ++cur
);
9824 case 'e': goto yy611
;
9829 yych
= *(mrk
= ++cur
);
9832 case 'r': goto yy612
;
9837 yych
= *(mrk
= ++cur
);
9840 case 't': goto yy613
;
9845 yych
= *(mrk
= ++cur
);
9910 case 0x7F: goto yy604
;
9911 case '\\': goto yy146
;
9915 #line 442 "src/parser.re"
9916 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9917 #line 9918 "src/parser.c"
9920 yych
= *(mrk
= ++cur
);
9985 case 0x7F: goto yy606
;
9986 case '\\': goto yy146
;
9990 #line 444 "src/parser.re"
9991 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9992 #line 9993 "src/parser.c"
9995 yych
= *(mrk
= ++cur
);
9997 case 't': goto yy615
;
10002 yych
= *(mrk
= ++cur
);
10004 case 'o': goto yy616
;
10005 default: goto yy62
;
10009 yych
= *(mrk
= ++cur
);
10011 case 't': goto yy617
;
10012 default: goto yy62
;
10017 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10083 case 0x7F: goto yy55
;
10084 case '\\': goto yy146
;
10085 case 'c': goto yy619
;
10086 case 'o': goto yy588
;
10087 default: goto yy555
;
10091 yych
= *(mrk
= ++cur
);
10094 case 'x': goto yy620
;
10095 default: goto yy62
;
10099 yych
= *(mrk
= ++cur
);
10102 case 't': goto yy621
;
10103 default: goto yy62
;
10107 yych
= *(mrk
= ++cur
);
10172 case 0x7F: goto yy614
;
10173 case '\\': goto yy146
;
10174 default: goto yy61
;
10177 #line 426 "src/parser.re"
10178 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
10179 #line 10180 "src/parser.c"
10182 yych
= *(mrk
= ++cur
);
10184 case 'e': goto yy623
;
10185 default: goto yy62
;
10189 yych
= *(mrk
= ++cur
);
10191 case 'n': goto yy624
;
10192 default: goto yy62
;
10196 yych
= *(mrk
= ++cur
);
10261 case 0x7F: goto yy618
;
10262 case '\\': goto yy146
;
10263 default: goto yy61
;
10266 #line 370 "src/parser.re"
10267 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
10268 #line 10269 "src/parser.c"
10272 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10338 case 0x7F: goto yy55
;
10339 case '\\': goto yy146
;
10340 case 'e': goto yy625
;
10341 case 'o': goto yy588
;
10342 default: goto yy555
;
10346 yych
= *(mrk
= ++cur
);
10349 case 't': goto yy627
;
10350 default: goto yy62
;
10354 yych
= *(mrk
= ++cur
);
10419 case 0x7F: goto yy622
;
10420 case '\\': goto yy146
;
10421 default: goto yy61
;
10424 #line 427 "src/parser.re"
10425 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
10426 #line 10427 "src/parser.c"
10429 yych
= *(mrk
= ++cur
);
10431 case '_': goto yy629
;
10432 default: goto yy62
;
10436 yych
= *(mrk
= ++cur
);
10438 case '_': goto yy630
;
10439 default: goto yy62
;
10444 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10510 case 0x7F: goto yy626
;
10511 case '\\': goto yy146
;
10512 case 'o': goto yy588
;
10513 default: goto yy555
;
10516 #line 368 "src/parser.re"
10517 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
10518 #line 10519 "src/parser.c"
10521 yych
= *(mrk
= ++cur
);
10586 case 0x7F: goto yy628
;
10587 case '\\': goto yy146
;
10588 default: goto yy61
;
10591 #line 411 "src/parser.re"
10592 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
10593 #line 10594 "src/parser.c"
10596 yych
= *(mrk
= ++cur
);
10598 case '_': goto yy631
;
10599 default: goto yy62
;
10603 yych
= *(mrk
= ++cur
);
10605 case '_': goto yy632
;
10606 default: goto yy62
;
10610 yych
= *(mrk
= ++cur
);
10614 case ' ': goto yy634
;
10615 case '(': goto yy636
;
10616 default: goto yy62
;
10620 yych
= *(mrk
= ++cur
);
10685 case 0x7F: goto yy633
;
10686 case '\\': goto yy146
;
10687 default: goto yy61
;
10690 #line 371 "src/parser.re"
10691 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10692 #line 10693 "src/parser.c"
10695 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10700 case ' ': goto yy634
;
10701 case '(': goto yy636
;
10702 default: goto yy114
;
10707 case '(': goto yy637
;
10708 default: goto yy114
;
10712 #line 452 "src/parser.re"
10713 { parens
= 2; goto cpp_attribute
; }
10714 #line 10715 "src/parser.c"
10716 #line 458 "src/parser.re"
10721 #line 10722 "src/parser.c"
10723 unsigned char yych
;
10724 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10728 case '\r': goto yy643
;
10729 case '\'': goto yy645
;
10730 case '\\': goto yy647
;
10731 default: goto yy641
;
10735 #line 476 "src/parser.re"
10736 { escaped
= false; goto character
; }
10737 #line 10738 "src/parser.c"
10740 #line 463 "src/parser.re"
10741 { NEWLINE(); goto character
; }
10742 #line 10743 "src/parser.c"
10745 #line 465 "src/parser.re"
10752 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10754 token
->flags
= char_width
;
10757 #line 10758 "src/parser.c"
10760 #line 464 "src/parser.re"
10761 { escaped
= !escaped
; goto character
; }
10762 #line 10763 "src/parser.c"
10764 #line 478 "src/parser.re"
10769 #line 10770 "src/parser.c"
10771 unsigned char yych
;
10772 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10776 case '\r': goto yy653
;
10777 case '"': goto yy655
;
10778 case '\\': goto yy657
;
10779 default: goto yy651
;
10783 #line 496 "src/parser.re"
10784 { escaped
= false; goto string
; }
10785 #line 10786 "src/parser.c"
10788 #line 483 "src/parser.re"
10789 { NEWLINE(); goto string
; }
10790 #line 10791 "src/parser.c"
10793 #line 485 "src/parser.re"
10800 NEWTOKEN(PSI_T_QUOTED_STRING
);
10802 token
->flags
= char_width
;
10805 #line 10806 "src/parser.c"
10808 #line 484 "src/parser.re"
10809 { escaped
= !escaped
; goto string
; }
10810 #line 10811 "src/parser.c"
10812 #line 498 "src/parser.re"
10817 #line 10818 "src/parser.c"
10819 unsigned char yych
;
10820 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10824 case '\r': goto yy663
;
10825 case '*': goto yy665
;
10826 default: goto yy661
;
10831 #line 505 "src/parser.re"
10833 #line 10834 "src/parser.c"
10836 #line 503 "src/parser.re"
10837 { NEWLINE(); goto comment
; }
10838 #line 10839 "src/parser.c"
10842 case '/': goto yy666
;
10843 default: goto yy662
;
10847 #line 504 "src/parser.re"
10848 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10849 #line 10850 "src/parser.c"
10851 #line 507 "src/parser.re"
10856 #line 10857 "src/parser.c"
10858 unsigned char yych
;
10859 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10863 case '\r': goto yy672
;
10864 default: goto yy670
;
10868 #line 513 "src/parser.re"
10869 { goto comment_sl
; }
10870 #line 10871 "src/parser.c"
10873 #line 512 "src/parser.re"
10874 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10875 #line 10876 "src/parser.c"
10877 #line 515 "src/parser.re"
10883 #line 10884 "src/parser.c"
10885 unsigned char yych
;
10886 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10890 case '\r': goto yy678
;
10891 case '(': goto yy680
;
10892 case ')': goto yy682
;
10893 default: goto yy676
;
10897 #line 524 "src/parser.re"
10898 { goto cpp_attribute
; }
10899 #line 10900 "src/parser.c"
10902 #line 523 "src/parser.re"
10903 { NEWLINE(); goto cpp_attribute
; }
10904 #line 10905 "src/parser.c"
10907 #line 521 "src/parser.re"
10908 { ++parens
; goto cpp_attribute
; }
10909 #line 10910 "src/parser.c"
10912 #line 522 "src/parser.re"
10913 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10914 #line 10915 "src/parser.c"
10916 #line 526 "src/parser.re"
10920 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10921 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10922 psi_plist_free(tokens
);
10927 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);