4e979dd0fa684cfa0861455a7cc68719320a0ce1
1 /* Generated by re2c 0.16 on Thu Jul 27 12:41:40 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"
37 # define YYMAXFILL 256
40 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
43 P
= malloc(sizeof(*P
));
45 memset(P
, 0, sizeof(*P
));
47 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
49 P
->preproc
= psi_cpp_init(P
);
51 psi_cpp_load_defaults(P
->preproc
);
56 struct psi_parser_input
*psi_parser_open_file(struct psi_parser
*P
, const char *filename
, bool report_errors
)
60 struct psi_parser_input
*fb
;
62 if (stat(filename
, &sb
)) {
64 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
65 "Could not stat '%s': %s",
66 filename
, strerror(errno
));
71 if (!(fb
= malloc(sizeof(*fb
) + strlen(filename
) + 1 + sb
.st_size
+ YYMAXFILL
))) {
73 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
74 "Could not allocate %zu bytes for reading '%s': %s",
75 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
80 if (!(fp
= fopen(filename
, "r"))) {
83 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
84 "Could not open '%s' for reading: %s",
85 filename
, strerror(errno
));
90 if (sb
.st_size
!= fread(fb
->buffer
, 1, sb
.st_size
, fp
)) {
94 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
95 "Could not read %zu bytes from '%s': %s",
96 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
101 memset(fb
->buffer
+ sb
.st_size
, 0, YYMAXFILL
);
102 fb
->length
= sb
.st_size
;
103 fb
->file
= &fb
->buffer
[sb
.st_size
+ YYMAXFILL
];
104 memcpy(fb
->file
, filename
, strlen(filename
) + 1);
109 struct psi_parser_input
*psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
111 struct psi_parser_input
*sb
;
113 if (!(sb
= malloc(sizeof(*sb
) + sizeof("<stdin>") + length
+ YYMAXFILL
))) {
114 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
115 "Could not allocate %zu bytes: %s",
116 length
+ YYMAXFILL
, strerror(errno
));
120 memcpy(sb
->buffer
, string
, length
);
121 memset(sb
->buffer
+ length
, 0, YYMAXFILL
);
124 sb
->file
= &sb
->buffer
[length
+ YYMAXFILL
];
125 memcpy(sb
->file
, "<stdin>", sizeof("<stdin>"));
131 static void psi_parser_register_constants(struct psi_parser
*P
)
136 ZEND_HASH_FOREACH_STR_KEY_VAL(&P
->cpp
.defs
, key
, val
)
138 struct psi_impl_def_val
*iv
;
139 struct psi_const_type
*ct
;
147 switch (Z_TYPE_P(val
)) {
152 tmp
.zend
.bval
= Z_TYPE_P(val
) == IS_TRUE
;
157 tmp
.zend
.lval
= Z_LVAL_P(val
);
162 tmp
.dval
= Z_DVAL_P(val
);
167 str
= zval_get_string(val
);
168 tmp
.zend
.str
= zend_string_dup(str
, 1);
169 zend_string_release(str
);
173 iv
= psi_impl_def_val_init(ctt
, NULL
);
175 ct
= psi_const_type_init(ctt
, ctn
);
176 c
= psi_const_init(ct
, key
->val
, iv
);
178 P
->consts
= psi_plist_init((psi_plist_dtor
) psi_const_free
);
180 P
->consts
= psi_plist_add(P
->consts
, &c
);
182 ZEND_HASH_FOREACH_END();
186 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
188 if (psi_cpp_process(P
->preproc
, tokens
)) {
194 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
196 if (psi_plist_count(tokens
)) {
197 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
202 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
204 struct psi_plist
*scanned
, *preproc
;
205 size_t processed
= 0;
207 if (!(scanned
= psi_parser_scan(P
, I
))) {
211 if (!(preproc
= psi_parser_preprocess(P
, &scanned
))) {
212 psi_plist_free(scanned
);
216 if (!psi_parser_process(P
, preproc
, &processed
)) {
217 psi_plist_free(preproc
);
221 psi_plist_free(preproc
);
225 void psi_parser_dtor(struct psi_parser
*P
)
227 psi_cpp_free(&P
->preproc
);
228 psi_data_dtor(PSI_DATA(P
));
230 memset(P
, 0, sizeof(*P
));
233 void psi_parser_free(struct psi_parser
**P
)
246 #define NEWTOKEN(t) \
247 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
248 tokens = psi_plist_add(tokens, &token); \
249 if (P->flags & PSI_DEBUG) { \
250 fprintf(stderr, "PSI< "); \
251 psi_token_dump(2, token); \
255 char s
[SIZEOF_UINT32_T
];
259 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
261 struct psi_plist
*tokens
;
262 struct psi_token
*token
;
263 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
268 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
);
270 tok
= mrk
= eol
= cur
= I
->buffer
;
271 lim
= I
->buffer
+ I
->length
;
273 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
281 #line 282 "src/parser.c"
284 unsigned int yyaccept
= 0;
285 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
330 case '\'': goto yy20
;
381 case '\\': goto yy77
;
399 case '}': goto yy100
;
400 case '~': goto yy102
;
406 #line 452 "src/parser.re"
407 { NEWTOKEN(-2); goto error
; }
408 #line 409 "src/parser.c"
411 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
420 #line 451 "src/parser.re"
421 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
422 #line 423 "src/parser.c"
425 #line 450 "src/parser.re"
426 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
427 #line 428 "src/parser.c"
430 switch ((yych
= *cur
)) {
431 case '=': goto yy104
;
435 #line 349 "src/parser.re"
436 { NEWTOKEN(PSI_T_NOT
); goto start
; }
437 #line 438 "src/parser.c"
440 #line 322 "src/parser.re"
441 { escaped
= false; tok
+= 1; goto string
; }
442 #line 443 "src/parser.c"
445 switch ((yych
= *cur
)) {
446 case '#': goto yy106
;
450 #line 332 "src/parser.re"
451 { NEWTOKEN(PSI_T_HASH
); goto start
; }
452 #line 453 "src/parser.c"
525 #line 350 "src/parser.re"
526 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
527 #line 528 "src/parser.c"
530 switch ((yych
= *cur
)) {
531 case '&': goto yy111
;
535 #line 351 "src/parser.re"
536 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
537 #line 538 "src/parser.c"
540 #line 321 "src/parser.re"
541 { escaped
= false; tok
+= 1; goto character
; }
542 #line 543 "src/parser.c"
545 #line 333 "src/parser.re"
546 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
547 #line 548 "src/parser.c"
550 #line 334 "src/parser.re"
551 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
552 #line 553 "src/parser.c"
555 #line 347 "src/parser.re"
556 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
557 #line 558 "src/parser.c"
560 yych
= *(mrk
= ++cur
);
562 case '.': goto yy113
;
576 #line 352 "src/parser.re"
577 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
578 #line 579 "src/parser.c"
581 #line 336 "src/parser.re"
582 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
583 #line 584 "src/parser.c"
586 yych
= *(mrk
= ++cur
);
588 case '.': goto yy113
;
602 #line 353 "src/parser.re"
603 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
604 #line 605 "src/parser.c"
607 yych
= *(mrk
= ++cur
);
609 case '.': goto yy115
;
619 case '9': goto yy116
;
623 #line 364 "src/parser.re"
624 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
625 #line 626 "src/parser.c"
628 switch ((yych
= *cur
)) {
629 case '*': goto yy119
;
630 case '/': goto yy121
;
634 #line 354 "src/parser.re"
635 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
636 #line 637 "src/parser.c"
639 yych
= *(mrk
= ++cur
);
642 case '.': goto yy123
;
650 case '7': goto yy125
;
652 case 'e': goto yy127
;
654 case 'l': goto yy128
;
656 case 'u': goto yy130
;
658 case 'x': goto yy132
;
662 #line 308 "src/parser.re"
663 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
664 #line 665 "src/parser.c"
668 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
672 case '.': goto yy123
;
684 case 'e': goto yy127
;
686 case 'l': goto yy128
;
688 case 'u': goto yy130
;
693 #line 337 "src/parser.re"
694 { NEWTOKEN(PSI_T_COLON
); goto start
; }
695 #line 696 "src/parser.c"
698 #line 335 "src/parser.re"
699 { NEWTOKEN(PSI_T_EOS
); goto start
; }
700 #line 701 "src/parser.c"
703 yych
= *(mrk
= ++cur
);
770 case 'z': goto yy133
;
771 case '<': goto yy135
;
772 case '=': goto yy137
;
776 #line 362 "src/parser.re"
777 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
778 #line 779 "src/parser.c"
781 switch ((yych
= *cur
)) {
782 case '=': goto yy139
;
786 #line 346 "src/parser.re"
787 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
788 #line 789 "src/parser.c"
791 switch ((yych
= *cur
)) {
792 case '=': goto yy141
;
793 case '>': goto yy143
;
797 #line 363 "src/parser.re"
798 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
799 #line 800 "src/parser.c"
802 #line 366 "src/parser.re"
803 { NEWTOKEN(PSI_T_IIF
); goto start
; }
804 #line 805 "src/parser.c"
807 yych
= *(mrk
= ++cur
);
810 case 'r': goto yy145
;
814 #line 445 "src/parser.re"
815 { NEWTOKEN(PSI_T_NAME
); goto start
; }
816 #line 817 "src/parser.c"
819 yych
= *(mrk
= ++cur
);
822 case 'o': goto yy147
;
827 yych
= *(mrk
= ++cur
);
830 case 'a': goto yy148
;
832 case 'o': goto yy149
;
837 yych
= *(mrk
= ++cur
);
840 case 'e': goto yy150
;
845 yych
= *(mrk
= ++cur
);
848 case 'l': goto yy151
;
850 case 'n': goto yy152
;
852 case 'r': goto yy153
;
857 yych
= *(mrk
= ++cur
);
860 case 'a': goto yy154
;
862 case 'l': goto yy155
;
864 case 'r': goto yy156
;
866 case 'u': goto yy157
;
872 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
939 case 0x7F: goto yy55
;
940 case '\\': goto yy146
;
945 yych
= *(mrk
= ++cur
);
948 case 'f': goto yy158
;
950 case 'n': goto yy160
;
955 yych
= *(mrk
= ++cur
);
959 case '\'': goto yy161
;
961 case 'e': goto yy163
;
963 case 'i': goto yy164
;
968 yych
= *(mrk
= ++cur
);
971 case 'i': goto yy165
;
976 yych
= *(mrk
= ++cur
);
979 case 'u': goto yy166
;
984 yych
= *(mrk
= ++cur
);
987 case 'b': goto yy167
;
992 yych
= *(mrk
= ++cur
);
995 case 'a': goto yy168
;
997 case 'o': goto yy169
;
999 case 'r': goto yy170
;
1004 yych
= *(mrk
= ++cur
);
1007 case 'e': goto yy171
;
1012 yych
= *(mrk
= ++cur
);
1015 case 'e': goto yy172
;
1017 case 't': goto yy173
;
1022 yych
= *(mrk
= ++cur
);
1025 case 'e': goto yy174
;
1027 case 'o': goto yy175
;
1029 case 'r': goto yy176
;
1034 yych
= *(mrk
= ++cur
);
1038 case '\'': goto yy177
;
1040 case 'n': goto yy179
;
1045 yych
= *(mrk
= ++cur
);
1048 case 'a': goto yy180
;
1053 yych
= *(mrk
= ++cur
);
1056 case 'v': goto yy181
;
1061 #line 340 "src/parser.re"
1062 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1063 #line 1064 "src/parser.c"
1066 switch ((yych
= *cur
)) {
1141 case 0x7F: goto yy78
;
1142 default: goto yy182
;
1145 #line 355 "src/parser.re"
1146 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1147 #line 1148 "src/parser.c"
1150 #line 341 "src/parser.re"
1151 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1152 #line 1153 "src/parser.c"
1155 #line 357 "src/parser.re"
1156 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1157 #line 1158 "src/parser.c"
1160 yych
= *(mrk
= ++cur
);
1162 case '_': goto yy185
;
1167 yych
= *(mrk
= ++cur
);
1169 case 'O': goto yy147
;
1170 case 'o': goto yy186
;
1175 yych
= *(mrk
= ++cur
);
1178 case 'a': goto yy148
;
1179 case 'O': goto yy149
;
1180 case 'h': goto yy187
;
1181 case 'o': goto yy188
;
1186 yych
= *(mrk
= ++cur
);
1189 case 'e': goto yy150
;
1190 case 'o': goto yy189
;
1195 yych
= *(mrk
= ++cur
);
1198 case 'l': goto yy151
;
1199 case 'N': goto yy152
;
1201 case 'r': goto yy153
;
1202 case 'n': goto yy190
;
1207 yych
= *(mrk
= ++cur
);
1210 case 'a': goto yy154
;
1211 case 'L': goto yy155
;
1213 case 'r': goto yy156
;
1215 case 'u': goto yy157
;
1216 case 'l': goto yy191
;
1221 yych
= *(mrk
= ++cur
);
1224 case 'f': goto yy158
;
1225 case 'N': goto yy160
;
1226 case 'n': goto yy192
;
1231 yych
= *(mrk
= ++cur
);
1234 case 'e': goto yy163
;
1235 case 'I': goto yy164
;
1236 case 'i': goto yy193
;
1237 case 'o': goto yy194
;
1242 yych
= *(mrk
= ++cur
);
1245 case 'a': goto yy168
;
1247 case 'o': goto yy169
;
1248 case 'R': goto yy170
;
1249 case 'r': goto yy195
;
1254 yych
= *(mrk
= ++cur
);
1257 case 'e': goto yy172
;
1258 case 'T': goto yy173
;
1259 case 'h': goto yy196
;
1260 case 'i': goto yy197
;
1261 case 't': goto yy198
;
1266 yych
= *(mrk
= ++cur
);
1269 case 'e': goto yy174
;
1271 case 'o': goto yy175
;
1273 case 'r': goto yy176
;
1274 case 'y': goto yy199
;
1279 yych
= *(mrk
= ++cur
);
1283 case '\'': goto yy200
;
1284 case '8': goto yy202
;
1285 case 'N': goto yy179
;
1286 case 'i': goto yy203
;
1287 case 'n': goto yy204
;
1292 yych
= *(mrk
= ++cur
);
1294 case 'o': goto yy205
;
1299 #line 338 "src/parser.re"
1300 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1301 #line 1302 "src/parser.c"
1304 switch ((yych
= *cur
)) {
1305 case '|': goto yy206
;
1309 #line 356 "src/parser.re"
1310 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1311 #line 1312 "src/parser.c"
1314 #line 339 "src/parser.re"
1315 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1316 #line 1317 "src/parser.c"
1319 #line 348 "src/parser.re"
1320 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1321 #line 1322 "src/parser.c"
1324 #line 342 "src/parser.re"
1325 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1326 #line 1327 "src/parser.c"
1329 #line 331 "src/parser.re"
1330 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1331 #line 1332 "src/parser.c"
1334 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1401 case 0x7F: goto yy110
;
1402 default: goto yy108
;
1405 #line 447 "src/parser.re"
1406 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1407 #line 1408 "src/parser.c"
1410 #line 344 "src/parser.re"
1411 { NEWTOKEN(PSI_T_AND
); goto start
; }
1412 #line 1413 "src/parser.c"
1425 case '9': goto yy116
;
1426 default: goto yy114
;
1441 case 10: goto yy241
;
1442 case 11: goto yy243
;
1443 case 12: goto yy252
;
1444 case 13: goto yy271
;
1445 case 14: goto yy302
;
1446 case 15: goto yy304
;
1447 case 16: goto yy310
;
1448 case 17: goto yy318
;
1449 case 18: goto yy330
;
1450 case 19: goto yy338
;
1451 case 20: goto yy342
;
1452 case 21: goto yy348
;
1453 case 22: goto yy350
;
1454 case 23: goto yy354
;
1455 case 24: goto yy361
;
1456 case 25: goto yy363
;
1457 case 26: goto yy373
;
1458 case 27: goto yy375
;
1459 case 28: goto yy382
;
1460 case 29: goto yy385
;
1461 case 30: goto yy387
;
1462 case 31: goto yy389
;
1463 case 32: goto yy393
;
1464 case 33: goto yy398
;
1465 case 34: goto yy416
;
1466 case 35: goto yy423
;
1467 case 36: goto yy426
;
1468 case 37: goto yy433
;
1469 case 38: goto yy442
;
1470 case 39: goto yy445
;
1471 case 40: goto yy450
;
1472 case 41: goto yy452
;
1473 case 42: goto yy456
;
1474 case 43: goto yy459
;
1475 case 44: goto yy461
;
1476 case 45: goto yy463
;
1477 case 46: goto yy468
;
1478 case 47: goto yy470
;
1479 case 48: goto yy472
;
1480 case 49: goto yy474
;
1481 case 50: goto yy476
;
1482 case 51: goto yy481
;
1483 case 52: goto yy490
;
1484 case 53: goto yy495
;
1485 case 54: goto yy497
;
1486 case 55: goto yy499
;
1487 case 56: goto yy501
;
1488 case 57: goto yy509
;
1489 case 58: goto yy513
;
1490 case 59: goto yy517
;
1491 case 60: goto yy519
;
1492 case 61: goto yy524
;
1493 case 62: goto yy529
;
1494 case 63: goto yy531
;
1495 case 64: goto yy536
;
1496 case 65: goto yy538
;
1497 case 66: goto yy540
;
1498 case 67: goto yy544
;
1499 case 68: goto yy549
;
1500 case 69: goto yy552
;
1501 case 70: goto yy554
;
1502 case 71: goto yy556
;
1503 case 72: goto yy558
;
1504 case 73: goto yy563
;
1505 case 74: goto yy565
;
1506 case 75: goto yy574
;
1507 case 76: goto yy576
;
1508 case 77: goto yy578
;
1509 case 78: goto yy580
;
1510 case 79: goto yy585
;
1511 case 80: goto yy587
;
1512 case 81: goto yy595
;
1513 case 82: goto yy599
;
1514 case 83: goto yy603
;
1515 case 84: goto yy607
;
1516 case 85: goto yy609
;
1517 default: goto yy614
;
1522 case '.': goto yy208
;
1523 default: goto yy114
;
1528 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1541 case '9': goto yy116
;
1543 case 'd': goto yy210
;
1545 case 'f': goto yy211
;
1547 case 'l': goto yy213
;
1548 default: goto yy118
;
1551 #line 314 "src/parser.re"
1552 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1553 #line 1554 "src/parser.c"
1556 #line 328 "src/parser.re"
1558 #line 1559 "src/parser.c"
1561 #line 329 "src/parser.re"
1562 { goto comment_sl
; }
1563 #line 1564 "src/parser.c"
1567 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1580 case '9': goto yy123
;
1582 case 'd': goto yy210
;
1584 case 'e': goto yy127
;
1586 case 'f': goto yy211
;
1588 case 'l': goto yy213
;
1589 default: goto yy118
;
1593 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1604 case '7': goto yy125
;
1606 case 'l': goto yy128
;
1608 case 'u': goto yy130
;
1615 case '-': goto yy113
;
1625 case '9': goto yy116
;
1626 default: goto yy114
;
1630 yych
= *(mrk
= ++cur
);
1633 case 'l': goto yy215
;
1635 case 'u': goto yy216
;
1636 default: goto yy129
;
1640 #line 310 "src/parser.re"
1641 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1642 #line 1643 "src/parser.c"
1645 switch ((yych
= *cur
)) {
1647 case 'l': goto yy218
;
1648 default: goto yy131
;
1652 #line 309 "src/parser.re"
1653 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1654 #line 1655 "src/parser.c"
1679 case 'f': goto yy219
;
1680 default: goto yy114
;
1684 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1752 case 'z': goto yy133
;
1753 case '>': goto yy221
;
1754 default: goto yy114
;
1758 #line 358 "src/parser.re"
1759 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1760 #line 1761 "src/parser.c"
1763 #line 360 "src/parser.re"
1764 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1765 #line 1766 "src/parser.c"
1768 #line 343 "src/parser.re"
1769 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1770 #line 1771 "src/parser.c"
1773 #line 361 "src/parser.re"
1774 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1775 #line 1776 "src/parser.c"
1778 #line 359 "src/parser.re"
1779 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1780 #line 1781 "src/parser.c"
1783 yych
= *(mrk
= ++cur
);
1786 case 'r': goto yy223
;
1791 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1868 case 0x7F: goto yy114
;
1869 default: goto yy182
;
1873 yych
= *(mrk
= ++cur
);
1876 case 'o': goto yy224
;
1881 yych
= *(mrk
= ++cur
);
1884 case 'l': goto yy225
;
1889 yych
= *(mrk
= ++cur
);
1892 case 'u': goto yy226
;
1897 yych
= *(mrk
= ++cur
);
1900 case 'f': goto yy227
;
1905 yych
= *(mrk
= ++cur
);
1908 case 'i': goto yy228
;
1910 case 's': goto yy229
;
1915 yych
= *(mrk
= ++cur
);
1918 case 'd': goto yy230
;
1923 yych
= *(mrk
= ++cur
);
1926 case 'r': goto yy231
;
1931 yych
= *(mrk
= ++cur
);
1934 case 'l': goto yy232
;
1939 yych
= *(mrk
= ++cur
);
1942 case 'o': goto yy233
;
1947 yych
= *(mrk
= ++cur
);
1950 case 'e': goto yy234
;
1955 yych
= *(mrk
= ++cur
);
1958 case 'n': goto yy235
;
1963 yych
= *(mrk
= ++cur
);
2028 case 0x7F: goto yy159
;
2030 case 'd': goto yy236
;
2032 case 'n': goto yy237
;
2033 case '\\': goto yy146
;
2037 #line 396 "src/parser.re"
2038 { NEWTOKEN(PSI_T_IF
); goto start
; }
2039 #line 2040 "src/parser.c"
2042 yych
= *(mrk
= ++cur
);
2045 case 'c': goto yy238
;
2047 case 't': goto yy239
;
2053 #line 326 "src/parser.re"
2054 { char_width
= SIZEOF_WCHAR_T
/8; }
2055 #line 2056 "src/parser.c"
2058 yych
= *(mrk
= ++cur
);
2061 case 't': goto yy240
;
2066 yych
= *(mrk
= ++cur
);
2069 case 'b': goto yy242
;
2074 yych
= *(mrk
= ++cur
);
2077 case 'x': goto yy244
;
2082 yych
= *(mrk
= ++cur
);
2085 case 'l': goto yy245
;
2090 yych
= *(mrk
= ++cur
);
2093 case 'j': goto yy246
;
2098 yych
= *(mrk
= ++cur
);
2101 case 't': goto yy247
;
2106 yych
= *(mrk
= ++cur
);
2109 case 's': goto yy248
;
2114 yych
= *(mrk
= ++cur
);
2117 case 'e': goto yy249
;
2122 yych
= *(mrk
= ++cur
);
2125 case 't': goto yy250
;
2130 yych
= *(mrk
= ++cur
);
2133 case 't': goto yy251
;
2138 yych
= *(mrk
= ++cur
);
2141 case 'a': goto yy253
;
2143 case 'r': goto yy254
;
2148 yych
= *(mrk
= ++cur
);
2151 case 'm': goto yy255
;
2156 yych
= *(mrk
= ++cur
);
2158 case '_': goto yy256
;
2163 yych
= *(mrk
= ++cur
);
2166 case 'u': goto yy257
;
2172 #line 325 "src/parser.re"
2174 #line 2175 "src/parser.c"
2177 yych
= *(mrk
= ++cur
);
2180 case 'd': goto yy258
;
2185 yych
= *(mrk
= ++cur
);
2188 case 'r': goto yy259
;
2193 yych
= *(mrk
= ++cur
);
2196 case 'a': goto yy260
;
2202 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2268 case 0x7F: goto yy184
;
2269 case '\\': goto yy146
;
2270 default: goto yy182
;
2273 #line 446 "src/parser.re"
2274 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2275 #line 2276 "src/parser.c"
2278 yych
= *(mrk
= ++cur
);
2280 case 'a': goto yy261
;
2281 case 'e': goto yy262
;
2282 case 'r': goto yy263
;
2287 yych
= *(mrk
= ++cur
);
2289 case 'O': goto yy224
;
2290 case 'o': goto yy264
;
2295 yych
= *(mrk
= ++cur
);
2297 case 'a': goto yy265
;
2302 yych
= *(mrk
= ++cur
);
2305 case 'u': goto yy226
;
2306 case 'n': goto yy266
;
2311 yych
= *(mrk
= ++cur
);
2313 case 'u': goto yy267
;
2318 yych
= *(mrk
= ++cur
);
2321 case 'd': goto yy230
;
2322 case 'u': goto yy268
;
2327 yych
= *(mrk
= ++cur
);
2329 case 'O': goto yy233
;
2330 case 'o': goto yy269
;
2335 yych
= *(mrk
= ++cur
);
2338 case 'c': goto yy238
;
2339 case 'T': goto yy239
;
2340 case 't': goto yy270
;
2345 yych
= *(mrk
= ++cur
);
2348 case 'b': goto yy242
;
2349 case 'n': goto yy272
;
2354 yych
= *(mrk
= ++cur
);
2356 case 'n': goto yy273
;
2361 yych
= *(mrk
= ++cur
);
2364 case 'e': goto yy249
;
2365 case 'a': goto yy274
;
2370 yych
= *(mrk
= ++cur
);
2372 case 'o': goto yy275
;
2377 yych
= *(mrk
= ++cur
);
2379 case 'g': goto yy276
;
2384 yych
= *(mrk
= ++cur
);
2387 case 'a': goto yy253
;
2388 case 'R': goto yy254
;
2389 case 'r': goto yy277
;
2394 yych
= *(mrk
= ++cur
);
2396 case 'p': goto yy278
;
2402 #line 324 "src/parser.re"
2404 #line 2405 "src/parser.c"
2407 yych
= *(mrk
= ++cur
);
2410 case '"': goto yy279
;
2415 yych
= *(mrk
= ++cur
);
2417 case 'n': goto yy281
;
2422 yych
= *(mrk
= ++cur
);
2425 case 'd': goto yy258
;
2426 case 'i': goto yy282
;
2427 case 's': goto yy283
;
2432 yych
= *(mrk
= ++cur
);
2434 case 'i': goto yy284
;
2439 #line 345 "src/parser.re"
2440 { NEWTOKEN(PSI_T_OR
); goto start
; }
2441 #line 2442 "src/parser.c"
2444 #line 365 "src/parser.re"
2445 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2446 #line 2447 "src/parser.c"
2451 case 'd': goto yy285
;
2453 case 'f': goto yy287
;
2455 case 'l': goto yy289
;
2456 default: goto yy114
;
2461 #line 315 "src/parser.re"
2462 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2463 #line 2464 "src/parser.c"
2467 #line 316 "src/parser.re"
2468 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2469 #line 2470 "src/parser.c"
2474 case 'u': goto yy291
;
2475 default: goto yy114
;
2481 #line 311 "src/parser.re"
2482 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2483 #line 2484 "src/parser.c"
2488 case 'l': goto yy291
;
2489 default: goto yy217
;
2494 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2498 case '.': goto yy293
;
2520 case 'f': goto yy219
;
2522 case 'l': goto yy128
;
2524 case 'p': goto yy127
;
2526 case 'u': goto yy130
;
2531 #line 448 "src/parser.re"
2532 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2533 #line 2534 "src/parser.c"
2536 yych
= *(mrk
= ++cur
);
2539 case 'a': goto yy295
;
2541 case 'v': goto yy296
;
2546 yych
= *(mrk
= ++cur
);
2549 case 'l': goto yy297
;
2554 yych
= *(mrk
= ++cur
);
2557 case 'l': goto yy298
;
2562 yych
= *(mrk
= ++cur
);
2565 case 'n': goto yy299
;
2570 yych
= *(mrk
= ++cur
);
2573 case 'i': goto yy300
;
2578 yych
= *(mrk
= ++cur
);
2581 case 'f': goto yy301
;
2586 yych
= *(mrk
= ++cur
);
2589 case 'e': goto yy303
;
2594 yych
= *(mrk
= ++cur
);
2597 case 'i': goto yy305
;
2602 yych
= *(mrk
= ++cur
);
2605 case 'o': goto yy306
;
2610 yych
= *(mrk
= ++cur
);
2613 case 's': goto yy307
;
2618 yych
= *(mrk
= ++cur
);
2621 case 'a': goto yy308
;
2626 yych
= *(mrk
= ++cur
);
2629 case 'e': goto yy309
;
2634 yych
= *(mrk
= ++cur
);
2637 case 'c': goto yy311
;
2642 yych
= *(mrk
= ++cur
);
2645 case 'e': goto yy312
;
2650 yych
= *(mrk
= ++cur
);
2653 case 'd': goto yy313
;
2658 yych
= *(mrk
= ++cur
);
2661 case 'l': goto yy314
;
2666 yych
= *(mrk
= ++cur
);
2669 case 'v': goto yy315
;
2674 yych
= *(mrk
= ++cur
);
2739 case 0x7F: goto yy241
;
2740 case '\\': goto yy146
;
2744 #line 421 "src/parser.re"
2745 { NEWTOKEN(PSI_T_LET
); goto start
; }
2746 #line 2747 "src/parser.c"
2749 yych
= *(mrk
= ++cur
);
2814 case 0x7F: goto yy243
;
2815 case '\\': goto yy146
;
2819 #line 420 "src/parser.re"
2820 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2821 #line 2822 "src/parser.c"
2824 yych
= *(mrk
= ++cur
);
2827 case 'e': goto yy316
;
2832 yych
= *(mrk
= ++cur
);
2835 case 'l': goto yy317
;
2840 yych
= *(mrk
= ++cur
);
2843 case 'e': goto yy319
;
2845 case 'v': goto yy320
;
2850 yych
= *(mrk
= ++cur
);
2853 case 'h': goto yy321
;
2858 yych
= *(mrk
= ++cur
);
2861 case 't': goto yy322
;
2866 yych
= *(mrk
= ++cur
);
2868 case '_': goto yy323
;
2873 yych
= *(mrk
= ++cur
);
2876 case 'u': goto yy324
;
2881 yych
= *(mrk
= ++cur
);
2946 case 0x7F: goto yy252
;
2947 case '\\': goto yy146
;
2951 #line 422 "src/parser.re"
2952 { NEWTOKEN(PSI_T_SET
); goto start
; }
2953 #line 2954 "src/parser.c"
2956 yych
= *(mrk
= ++cur
);
2959 case 't': goto yy325
;
2964 yych
= *(mrk
= ++cur
);
2967 case 'i': goto yy326
;
2969 case 'l': goto yy327
;
2971 case 'v': goto yy328
;
2976 yych
= *(mrk
= ++cur
);
2979 case 'p': goto yy329
;
2984 yych
= *(mrk
= ++cur
);
2987 case 'a': goto yy331
;
2989 case 'b': goto yy332
;
2991 case 'f': goto yy333
;
2993 case 'i': goto yy334
;
2995 case 'o': goto yy335
;
2997 case 's': goto yy336
;
3002 yych
= *(mrk
= ++cur
);
3005 case 'e': goto yy337
;
3010 yych
= *(mrk
= ++cur
);
3013 case 'e': goto yy339
;
3018 yych
= *(mrk
= ++cur
);
3021 case 'n': goto yy340
;
3026 yych
= *(mrk
= ++cur
);
3029 case 'l': goto yy341
;
3034 yych
= *(mrk
= ++cur
);
3036 case 's': goto yy343
;
3037 case 't': goto yy344
;
3042 yych
= *(mrk
= ++cur
);
3044 case 'x': goto yy345
;
3049 yych
= *(mrk
= ++cur
);
3051 case 'e': goto yy346
;
3056 yych
= *(mrk
= ++cur
);
3058 case 'L': goto yy297
;
3059 case 'l': goto yy347
;
3064 yych
= *(mrk
= ++cur
);
3066 case 'r': goto yy349
;
3071 yych
= *(mrk
= ++cur
);
3073 case 's': goto yy351
;
3078 yych
= *(mrk
= ++cur
);
3080 case 'b': goto yy352
;
3085 yych
= *(mrk
= ++cur
);
3087 case 'm': goto yy353
;
3092 yych
= *(mrk
= ++cur
);
3094 case 'A': goto yy308
;
3095 case 'a': goto yy355
;
3100 yych
= *(mrk
= ++cur
);
3165 case 0x7F: goto yy271
;
3166 case '1': goto yy356
;
3167 case '3': goto yy357
;
3168 case '6': goto yy358
;
3169 case '8': goto yy359
;
3171 case 'v': goto yy315
;
3172 case '\\': goto yy146
;
3176 #line 382 "src/parser.re"
3177 { NEWTOKEN(PSI_T_INT
); goto start
; }
3178 #line 3179 "src/parser.c"
3181 yych
= *(mrk
= ++cur
);
3183 case 'e': goto yy360
;
3188 yych
= *(mrk
= ++cur
);
3190 case 'g': goto yy362
;
3195 yych
= *(mrk
= ++cur
);
3197 case 'g': goto yy364
;
3202 yych
= *(mrk
= ++cur
);
3204 case 'r': goto yy365
;
3209 yych
= *(mrk
= ++cur
);
3211 case 'n': goto yy366
;
3216 yych
= *(mrk
= ++cur
);
3219 case 'i': goto yy326
;
3221 case 'l': goto yy327
;
3223 case 'v': goto yy328
;
3224 case 'u': goto yy367
;
3229 yych
= *(mrk
= ++cur
);
3231 case 'e': goto yy368
;
3237 #line 323 "src/parser.re"
3239 #line 3240 "src/parser.c"
3242 yych
= *(mrk
= ++cur
);
3244 case 't': goto yy369
;
3249 yych
= *(mrk
= ++cur
);
3251 case 'o': goto yy370
;
3256 yych
= *(mrk
= ++cur
);
3258 case 'i': goto yy371
;
3263 yych
= *(mrk
= ++cur
);
3265 case 'd': goto yy372
;
3271 #line 318 "src/parser.re"
3272 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3273 #line 3274 "src/parser.c"
3277 #line 317 "src/parser.re"
3278 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3279 #line 3280 "src/parser.c"
3283 #line 319 "src/parser.re"
3284 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3285 #line 3286 "src/parser.c"
3289 #line 312 "src/parser.re"
3290 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3291 #line 3292 "src/parser.c"
3294 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3318 case 'f': goto yy293
;
3320 case 'p': goto yy127
;
3321 default: goto yy114
;
3325 yych
= *(mrk
= ++cur
);
3328 case 'y': goto yy374
;
3333 yych
= *(mrk
= ++cur
);
3336 case 'a': goto yy376
;
3341 yych
= *(mrk
= ++cur
);
3344 case 'v': goto yy377
;
3349 yych
= *(mrk
= ++cur
);
3352 case 'a': goto yy378
;
3354 case 'b': goto yy379
;
3356 case 'o': goto yy380
;
3361 yych
= *(mrk
= ++cur
);
3364 case 't': goto yy381
;
3369 yych
= *(mrk
= ++cur
);
3372 case 'n': goto yy383
;
3377 yych
= *(mrk
= ++cur
);
3442 case 0x7F: goto yy302
;
3443 case '\\': goto yy146
;
3447 #line 400 "src/parser.re"
3448 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3449 #line 3450 "src/parser.c"
3452 yych
= *(mrk
= ++cur
);
3517 case 0x7F: goto yy304
;
3518 case '\\': goto yy146
;
3522 #line 399 "src/parser.re"
3523 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3524 #line 3525 "src/parser.c"
3527 yych
= *(mrk
= ++cur
);
3530 case 'f': goto yy384
;
3535 yych
= *(mrk
= ++cur
);
3538 case 'r': goto yy386
;
3543 yych
= *(mrk
= ++cur
);
3546 case 'e': goto yy388
;
3551 yych
= *(mrk
= ++cur
);
3554 case 't': goto yy390
;
3559 yych
= *(mrk
= ++cur
);
3624 case 0x7F: goto yy310
;
3625 case '\\': goto yy146
;
3629 #line 426 "src/parser.re"
3630 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3631 #line 3632 "src/parser.c"
3634 yych
= *(mrk
= ++cur
);
3637 case 't': goto yy391
;
3642 yych
= *(mrk
= ++cur
);
3645 case 'f': goto yy392
;
3650 yych
= *(mrk
= ++cur
);
3653 case 'e': goto yy394
;
3658 yych
= *(mrk
= ++cur
);
3661 case 'u': goto yy395
;
3666 yych
= *(mrk
= ++cur
);
3669 case 'a': goto yy396
;
3674 yych
= *(mrk
= ++cur
);
3677 case 'd': goto yy397
;
3682 yych
= *(mrk
= ++cur
);
3747 case 0x7F: goto yy318
;
3748 case '\\': goto yy146
;
3752 #line 411 "src/parser.re"
3753 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3754 #line 3755 "src/parser.c"
3757 yych
= *(mrk
= ++cur
);
3760 case 'c': goto yy399
;
3765 yych
= *(mrk
= ++cur
);
3768 case 'a': goto yy400
;
3773 yych
= *(mrk
= ++cur
);
3776 case 'v': goto yy401
;
3781 yych
= *(mrk
= ++cur
);
3783 case '_': goto yy402
;
3788 yych
= *(mrk
= ++cur
);
3791 case 'a': goto yy403
;
3796 yych
= *(mrk
= ++cur
);
3799 case 'r': goto yy404
;
3804 yych
= *(mrk
= ++cur
);
3807 case 'i': goto yy405
;
3812 yych
= *(mrk
= ++cur
);
3815 case 'n': goto yy406
;
3820 yych
= *(mrk
= ++cur
);
3823 case 'e': goto yy407
;
3828 yych
= *(mrk
= ++cur
);
3831 case 'a': goto yy408
;
3836 yych
= *(mrk
= ++cur
);
3901 case 0x7F: goto yy330
;
3902 case '\\': goto yy146
;
3906 #line 427 "src/parser.re"
3907 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3908 #line 3909 "src/parser.c"
3911 yych
= *(mrk
= ++cur
);
3914 case 'r': goto yy409
;
3919 yych
= *(mrk
= ++cur
);
3922 case 'o': goto yy410
;
3927 yych
= *(mrk
= ++cur
);
3930 case 'l': goto yy411
;
3935 yych
= *(mrk
= ++cur
);
3938 case 'n': goto yy412
;
3943 yych
= *(mrk
= ++cur
);
3946 case 'b': goto yy413
;
3951 yych
= *(mrk
= ++cur
);
3954 case 't': goto yy414
;
3959 yych
= *(mrk
= ++cur
);
4024 case 0x7F: goto yy338
;
4025 case '\\': goto yy146
;
4029 #line 409 "src/parser.re"
4030 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4031 #line 4032 "src/parser.c"
4034 yych
= *(mrk
= ++cur
);
4037 case 'f': goto yy415
;
4042 yych
= *(mrk
= ++cur
);
4045 case 'i': goto yy417
;
4050 yych
= *(mrk
= ++cur
);
4115 case 0x7F: goto yy342
;
4116 case '\\': goto yy146
;
4120 #line 436 "src/parser.re"
4121 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4122 #line 4123 "src/parser.c"
4125 yych
= *(mrk
= ++cur
);
4127 case 'm': goto yy418
;
4132 yych
= *(mrk
= ++cur
);
4134 case 't': goto yy419
;
4139 yych
= *(mrk
= ++cur
);
4141 case 't': goto yy420
;
4146 yych
= *(mrk
= ++cur
);
4148 case 's': goto yy421
;
4153 yych
= *(mrk
= ++cur
);
4218 case 0x7F: goto yy348
;
4220 case 'v': goto yy377
;
4221 case '\\': goto yy146
;
4225 #line 379 "src/parser.re"
4226 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4227 #line 4228 "src/parser.c"
4230 yych
= *(mrk
= ++cur
);
4295 case 0x7F: goto yy350
;
4296 case '\\': goto yy146
;
4300 #line 380 "src/parser.re"
4301 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4302 #line 4303 "src/parser.c"
4305 yych
= *(mrk
= ++cur
);
4307 case 't': goto yy422
;
4312 yych
= *(mrk
= ++cur
);
4314 case 'l': goto yy424
;
4319 yych
= *(mrk
= ++cur
);
4384 case 0x7F: goto yy354
;
4385 case '\\': goto yy146
;
4389 #line 376 "src/parser.re"
4390 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4391 #line 4392 "src/parser.c"
4394 yych
= *(mrk
= ++cur
);
4396 case 'T': goto yy390
;
4397 case 't': goto yy425
;
4402 yych
= *(mrk
= ++cur
);
4404 case '6': goto yy427
;
4409 yych
= *(mrk
= ++cur
);
4411 case '2': goto yy428
;
4416 yych
= *(mrk
= ++cur
);
4418 case '4': goto yy429
;
4423 yych
= *(mrk
= ++cur
);
4425 case '_': goto yy430
;
4430 yych
= *(mrk
= ++cur
);
4495 case 0x7F: goto yy361
;
4496 case '\\': goto yy146
;
4500 #line 372 "src/parser.re"
4501 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4502 #line 4503 "src/parser.c"
4505 yych
= *(mrk
= ++cur
);
4570 case 0x7F: goto yy363
;
4571 case '\\': goto yy146
;
4575 #line 383 "src/parser.re"
4576 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4577 #line 4578 "src/parser.c"
4580 yych
= *(mrk
= ++cur
);
4582 case 'm': goto yy431
;
4587 yych
= *(mrk
= ++cur
);
4589 case 't': goto yy432
;
4594 yych
= *(mrk
= ++cur
);
4596 case 'e': goto yy434
;
4601 yych
= *(mrk
= ++cur
);
4603 case 'c': goto yy435
;
4608 yych
= *(mrk
= ++cur
);
4610 case 'd': goto yy436
;
4615 yych
= *(mrk
= ++cur
);
4617 case '1': goto yy437
;
4618 case '3': goto yy438
;
4619 case '6': goto yy439
;
4620 case '8': goto yy440
;
4625 yych
= *(mrk
= ++cur
);
4627 case 'n': goto yy441
;
4632 yych
= *(mrk
= ++cur
);
4634 case 'g': goto yy443
;
4639 yych
= *(mrk
= ++cur
);
4704 case 0x7F: goto yy373
;
4705 case '\\': goto yy146
;
4709 #line 378 "src/parser.re"
4710 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4711 #line 4712 "src/parser.c"
4714 yych
= *(mrk
= ++cur
);
4779 case 0x7F: goto yy375
;
4780 case '\\': goto yy146
;
4784 #line 415 "src/parser.re"
4785 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4786 #line 4787 "src/parser.c"
4789 yych
= *(mrk
= ++cur
);
4792 case 'l': goto yy444
;
4797 yych
= *(mrk
= ++cur
);
4800 case 'a': goto yy446
;
4805 yych
= *(mrk
= ++cur
);
4808 case 'b': goto yy447
;
4813 yych
= *(mrk
= ++cur
);
4816 case 'a': goto yy448
;
4821 yych
= *(mrk
= ++cur
);
4824 case 'c': goto yy449
;
4829 yych
= *(mrk
= ++cur
);
4894 case 0x7F: goto yy382
;
4895 case '\\': goto yy146
;
4899 #line 437 "src/parser.re"
4900 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4901 #line 4902 "src/parser.c"
4904 yych
= *(mrk
= ++cur
);
4907 case 'e': goto yy451
;
4912 yych
= *(mrk
= ++cur
);
4977 case 0x7F: goto yy385
;
4978 case '\\': goto yy146
;
4982 #line 401 "src/parser.re"
4983 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4984 #line 4985 "src/parser.c"
4987 yych
= *(mrk
= ++cur
);
5052 case 0x7F: goto yy387
;
5053 case '\\': goto yy146
;
5057 #line 406 "src/parser.re"
5058 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5059 #line 5060 "src/parser.c"
5062 yych
= *(mrk
= ++cur
);
5127 case 0x7F: goto yy389
;
5128 case '\\': goto yy146
;
5132 #line 410 "src/parser.re"
5133 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5134 #line 5135 "src/parser.c"
5137 yych
= *(mrk
= ++cur
);
5140 case 'v': goto yy453
;
5145 yych
= *(mrk
= ++cur
);
5148 case 'i': goto yy454
;
5153 yych
= *(mrk
= ++cur
);
5218 case 0x7F: goto yy393
;
5219 case '\\': goto yy146
;
5223 #line 397 "src/parser.re"
5224 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5225 #line 5226 "src/parser.c"
5228 yych
= *(mrk
= ++cur
);
5231 case 'f': goto yy455
;
5236 yych
= *(mrk
= ++cur
);
5239 case 'd': goto yy457
;
5244 yych
= *(mrk
= ++cur
);
5247 case 'l': goto yy458
;
5252 yych
= *(mrk
= ++cur
);
5317 case 0x7F: goto yy398
;
5318 case '\\': goto yy146
;
5322 #line 412 "src/parser.re"
5323 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5324 #line 5325 "src/parser.c"
5327 yych
= *(mrk
= ++cur
);
5330 case 't': goto yy460
;
5335 yych
= *(mrk
= ++cur
);
5338 case 'l': goto yy462
;
5343 yych
= *(mrk
= ++cur
);
5346 case 'a': goto yy464
;
5351 yych
= *(mrk
= ++cur
);
5354 case 'a': goto yy465
;
5359 yych
= *(mrk
= ++cur
);
5362 case 's': goto yy466
;
5367 yych
= *(mrk
= ++cur
);
5370 case 'n': goto yy467
;
5375 yych
= *(mrk
= ++cur
);
5378 case 'c': goto yy469
;
5383 yych
= *(mrk
= ++cur
);
5386 case 'g': goto yy471
;
5391 yych
= *(mrk
= ++cur
);
5394 case 'n': goto yy473
;
5399 yych
= *(mrk
= ++cur
);
5402 case 'l': goto yy475
;
5407 yych
= *(mrk
= ++cur
);
5410 case 'r': goto yy477
;
5415 yych
= *(mrk
= ++cur
);
5418 case 'o': goto yy478
;
5423 yych
= *(mrk
= ++cur
);
5426 case 'o': goto yy479
;
5431 yych
= *(mrk
= ++cur
);
5434 case 't': goto yy480
;
5439 yych
= *(mrk
= ++cur
);
5442 case 'j': goto yy482
;
5447 yych
= *(mrk
= ++cur
);
5450 case 'r': goto yy483
;
5455 yych
= *(mrk
= ++cur
);
5520 case 0x7F: goto yy416
;
5521 case '\\': goto yy146
;
5525 #line 404 "src/parser.re"
5526 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5527 #line 5528 "src/parser.c"
5530 yych
= *(mrk
= ++cur
);
5533 case 'n': goto yy484
;
5538 yych
= *(mrk
= ++cur
);
5540 case '_': goto yy485
;
5545 yych
= *(mrk
= ++cur
);
5547 case 'r': goto yy486
;
5552 yych
= *(mrk
= ++cur
);
5554 case 'e': goto yy487
;
5559 yych
= *(mrk
= ++cur
);
5561 case 't': goto yy488
;
5566 yych
= *(mrk
= ++cur
);
5631 case 0x7F: goto yy423
;
5632 case '\\': goto yy146
;
5636 #line 377 "src/parser.re"
5637 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5638 #line 5639 "src/parser.c"
5641 yych
= *(mrk
= ++cur
);
5643 case 'e': goto yy489
;
5648 yych
= *(mrk
= ++cur
);
5713 case 0x7F: goto yy426
;
5715 case 'v': goto yy453
;
5716 case '\\': goto yy146
;
5720 #line 384 "src/parser.re"
5721 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5722 #line 5723 "src/parser.c"
5725 yych
= *(mrk
= ++cur
);
5727 case '_': goto yy491
;
5732 yych
= *(mrk
= ++cur
);
5734 case '_': goto yy492
;
5739 yych
= *(mrk
= ++cur
);
5741 case '_': goto yy493
;
5746 yych
= *(mrk
= ++cur
);
5748 case 't': goto yy494
;
5753 yych
= *(mrk
= ++cur
);
5755 case 'a': goto yy496
;
5760 yych
= *(mrk
= ++cur
);
5825 case 0x7F: goto yy433
;
5826 case '\\': goto yy146
;
5830 #line 381 "src/parser.re"
5831 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5832 #line 5833 "src/parser.c"
5835 yych
= *(mrk
= ++cur
);
5837 case 'd': goto yy498
;
5842 yych
= *(mrk
= ++cur
);
5844 case 't': goto yy500
;
5849 yych
= *(mrk
= ++cur
);
5851 case 'e': goto yy502
;
5856 yych
= *(mrk
= ++cur
);
5858 case '6': goto yy503
;
5863 yych
= *(mrk
= ++cur
);
5865 case '2': goto yy504
;
5870 yych
= *(mrk
= ++cur
);
5872 case '4': goto yy505
;
5877 yych
= *(mrk
= ++cur
);
5879 case '_': goto yy506
;
5884 yych
= *(mrk
= ++cur
);
5949 case 0x7F: goto yy442
;
5950 case '\\': goto yy146
;
5954 #line 375 "src/parser.re"
5955 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5956 #line 5957 "src/parser.c"
5959 yych
= *(mrk
= ++cur
);
5961 case 'n': goto yy507
;
5966 yych
= *(mrk
= ++cur
);
6031 case 0x7F: goto yy445
;
6032 case '\\': goto yy146
;
6036 #line 434 "src/parser.re"
6037 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6038 #line 6039 "src/parser.c"
6041 yych
= *(mrk
= ++cur
);
6044 case 'l': goto yy508
;
6049 yych
= *(mrk
= ++cur
);
6052 case 'l': goto yy510
;
6057 yych
= *(mrk
= ++cur
);
6060 case 'c': goto yy511
;
6065 yych
= *(mrk
= ++cur
);
6130 case 0x7F: goto yy450
;
6131 case '\\': goto yy146
;
6135 #line 438 "src/parser.re"
6136 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6137 #line 6138 "src/parser.c"
6140 yych
= *(mrk
= ++cur
);
6205 case 0x7F: goto yy452
;
6207 case 'd': goto yy512
;
6208 case '\\': goto yy146
;
6212 #line 402 "src/parser.re"
6213 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6214 #line 6215 "src/parser.c"
6217 yych
= *(mrk
= ++cur
);
6220 case 'a': goto yy514
;
6225 yych
= *(mrk
= ++cur
);
6228 case 'o': goto yy515
;
6233 yych
= *(mrk
= ++cur
);
6298 case 0x7F: goto yy456
;
6299 case '\\': goto yy146
;
6303 #line 398 "src/parser.re"
6304 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6305 #line 6306 "src/parser.c"
6308 yych
= *(mrk
= ++cur
);
6311 case 'e': goto yy516
;
6316 yych
= *(mrk
= ++cur
);
6381 case 0x7F: goto yy459
;
6382 case '\\': goto yy146
;
6386 #line 431 "src/parser.re"
6387 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6388 #line 6389 "src/parser.c"
6391 yych
= *(mrk
= ++cur
);
6456 case 0x7F: goto yy461
;
6457 case '\\': goto yy146
;
6461 #line 416 "src/parser.re"
6462 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6463 #line 6464 "src/parser.c"
6466 yych
= *(mrk
= ++cur
);
6531 case 0x7F: goto yy463
;
6532 case '\\': goto yy146
;
6536 #line 435 "src/parser.re"
6537 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6538 #line 6539 "src/parser.c"
6541 yych
= *(mrk
= ++cur
);
6544 case 'l': goto yy518
;
6549 yych
= *(mrk
= ++cur
);
6552 case 's': goto yy520
;
6557 yych
= *(mrk
= ++cur
);
6560 case 's': goto yy521
;
6565 yych
= *(mrk
= ++cur
);
6630 case 0x7F: goto yy468
;
6631 case '\\': goto yy146
;
6635 #line 425 "src/parser.re"
6636 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6637 #line 6638 "src/parser.c"
6640 yych
= *(mrk
= ++cur
);
6705 case 0x7F: goto yy470
;
6706 case '\\': goto yy146
;
6710 #line 418 "src/parser.re"
6711 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6712 #line 6713 "src/parser.c"
6715 yych
= *(mrk
= ++cur
);
6780 case 0x7F: goto yy472
;
6781 case '\\': goto yy146
;
6785 #line 414 "src/parser.re"
6786 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6787 #line 6788 "src/parser.c"
6790 yych
= *(mrk
= ++cur
);
6855 case 0x7F: goto yy474
;
6856 case '\\': goto yy146
;
6860 #line 428 "src/parser.re"
6861 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6862 #line 6863 "src/parser.c"
6865 yych
= *(mrk
= ++cur
);
6930 case 0x7F: goto yy476
;
6931 case '\\': goto yy146
;
6935 #line 429 "src/parser.re"
6936 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6937 #line 6938 "src/parser.c"
6940 yych
= *(mrk
= ++cur
);
6943 case 'a': goto yy522
;
6948 yych
= *(mrk
= ++cur
);
6951 case 'l': goto yy523
;
6956 yych
= *(mrk
= ++cur
);
6959 case 'a': goto yy525
;
6964 yych
= *(mrk
= ++cur
);
7029 case 0x7F: goto yy481
;
7030 case '\\': goto yy146
;
7034 #line 442 "src/parser.re"
7035 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7036 #line 7037 "src/parser.c"
7039 yych
= *(mrk
= ++cur
);
7042 case 'e': goto yy526
;
7047 yych
= *(mrk
= ++cur
);
7050 case 'i': goto yy527
;
7055 yych
= *(mrk
= ++cur
);
7058 case 'g': goto yy528
;
7063 yych
= *(mrk
= ++cur
);
7065 case '_': goto yy530
;
7070 yych
= *(mrk
= ++cur
);
7072 case 'i': goto yy532
;
7077 yych
= *(mrk
= ++cur
);
7079 case 'n': goto yy533
;
7084 yych
= *(mrk
= ++cur
);
7086 case 'r': goto yy534
;
7091 yych
= *(mrk
= ++cur
);
7156 case 0x7F: goto yy490
;
7157 case '\\': goto yy146
;
7161 #line 385 "src/parser.re"
7162 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7163 #line 7164 "src/parser.c"
7166 yych
= *(mrk
= ++cur
);
7168 case 't': goto yy535
;
7173 yych
= *(mrk
= ++cur
);
7175 case 't': goto yy537
;
7180 yych
= *(mrk
= ++cur
);
7182 case 't': goto yy539
;
7187 yych
= *(mrk
= ++cur
);
7252 case 0x7F: goto yy495
;
7253 case '\\': goto yy146
;
7257 #line 386 "src/parser.re"
7258 { NEWTOKEN(PSI_T_INT8
); goto start
; }
7259 #line 7260 "src/parser.c"
7262 yych
= *(mrk
= ++cur
);
7327 case 0x7F: goto yy497
;
7328 case '\\': goto yy146
;
7329 default: goto yy541
;
7332 #line 367 "src/parser.re"
7333 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7334 #line 7335 "src/parser.c"
7337 yych
= *(mrk
= ++cur
);
7402 case 0x7F: goto yy499
;
7403 case '\\': goto yy146
;
7407 #line 395 "src/parser.re"
7408 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7409 #line 7410 "src/parser.c"
7412 yych
= *(mrk
= ++cur
);
7477 case 0x7F: goto yy501
;
7478 case '\\': goto yy146
;
7482 #line 374 "src/parser.re"
7483 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7484 #line 7485 "src/parser.c"
7487 yych
= *(mrk
= ++cur
);
7489 case 'f': goto yy543
;
7494 yych
= *(mrk
= ++cur
);
7496 case '_': goto yy545
;
7501 yych
= *(mrk
= ++cur
);
7503 case '_': goto yy546
;
7508 yych
= *(mrk
= ++cur
);
7510 case '_': goto yy547
;
7515 yych
= *(mrk
= ++cur
);
7517 case 't': goto yy548
;
7522 yych
= *(mrk
= ++cur
);
7524 case 'e': goto yy550
;
7529 yych
= *(mrk
= ++cur
);
7594 case 0x7F: goto yy509
;
7595 case '\\': goto yy146
;
7599 #line 433 "src/parser.re"
7600 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7601 #line 7602 "src/parser.c"
7604 yych
= *(mrk
= ++cur
);
7607 case 'e': goto yy551
;
7612 yych
= *(mrk
= ++cur
);
7615 case 'k': goto yy553
;
7620 yych
= *(mrk
= ++cur
);
7685 case 0x7F: goto yy513
;
7686 case '\\': goto yy146
;
7690 #line 403 "src/parser.re"
7691 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7692 #line 7693 "src/parser.c"
7695 yych
= *(mrk
= ++cur
);
7698 case 'l': goto yy555
;
7703 yych
= *(mrk
= ++cur
);
7706 case 'n': goto yy557
;
7711 yych
= *(mrk
= ++cur
);
7776 case 0x7F: goto yy517
;
7777 case '\\': goto yy146
;
7778 case '_': goto yy559
;
7782 #line 407 "src/parser.re"
7783 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7784 #line 7785 "src/parser.c"
7787 yych
= *(mrk
= ++cur
);
7852 case 0x7F: goto yy519
;
7853 case '\\': goto yy146
;
7857 #line 430 "src/parser.re"
7858 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7859 #line 7860 "src/parser.c"
7862 yych
= *(mrk
= ++cur
);
7865 case 's': goto yy560
;
7870 yych
= *(mrk
= ++cur
);
7873 case 'e': goto yy561
;
7878 yych
= *(mrk
= ++cur
);
7881 case 'y': goto yy562
;
7886 yych
= *(mrk
= ++cur
);
7951 case 0x7F: goto yy524
;
7952 case '\\': goto yy146
;
7956 #line 444 "src/parser.re"
7957 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7958 #line 7959 "src/parser.c"
7961 yych
= *(mrk
= ++cur
);
7964 case 't': goto yy564
;
7969 yych
= *(mrk
= ++cur
);
7972 case 'c': goto yy566
;
7977 yych
= *(mrk
= ++cur
);
7980 case 'n': goto yy567
;
7985 yych
= *(mrk
= ++cur
);
8050 case 0x7F: goto yy529
;
8051 case '\\': goto yy146
;
8055 #line 405 "src/parser.re"
8056 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8057 #line 8058 "src/parser.c"
8060 yych
= *(mrk
= ++cur
);
8125 case 0x7F: goto yy531
;
8126 case '\\': goto yy146
;
8130 #line 371 "src/parser.re"
8131 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8132 #line 8133 "src/parser.c"
8135 yych
= *(mrk
= ++cur
);
8137 case 'b': goto yy568
;
8142 yych
= *(mrk
= ++cur
);
8144 case 's': goto yy569
;
8149 yych
= *(mrk
= ++cur
);
8151 case 'i': goto yy570
;
8156 yych
= *(mrk
= ++cur
);
8221 case 0x7F: goto yy536
;
8222 case '\\': goto yy146
;
8226 #line 388 "src/parser.re"
8227 { NEWTOKEN(PSI_T_INT16
); goto start
; }
8228 #line 8229 "src/parser.c"
8231 yych
= *(mrk
= ++cur
);
8296 case 0x7F: goto yy538
;
8297 case '\\': goto yy146
;
8301 #line 390 "src/parser.re"
8302 { NEWTOKEN(PSI_T_INT32
); goto start
; }
8303 #line 8304 "src/parser.c"
8306 yych
= *(mrk
= ++cur
);
8371 case 0x7F: goto yy540
;
8372 case '\\': goto yy146
;
8376 #line 392 "src/parser.re"
8377 { NEWTOKEN(PSI_T_INT64
); goto start
; }
8378 #line 8379 "src/parser.c"
8382 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8448 case 0x7F: goto yy55
;
8449 case '\\': goto yy146
;
8450 case 'o': goto yy571
;
8451 default: goto yy541
;
8455 yych
= *(mrk
= ++cur
);
8520 case 0x7F: goto yy544
;
8521 case '\\': goto yy146
;
8525 #line 373 "src/parser.re"
8526 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8527 #line 8528 "src/parser.c"
8530 yych
= *(mrk
= ++cur
);
8532 case 't': goto yy573
;
8537 yych
= *(mrk
= ++cur
);
8539 case 't': goto yy575
;
8544 yych
= *(mrk
= ++cur
);
8546 case 't': goto yy577
;
8551 yych
= *(mrk
= ++cur
);
8616 case 0x7F: goto yy549
;
8617 case '\\': goto yy146
;
8621 #line 387 "src/parser.re"
8622 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
8623 #line 8624 "src/parser.c"
8626 yych
= *(mrk
= ++cur
);
8628 case 'd': goto yy579
;
8633 yych
= *(mrk
= ++cur
);
8698 case 0x7F: goto yy552
;
8699 case '\\': goto yy146
;
8703 #line 413 "src/parser.re"
8704 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8705 #line 8706 "src/parser.c"
8708 yych
= *(mrk
= ++cur
);
8773 case 0x7F: goto yy554
;
8774 case '\\': goto yy146
;
8778 #line 417 "src/parser.re"
8779 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8780 #line 8781 "src/parser.c"
8783 yych
= *(mrk
= ++cur
);
8848 case 0x7F: goto yy556
;
8849 case '\\': goto yy146
;
8853 #line 432 "src/parser.re"
8854 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8855 #line 8856 "src/parser.c"
8858 yych
= *(mrk
= ++cur
);
8923 case 0x7F: goto yy558
;
8924 case '\\': goto yy146
;
8928 #line 419 "src/parser.re"
8929 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8930 #line 8931 "src/parser.c"
8933 yych
= *(mrk
= ++cur
);
8936 case 'n': goto yy581
;
8941 yych
= *(mrk
= ++cur
);
8944 case 'e': goto yy582
;
8949 yych
= *(mrk
= ++cur
);
8952 case 'r': goto yy583
;
8957 yych
= *(mrk
= ++cur
);
9022 case 0x7F: goto yy563
;
9023 case '\\': goto yy146
;
9027 #line 440 "src/parser.re"
9028 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
9029 #line 9030 "src/parser.c"
9032 yych
= *(mrk
= ++cur
);
9097 case 0x7F: goto yy565
;
9098 case '\\': goto yy146
;
9102 #line 443 "src/parser.re"
9103 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
9104 #line 9105 "src/parser.c"
9107 yych
= *(mrk
= ++cur
);
9110 case 't': goto yy584
;
9115 yych
= *(mrk
= ++cur
);
9118 case 'g': goto yy586
;
9123 yych
= *(mrk
= ++cur
);
9125 case 'u': goto yy588
;
9130 yych
= *(mrk
= ++cur
);
9132 case 'i': goto yy589
;
9137 yych
= *(mrk
= ++cur
);
9139 case 'c': goto yy590
;
9145 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9211 case 0x7F: goto yy55
;
9212 case '\\': goto yy146
;
9213 case 'n': goto yy591
;
9214 case 'o': goto yy571
;
9215 default: goto yy541
;
9219 yych
= *(mrk
= ++cur
);
9284 case 0x7F: goto yy574
;
9285 case '\\': goto yy146
;
9289 #line 389 "src/parser.re"
9290 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
9291 #line 9292 "src/parser.c"
9294 yych
= *(mrk
= ++cur
);
9359 case 0x7F: goto yy576
;
9360 case '\\': goto yy146
;
9364 #line 391 "src/parser.re"
9365 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
9366 #line 9367 "src/parser.c"
9369 yych
= *(mrk
= ++cur
);
9434 case 0x7F: goto yy578
;
9435 case '\\': goto yy146
;
9439 #line 393 "src/parser.re"
9440 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
9441 #line 9442 "src/parser.c"
9444 yych
= *(mrk
= ++cur
);
9509 case 0x7F: goto yy580
;
9510 case '\\': goto yy146
;
9514 #line 394 "src/parser.re"
9515 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9516 #line 9517 "src/parser.c"
9519 yych
= *(mrk
= ++cur
);
9522 case 'e': goto yy592
;
9527 yych
= *(mrk
= ++cur
);
9530 case 'r': goto yy593
;
9535 yych
= *(mrk
= ++cur
);
9538 case 't': goto yy594
;
9543 yych
= *(mrk
= ++cur
);
9608 case 0x7F: goto yy585
;
9609 case '\\': goto yy146
;
9613 #line 439 "src/parser.re"
9614 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9615 #line 9616 "src/parser.c"
9618 yych
= *(mrk
= ++cur
);
9683 case 0x7F: goto yy587
;
9684 case '\\': goto yy146
;
9688 #line 441 "src/parser.re"
9689 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9690 #line 9691 "src/parser.c"
9693 yych
= *(mrk
= ++cur
);
9695 case 't': goto yy596
;
9700 yych
= *(mrk
= ++cur
);
9702 case 'o': goto yy597
;
9707 yych
= *(mrk
= ++cur
);
9709 case 't': goto yy598
;
9715 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9781 case 0x7F: goto yy55
;
9782 case '\\': goto yy146
;
9783 case 'c': goto yy600
;
9784 case 'o': goto yy571
;
9785 default: goto yy541
;
9789 yych
= *(mrk
= ++cur
);
9792 case 'x': goto yy601
;
9797 yych
= *(mrk
= ++cur
);
9800 case 't': goto yy602
;
9805 yych
= *(mrk
= ++cur
);
9870 case 0x7F: goto yy595
;
9871 case '\\': goto yy146
;
9875 #line 423 "src/parser.re"
9876 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9877 #line 9878 "src/parser.c"
9880 yych
= *(mrk
= ++cur
);
9882 case 'e': goto yy604
;
9887 yych
= *(mrk
= ++cur
);
9889 case 'n': goto yy605
;
9894 yych
= *(mrk
= ++cur
);
9959 case 0x7F: goto yy599
;
9960 case '\\': goto yy146
;
9964 #line 369 "src/parser.re"
9965 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9966 #line 9967 "src/parser.c"
9970 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10036 case 0x7F: goto yy55
;
10037 case '\\': goto yy146
;
10038 case 'e': goto yy606
;
10039 case 'o': goto yy571
;
10040 default: goto yy541
;
10044 yych
= *(mrk
= ++cur
);
10047 case 't': goto yy608
;
10048 default: goto yy62
;
10052 yych
= *(mrk
= ++cur
);
10117 case 0x7F: goto yy603
;
10118 case '\\': goto yy146
;
10119 default: goto yy61
;
10122 #line 424 "src/parser.re"
10123 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
10124 #line 10125 "src/parser.c"
10127 yych
= *(mrk
= ++cur
);
10129 case '_': goto yy610
;
10130 default: goto yy62
;
10134 yych
= *(mrk
= ++cur
);
10136 case '_': goto yy611
;
10137 default: goto yy62
;
10142 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10208 case 0x7F: goto yy607
;
10209 case '\\': goto yy146
;
10210 case 'o': goto yy571
;
10211 default: goto yy541
;
10214 #line 368 "src/parser.re"
10215 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
10216 #line 10217 "src/parser.c"
10219 yych
= *(mrk
= ++cur
);
10284 case 0x7F: goto yy609
;
10285 case '\\': goto yy146
;
10286 default: goto yy61
;
10289 #line 408 "src/parser.re"
10290 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
10291 #line 10292 "src/parser.c"
10294 yych
= *(mrk
= ++cur
);
10296 case '_': goto yy612
;
10297 default: goto yy62
;
10301 yych
= *(mrk
= ++cur
);
10303 case '_': goto yy613
;
10304 default: goto yy62
;
10308 yych
= *(mrk
= ++cur
);
10369 case 0x7F: goto yy55
;
10372 case ' ': goto yy615
;
10373 case '(': goto yy617
;
10374 case '\\': goto yy146
;
10375 default: goto yy61
;
10379 yych
= *(mrk
= ++cur
);
10444 case 0x7F: goto yy614
;
10445 case '\\': goto yy146
;
10446 default: goto yy61
;
10449 #line 370 "src/parser.re"
10450 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10451 #line 10452 "src/parser.c"
10454 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10459 case ' ': goto yy615
;
10460 case '(': goto yy617
;
10461 default: goto yy114
;
10466 case '(': goto yy618
;
10467 default: goto yy114
;
10471 #line 449 "src/parser.re"
10472 { parens
= 2; goto cpp_attribute
; }
10473 #line 10474 "src/parser.c"
10475 #line 455 "src/parser.re"
10480 #line 10481 "src/parser.c"
10482 unsigned char yych
;
10483 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10487 case '\r': goto yy624
;
10488 case '\'': goto yy626
;
10489 case '\\': goto yy628
;
10490 default: goto yy622
;
10494 #line 473 "src/parser.re"
10495 { escaped
= false; goto character
; }
10496 #line 10497 "src/parser.c"
10499 #line 460 "src/parser.re"
10500 { NEWLINE(); goto character
; }
10501 #line 10502 "src/parser.c"
10504 #line 462 "src/parser.re"
10511 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10513 token
->flags
= char_width
;
10516 #line 10517 "src/parser.c"
10519 #line 461 "src/parser.re"
10520 { escaped
= !escaped
; goto character
; }
10521 #line 10522 "src/parser.c"
10523 #line 475 "src/parser.re"
10528 #line 10529 "src/parser.c"
10530 unsigned char yych
;
10531 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10535 case '\r': goto yy634
;
10536 case '"': goto yy636
;
10537 case '\\': goto yy638
;
10538 default: goto yy632
;
10542 #line 493 "src/parser.re"
10543 { escaped
= false; goto string
; }
10544 #line 10545 "src/parser.c"
10547 #line 480 "src/parser.re"
10548 { NEWLINE(); goto string
; }
10549 #line 10550 "src/parser.c"
10552 #line 482 "src/parser.re"
10559 NEWTOKEN(PSI_T_QUOTED_STRING
);
10561 token
->flags
= char_width
;
10564 #line 10565 "src/parser.c"
10567 #line 481 "src/parser.re"
10568 { escaped
= !escaped
; goto string
; }
10569 #line 10570 "src/parser.c"
10571 #line 495 "src/parser.re"
10576 #line 10577 "src/parser.c"
10578 unsigned char yych
;
10579 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10583 case '\r': goto yy644
;
10584 case '*': goto yy646
;
10585 default: goto yy642
;
10590 #line 502 "src/parser.re"
10592 #line 10593 "src/parser.c"
10595 #line 500 "src/parser.re"
10596 { NEWLINE(); goto comment
; }
10597 #line 10598 "src/parser.c"
10601 case '/': goto yy647
;
10602 default: goto yy643
;
10606 #line 501 "src/parser.re"
10607 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10608 #line 10609 "src/parser.c"
10610 #line 504 "src/parser.re"
10615 #line 10616 "src/parser.c"
10617 unsigned char yych
;
10618 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10622 case '\r': goto yy653
;
10623 default: goto yy651
;
10627 #line 510 "src/parser.re"
10628 { goto comment_sl
; }
10629 #line 10630 "src/parser.c"
10632 #line 509 "src/parser.re"
10633 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10634 #line 10635 "src/parser.c"
10636 #line 512 "src/parser.re"
10642 #line 10643 "src/parser.c"
10644 unsigned char yych
;
10645 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10649 case '\r': goto yy659
;
10650 case '(': goto yy661
;
10651 case ')': goto yy663
;
10652 default: goto yy657
;
10656 #line 521 "src/parser.re"
10657 { goto cpp_attribute
; }
10658 #line 10659 "src/parser.c"
10661 #line 520 "src/parser.re"
10662 { NEWLINE(); goto cpp_attribute
; }
10663 #line 10664 "src/parser.c"
10666 #line 518 "src/parser.re"
10667 { ++parens
; goto cpp_attribute
; }
10668 #line 10669 "src/parser.c"
10671 #line 519 "src/parser.re"
10672 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10673 #line 10674 "src/parser.c"
10675 #line 523 "src/parser.re"
10679 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10680 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10681 psi_plist_free(tokens
);
10686 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);