1 /* Generated by re2c 0.16 on Fri Mar 24 12:21:07 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
)) {
199 if (P
->flags
& PSI_DEBUG
) {
200 psi_parser_proc_debug
= 1;
202 rc
= psi_parser_proc_parse(P
, tokens
, processed
);
203 if (P
->flags
& PSI_DEBUG
) {
204 psi_parser_proc_debug
= 0;
211 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
213 struct psi_plist
*scanned
, *preproc
;
214 size_t processed
= 0;
216 if (!(scanned
= psi_parser_scan(P
, I
))) {
220 if (!(preproc
= psi_parser_preprocess(P
, scanned
))) {
221 psi_plist_free(scanned
);
225 if (!psi_parser_process(P
, preproc
, &processed
)) {
226 psi_plist_free(preproc
);
230 psi_plist_free(preproc
);
234 void psi_parser_dtor(struct psi_parser
*P
)
236 psi_cpp_free(&P
->preproc
);
237 psi_data_dtor(PSI_DATA(P
));
239 memset(P
, 0, sizeof(*P
));
242 void psi_parser_free(struct psi_parser
**P
)
255 #define NEWTOKEN(t) \
256 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
257 tokens = psi_plist_add(tokens, &token); \
258 if (P->flags & PSI_DEBUG) { \
259 fprintf(stderr, "PSI< "); \
260 psi_token_dump(2, token); \
264 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
266 struct psi_plist
*tokens
;
267 struct psi_token
*token
;
268 const char *tok
, *cur
, *lim
, *mrk
, *eol
;
270 tok
= mrk
= eol
= cur
= I
->buffer
;
271 lim
= I
->buffer
+ I
->length
;
273 tokens
= psi_plist_init((void (*)(void *)) psi_token_free
);
279 #line 280 "src/parser.c"
282 unsigned int yyaccept
= 0;
283 if ((lim
- cur
) < 13) if (cur
>= lim
) goto done
;;
329 case '\'': goto yy19
;
391 case '\\': goto yy74
;
404 #line 433 "src/parser.re"
405 { NEWTOKEN(-2); goto error
; }
406 #line 407 "src/parser.c"
409 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
417 #line 432 "src/parser.re"
418 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
419 #line 420 "src/parser.c"
422 #line 431 "src/parser.re"
423 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
424 #line 425 "src/parser.c"
427 switch ((yych
= *cur
)) {
432 #line 335 "src/parser.re"
433 { NEWTOKEN(PSI_T_NOT
); goto start
; }
434 #line 435 "src/parser.c"
437 yych
= *(mrk
= ++cur
);
444 #line 318 "src/parser.re"
445 { NEWTOKEN(PSI_T_HASH
); goto start
; }
446 #line 447 "src/parser.c"
519 #line 336 "src/parser.re"
520 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
521 #line 522 "src/parser.c"
524 switch ((yych
= *cur
)) {
529 #line 337 "src/parser.re"
530 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
531 #line 532 "src/parser.c"
534 yych
= *(mrk
= ++cur
);
541 #line 319 "src/parser.re"
542 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
543 #line 544 "src/parser.c"
546 #line 320 "src/parser.re"
547 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
548 #line 549 "src/parser.c"
551 #line 333 "src/parser.re"
552 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
553 #line 554 "src/parser.c"
556 switch ((yych
= *cur
)) {
557 case '.': goto yy100
;
571 #line 338 "src/parser.re"
572 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
573 #line 574 "src/parser.c"
576 #line 322 "src/parser.re"
577 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
578 #line 579 "src/parser.c"
581 switch ((yych
= *cur
)) {
582 case '.': goto yy100
;
596 #line 339 "src/parser.re"
597 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
598 #line 599 "src/parser.c"
601 yych
= *(mrk
= ++cur
);
603 case '.': goto yy102
;
613 case '9': goto yy100
;
615 case 'd': goto yy104
;
619 case 'l': goto yy105
;
623 #line 350 "src/parser.re"
624 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
625 #line 626 "src/parser.c"
628 switch ((yych
= *cur
)) {
629 case '*': goto yy106
;
630 case '/': goto yy108
;
634 #line 340 "src/parser.re"
635 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
636 #line 637 "src/parser.c"
639 yych
= *(mrk
= ++cur
);
641 case '.': goto yy110
;
649 case '7': goto yy112
;
651 case 'e': goto yy114
;
653 case 'l': goto yy115
;
655 case 'u': goto yy116
;
657 case 'x': goto yy117
;
661 #line 424 "src/parser.re"
662 { NEWTOKEN(PSI_T_NUMBER
); goto start
; }
663 #line 664 "src/parser.c"
667 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
670 case '.': goto yy110
;
682 case 'e': goto yy114
;
684 case 'l': goto yy115
;
686 case 'u': goto yy116
;
691 #line 323 "src/parser.re"
692 { NEWTOKEN(PSI_T_COLON
); goto start
; }
693 #line 694 "src/parser.c"
696 #line 321 "src/parser.re"
697 { NEWTOKEN(PSI_T_EOS
); goto start
; }
698 #line 699 "src/parser.c"
701 yych
= *(mrk
= ++cur
);
768 case 'z': goto yy118
;
769 case '<': goto yy120
;
770 case '=': goto yy122
;
774 #line 348 "src/parser.re"
775 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
776 #line 777 "src/parser.c"
779 switch ((yych
= *cur
)) {
780 case '=': goto yy124
;
784 #line 332 "src/parser.re"
785 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
786 #line 787 "src/parser.c"
789 switch ((yych
= *cur
)) {
790 case '=': goto yy126
;
791 case '>': goto yy128
;
795 #line 349 "src/parser.re"
796 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
797 #line 798 "src/parser.c"
800 yych
= *(mrk
= ++cur
);
803 case 'r': goto yy130
;
807 #line 425 "src/parser.re"
808 { NEWTOKEN(PSI_T_NAME
); goto start
; }
809 #line 810 "src/parser.c"
812 yych
= *(mrk
= ++cur
);
815 case 'o': goto yy132
;
820 yych
= *(mrk
= ++cur
);
823 case 'a': goto yy133
;
825 case 'h': goto yy134
;
827 case 'o': goto yy135
;
832 yych
= *(mrk
= ++cur
);
835 case 'e': goto yy136
;
837 case 'o': goto yy137
;
842 yych
= *(mrk
= ++cur
);
845 case 'l': goto yy138
;
847 case 'n': goto yy139
;
849 case 'r': goto yy140
;
854 yych
= *(mrk
= ++cur
);
857 case 'a': goto yy141
;
859 case 'l': goto yy142
;
861 case 'r': goto yy143
;
863 case 'u': goto yy144
;
869 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
936 case 0x7F: goto yy51
;
937 case '\\': goto yy131
;
942 yych
= *(mrk
= ++cur
);
945 case 'f': goto yy145
;
947 case 'n': goto yy147
;
952 yych
= *(mrk
= ++cur
);
954 case '"': goto yy148
;
955 case '\'': goto yy149
;
957 case 'e': goto yy150
;
959 case 'i': goto yy151
;
961 case 'o': goto yy152
;
966 yych
= *(mrk
= ++cur
);
969 case 'i': goto yy153
;
974 yych
= *(mrk
= ++cur
);
977 case 'u': goto yy154
;
982 yych
= *(mrk
= ++cur
);
985 case 'b': goto yy155
;
990 yych
= *(mrk
= ++cur
);
993 case 'a': goto yy156
;
995 case 'o': goto yy157
;
997 case 'r': goto yy158
;
1002 yych
= *(mrk
= ++cur
);
1005 case 'e': goto yy159
;
1010 yych
= *(mrk
= ++cur
);
1013 case 'e': goto yy160
;
1015 case 'h': goto yy161
;
1017 case 'i': goto yy162
;
1019 case 't': goto yy163
;
1024 yych
= *(mrk
= ++cur
);
1027 case 'e': goto yy164
;
1029 case 'o': goto yy165
;
1031 case 'r': goto yy166
;
1033 case 'y': goto yy167
;
1038 yych
= *(mrk
= ++cur
);
1041 case 'i': goto yy168
;
1043 case 'n': goto yy169
;
1048 yych
= *(mrk
= ++cur
);
1051 case 'o': goto yy170
;
1056 yych
= *(mrk
= ++cur
);
1059 case 'a': goto yy171
;
1064 yych
= *(mrk
= ++cur
);
1067 case 'v': goto yy172
;
1072 #line 326 "src/parser.re"
1073 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1074 #line 1075 "src/parser.c"
1077 switch ((yych
= *cur
)) {
1152 case 0x7F: goto yy75
;
1153 default: goto yy173
;
1156 #line 341 "src/parser.re"
1157 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1158 #line 1159 "src/parser.c"
1161 #line 327 "src/parser.re"
1162 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1163 #line 1164 "src/parser.c"
1166 #line 343 "src/parser.re"
1167 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1168 #line 1169 "src/parser.c"
1171 yych
= *(mrk
= ++cur
);
1174 case 'e': goto yy150
;
1176 case 'i': goto yy151
;
1178 case 'o': goto yy152
;
1183 #line 324 "src/parser.re"
1184 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1185 #line 1186 "src/parser.c"
1188 switch ((yych
= *cur
)) {
1189 case '|': goto yy176
;
1193 #line 342 "src/parser.re"
1194 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1195 #line 1196 "src/parser.c"
1198 #line 325 "src/parser.re"
1199 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1200 #line 1201 "src/parser.c"
1203 #line 334 "src/parser.re"
1204 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1205 #line 1206 "src/parser.c"
1208 #line 328 "src/parser.re"
1209 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1210 #line 1211 "src/parser.c"
1213 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1216 case '"': goto yy178
;
1221 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1288 case 0x7F: goto yy95
;
1292 #line 427 "src/parser.re"
1293 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1294 #line 1295 "src/parser.c"
1297 #line 330 "src/parser.re"
1298 { NEWTOKEN(PSI_T_AND
); goto start
; }
1299 #line 1300 "src/parser.c"
1302 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1305 case '\'': goto yy180
;
1306 case '\\': goto yy182
;
1312 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1324 case '9': goto yy100
;
1326 case 'd': goto yy104
;
1330 case 'l': goto yy105
;
1336 case '.': goto yy184
;
1337 default: goto yy103
;
1352 case 10: goto yy228
;
1353 case 11: goto yy181
;
1354 case 12: goto yy250
;
1355 case 13: goto yy253
;
1356 case 14: goto yy259
;
1357 case 15: goto yy261
;
1358 case 16: goto yy264
;
1359 case 17: goto yy269
;
1360 case 18: goto yy280
;
1361 case 19: goto yy283
;
1362 case 20: goto yy298
;
1363 case 21: goto yy306
;
1364 case 22: goto yy313
;
1365 case 23: goto yy316
;
1366 case 24: goto yy318
;
1367 case 25: goto yy325
;
1368 case 26: goto yy327
;
1369 case 27: goto yy331
;
1370 case 28: goto yy333
;
1371 case 29: goto yy335
;
1372 case 30: goto yy337
;
1373 case 31: goto yy340
;
1374 case 32: goto yy349
;
1375 case 33: goto yy357
;
1376 case 34: goto yy376
;
1377 case 35: goto yy378
;
1378 case 36: goto yy382
;
1379 case 37: goto yy387
;
1380 case 38: goto yy389
;
1381 case 39: goto yy391
;
1382 case 40: goto yy395
;
1383 case 41: goto yy401
;
1384 case 42: goto yy403
;
1385 case 43: goto yy405
;
1386 case 44: goto yy407
;
1387 case 45: goto yy412
;
1388 case 46: goto yy414
;
1389 case 47: goto yy416
;
1390 case 48: goto yy418
;
1391 case 49: goto yy420
;
1392 case 50: goto yy422
;
1393 case 51: goto yy424
;
1394 case 52: goto yy429
;
1395 case 53: goto yy440
;
1396 case 54: goto yy444
;
1397 case 55: goto yy448
;
1398 case 56: goto yy450
;
1399 case 57: goto yy452
;
1400 case 58: goto yy454
;
1401 case 59: goto yy456
;
1402 case 60: goto yy461
;
1403 case 61: goto yy466
;
1404 case 62: goto yy471
;
1405 case 63: goto yy474
;
1406 case 64: goto yy476
;
1407 case 65: goto yy478
;
1408 case 66: goto yy480
;
1409 case 67: goto yy482
;
1410 case 68: goto yy487
;
1411 case 69: goto yy489
;
1412 case 70: goto yy493
;
1413 case 71: goto yy495
;
1414 case 72: goto yy497
;
1415 case 73: goto yy499
;
1416 case 74: goto yy504
;
1417 case 75: goto yy506
;
1418 case 76: goto yy510
;
1419 case 77: goto yy513
;
1420 default: goto yy515
;
1430 case 'l': goto yy105
;
1431 default: goto yy103
;
1438 #line 316 "src/parser.re"
1440 #line 1441 "src/parser.c"
1443 #line 317 "src/parser.re"
1444 { goto comment_sl
; }
1445 #line 1446 "src/parser.c"
1449 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1461 case '9': goto yy110
;
1463 case 'd': goto yy104
;
1465 case 'e': goto yy114
;
1469 case 'l': goto yy105
;
1474 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1484 case '7': goto yy112
;
1486 case 'l': goto yy115
;
1488 case 'u': goto yy116
;
1495 case '-': goto yy186
;
1505 case '9': goto yy100
;
1506 default: goto yy103
;
1510 yych
= *(mrk
= ++cur
);
1513 case 'l': goto yy187
;
1515 case 'u': goto yy105
;
1522 case 'l': goto yy188
;
1549 case 'f': goto yy189
;
1550 default: goto yy103
;
1554 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1622 case 'z': goto yy118
;
1623 case '>': goto yy191
;
1624 default: goto yy103
;
1628 #line 344 "src/parser.re"
1629 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1630 #line 1631 "src/parser.c"
1633 #line 346 "src/parser.re"
1634 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1635 #line 1636 "src/parser.c"
1638 #line 329 "src/parser.re"
1639 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1640 #line 1641 "src/parser.c"
1643 #line 347 "src/parser.re"
1644 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1645 #line 1646 "src/parser.c"
1648 #line 345 "src/parser.re"
1649 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1650 #line 1651 "src/parser.c"
1653 yych
= *(mrk
= ++cur
);
1656 case 'r': goto yy193
;
1661 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1738 case 0x7F: goto yy103
;
1739 default: goto yy173
;
1743 yych
= *(mrk
= ++cur
);
1746 case 'o': goto yy194
;
1751 yych
= *(mrk
= ++cur
);
1754 case 'l': goto yy195
;
1759 yych
= *(mrk
= ++cur
);
1762 case 'a': goto yy196
;
1767 yych
= *(mrk
= ++cur
);
1770 case 'n': goto yy197
;
1772 case 'u': goto yy198
;
1777 yych
= *(mrk
= ++cur
);
1780 case 'f': goto yy199
;
1785 yych
= *(mrk
= ++cur
);
1788 case 'u': goto yy200
;
1793 yych
= *(mrk
= ++cur
);
1796 case 'i': goto yy201
;
1798 case 's': goto yy202
;
1803 yych
= *(mrk
= ++cur
);
1806 case 'd': goto yy203
;
1808 case 'u': goto yy204
;
1813 yych
= *(mrk
= ++cur
);
1816 case 'r': goto yy205
;
1821 yych
= *(mrk
= ++cur
);
1824 case 'l': goto yy206
;
1829 yych
= *(mrk
= ++cur
);
1832 case 'o': goto yy207
;
1837 yych
= *(mrk
= ++cur
);
1840 case 'e': goto yy208
;
1845 yych
= *(mrk
= ++cur
);
1848 case 'n': goto yy209
;
1853 yych
= *(mrk
= ++cur
);
1918 case 0x7F: goto yy146
;
1920 case 'd': goto yy210
;
1922 case 'n': goto yy211
;
1923 case '\\': goto yy131
;
1927 #line 352 "src/parser.re"
1928 { NEWTOKEN(PSI_T_IF
); goto start
; }
1929 #line 1930 "src/parser.c"
1932 yych
= *(mrk
= ++cur
);
1935 case 'c': goto yy212
;
1937 case 't': goto yy213
;
1943 case '"': goto yy103
;
1949 case '\'': goto yy103
;
1954 yych
= *(mrk
= ++cur
);
1957 case 't': goto yy215
;
1962 yych
= *(mrk
= ++cur
);
1965 case 'b': goto yy217
;
1970 yych
= *(mrk
= ++cur
);
1973 case 'n': goto yy219
;
1978 yych
= *(mrk
= ++cur
);
1981 case 'x': goto yy220
;
1986 yych
= *(mrk
= ++cur
);
1989 case 'l': goto yy221
;
1994 yych
= *(mrk
= ++cur
);
1997 case 'j': goto yy222
;
2002 yych
= *(mrk
= ++cur
);
2005 case 't': goto yy223
;
2010 yych
= *(mrk
= ++cur
);
2013 case 's': goto yy224
;
2018 yych
= *(mrk
= ++cur
);
2021 case 'e': goto yy225
;
2026 yych
= *(mrk
= ++cur
);
2029 case 't': goto yy226
;
2034 yych
= *(mrk
= ++cur
);
2037 case 't': goto yy227
;
2042 yych
= *(mrk
= ++cur
);
2045 case 'o': goto yy229
;
2050 yych
= *(mrk
= ++cur
);
2053 case 'g': goto yy230
;
2058 yych
= *(mrk
= ++cur
);
2061 case 'a': goto yy231
;
2063 case 'r': goto yy232
;
2068 yych
= *(mrk
= ++cur
);
2071 case 'm': goto yy233
;
2076 yych
= *(mrk
= ++cur
);
2078 case '_': goto yy234
;
2083 yych
= *(mrk
= ++cur
);
2086 case 'u': goto yy235
;
2091 yych
= *(mrk
= ++cur
);
2094 case 'p': goto yy236
;
2099 yych
= *(mrk
= ++cur
);
2102 case 'n': goto yy237
;
2107 yych
= *(mrk
= ++cur
);
2110 case 'd': goto yy238
;
2112 case 'i': goto yy239
;
2114 case 's': goto yy240
;
2119 yych
= *(mrk
= ++cur
);
2122 case 'i': goto yy241
;
2127 yych
= *(mrk
= ++cur
);
2130 case 'r': goto yy242
;
2135 yych
= *(mrk
= ++cur
);
2138 case 'a': goto yy243
;
2144 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2210 case 0x7F: goto yy175
;
2211 case '\\': goto yy131
;
2212 default: goto yy173
;
2215 #line 426 "src/parser.re"
2216 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2217 #line 2218 "src/parser.c"
2220 #line 331 "src/parser.re"
2221 { NEWTOKEN(PSI_T_OR
); goto start
; }
2222 #line 2223 "src/parser.c"
2225 #line 428 "src/parser.re"
2226 { NEWTOKEN(PSI_T_QUOTED_STRING
); goto start
; }
2227 #line 2228 "src/parser.c"
2231 #line 429 "src/parser.re"
2232 { NEWTOKEN(PSI_T_QUOTED_CHAR
); goto start
; }
2233 #line 2234 "src/parser.c"
2236 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2239 case '\'': goto yy244
;
2240 case '\\': goto yy182
;
2245 #line 351 "src/parser.re"
2246 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2247 #line 2248 "src/parser.c"
2260 case '9': goto yy100
;
2261 default: goto yy103
;
2267 case 'u': goto yy105
;
2268 default: goto yy103
;
2274 case 'l': goto yy105
;
2280 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2283 case '.': goto yy245
;
2305 case 'f': goto yy189
;
2307 case 'l': goto yy115
;
2309 case 'p': goto yy114
;
2311 case 'u': goto yy116
;
2316 #line 430 "src/parser.re"
2317 { NEWTOKEN(PSI_T_CPP_HEADER
); goto start
; }
2318 #line 2319 "src/parser.c"
2321 yych
= *(mrk
= ++cur
);
2324 case 'a': goto yy247
;
2326 case 'v': goto yy248
;
2331 yych
= *(mrk
= ++cur
);
2334 case 'l': goto yy249
;
2339 yych
= *(mrk
= ++cur
);
2342 case 'l': goto yy251
;
2347 yych
= *(mrk
= ++cur
);
2350 case 'r': goto yy252
;
2355 yych
= *(mrk
= ++cur
);
2358 case 's': goto yy254
;
2363 yych
= *(mrk
= ++cur
);
2366 case 'n': goto yy255
;
2371 yych
= *(mrk
= ++cur
);
2374 case 'i': goto yy256
;
2379 yych
= *(mrk
= ++cur
);
2382 case 'b': goto yy257
;
2387 yych
= *(mrk
= ++cur
);
2390 case 'f': goto yy258
;
2395 yych
= *(mrk
= ++cur
);
2398 case 'e': goto yy260
;
2403 yych
= *(mrk
= ++cur
);
2406 case 'i': goto yy262
;
2411 yych
= *(mrk
= ++cur
);
2414 case 'm': goto yy263
;
2419 yych
= *(mrk
= ++cur
);
2422 case 'o': goto yy265
;
2427 yych
= *(mrk
= ++cur
);
2430 case 's': goto yy266
;
2435 yych
= *(mrk
= ++cur
);
2438 case 'a': goto yy267
;
2443 yych
= *(mrk
= ++cur
);
2446 case 'e': goto yy268
;
2451 yych
= *(mrk
= ++cur
);
2454 case 'c': goto yy270
;
2459 yych
= *(mrk
= ++cur
);
2462 case 'e': goto yy271
;
2467 yych
= *(mrk
= ++cur
);
2470 case 'd': goto yy272
;
2475 yych
= *(mrk
= ++cur
);
2478 case 'l': goto yy273
;
2483 yych
= *(mrk
= ++cur
);
2548 case 0x7F: goto yy214
;
2549 case '1': goto yy274
;
2550 case '3': goto yy275
;
2551 case '6': goto yy276
;
2552 case '8': goto yy277
;
2554 case 'v': goto yy278
;
2555 case '\\': goto yy131
;
2559 #line 374 "src/parser.re"
2560 { NEWTOKEN(PSI_T_INT
); goto start
; }
2561 #line 2562 "src/parser.c"
2564 yych
= *(mrk
= ++cur
);
2629 case 0x7F: goto yy216
;
2630 case '\\': goto yy131
;
2634 #line 400 "src/parser.re"
2635 { NEWTOKEN(PSI_T_LET
); goto start
; }
2636 #line 2637 "src/parser.c"
2639 yych
= *(mrk
= ++cur
);
2704 case 0x7F: goto yy218
;
2705 case '\\': goto yy131
;
2709 #line 399 "src/parser.re"
2710 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2711 #line 2712 "src/parser.c"
2714 yych
= *(mrk
= ++cur
);
2717 case 'g': goto yy279
;
2722 yych
= *(mrk
= ++cur
);
2725 case 'e': goto yy281
;
2730 yych
= *(mrk
= ++cur
);
2733 case 'l': goto yy282
;
2738 yych
= *(mrk
= ++cur
);
2741 case 'e': goto yy284
;
2743 case 'v': goto yy285
;
2748 yych
= *(mrk
= ++cur
);
2751 case 'h': goto yy286
;
2756 yych
= *(mrk
= ++cur
);
2759 case 't': goto yy287
;
2764 yych
= *(mrk
= ++cur
);
2766 case '_': goto yy288
;
2771 yych
= *(mrk
= ++cur
);
2774 case 'u': goto yy289
;
2779 yych
= *(mrk
= ++cur
);
2844 case 0x7F: goto yy228
;
2845 case '\\': goto yy131
;
2849 #line 401 "src/parser.re"
2850 { NEWTOKEN(PSI_T_SET
); goto start
; }
2851 #line 2852 "src/parser.c"
2854 yych
= *(mrk
= ++cur
);
2857 case 'r': goto yy290
;
2862 yych
= *(mrk
= ++cur
);
2865 case 'n': goto yy291
;
2870 yych
= *(mrk
= ++cur
);
2873 case 't': goto yy292
;
2878 yych
= *(mrk
= ++cur
);
2881 case 'i': goto yy293
;
2883 case 'l': goto yy294
;
2885 case 'u': goto yy295
;
2887 case 'v': goto yy296
;
2892 yych
= *(mrk
= ++cur
);
2895 case 'p': goto yy297
;
2900 yych
= *(mrk
= ++cur
);
2903 case 'a': goto yy299
;
2905 case 'b': goto yy300
;
2907 case 'f': goto yy301
;
2909 case 'i': goto yy302
;
2911 case 'o': goto yy303
;
2913 case 's': goto yy304
;
2918 yych
= *(mrk
= ++cur
);
2921 case 'e': goto yy305
;
2926 yych
= *(mrk
= ++cur
);
2929 case 'e': goto yy307
;
2934 yych
= *(mrk
= ++cur
);
2937 case 't': goto yy308
;
2942 yych
= *(mrk
= ++cur
);
2945 case 'e': goto yy309
;
2950 yych
= *(mrk
= ++cur
);
2953 case 'o': goto yy310
;
2958 yych
= *(mrk
= ++cur
);
2961 case 'i': goto yy311
;
2966 yych
= *(mrk
= ++cur
);
2969 case 'd': goto yy312
;
2974 yych
= *(mrk
= ++cur
);
2977 case 'n': goto yy314
;
2982 yych
= *(mrk
= ++cur
);
2985 case 'l': goto yy315
;
2991 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2994 case '\'': goto yy180
;
2999 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3023 case 'f': goto yy245
;
3025 case 'p': goto yy114
;
3026 default: goto yy103
;
3030 yych
= *(mrk
= ++cur
);
3033 case 'y': goto yy317
;
3038 yych
= *(mrk
= ++cur
);
3041 case 'a': goto yy319
;
3046 yych
= *(mrk
= ++cur
);
3111 case 0x7F: goto yy250
;
3113 case 'v': goto yy320
;
3114 case '\\': goto yy131
;
3118 #line 371 "src/parser.re"
3119 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
3120 #line 3121 "src/parser.c"
3123 yych
= *(mrk
= ++cur
);
3126 case 'a': goto yy321
;
3128 case 'b': goto yy322
;
3130 case 'o': goto yy323
;
3135 yych
= *(mrk
= ++cur
);
3200 case 0x7F: goto yy253
;
3201 case '\\': goto yy131
;
3205 #line 372 "src/parser.re"
3206 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
3207 #line 3208 "src/parser.c"
3210 yych
= *(mrk
= ++cur
);
3213 case 't': goto yy324
;
3218 yych
= *(mrk
= ++cur
);
3221 case 't': goto yy326
;
3226 yych
= *(mrk
= ++cur
);
3229 case 'n': goto yy328
;
3234 yych
= *(mrk
= ++cur
);
3237 case 'l': goto yy329
;
3242 yych
= *(mrk
= ++cur
);
3307 case 0x7F: goto yy259
;
3308 case '\\': goto yy131
;
3312 #line 356 "src/parser.re"
3313 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3314 #line 3315 "src/parser.c"
3317 yych
= *(mrk
= ++cur
);
3382 case 0x7F: goto yy261
;
3383 case '\\': goto yy131
;
3387 #line 355 "src/parser.re"
3388 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3389 #line 3390 "src/parser.c"
3392 yych
= *(mrk
= ++cur
);
3395 case 'f': goto yy330
;
3400 yych
= *(mrk
= ++cur
);
3465 case 0x7F: goto yy264
;
3466 case '\\': goto yy131
;
3470 #line 397 "src/parser.re"
3471 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
3472 #line 3473 "src/parser.c"
3475 yych
= *(mrk
= ++cur
);
3478 case 'r': goto yy332
;
3483 yych
= *(mrk
= ++cur
);
3486 case 'e': goto yy334
;
3491 yych
= *(mrk
= ++cur
);
3494 case 't': goto yy336
;
3499 yych
= *(mrk
= ++cur
);
3564 case 0x7F: goto yy269
;
3565 case '\\': goto yy131
;
3569 #line 405 "src/parser.re"
3570 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3571 #line 3572 "src/parser.c"
3574 yych
= *(mrk
= ++cur
);
3577 case 't': goto yy338
;
3582 yych
= *(mrk
= ++cur
);
3585 case 'f': goto yy339
;
3590 yych
= *(mrk
= ++cur
);
3593 case 'e': goto yy341
;
3598 yych
= *(mrk
= ++cur
);
3601 case 'u': goto yy342
;
3606 yych
= *(mrk
= ++cur
);
3608 case '6': goto yy343
;
3613 yych
= *(mrk
= ++cur
);
3615 case '2': goto yy344
;
3620 yych
= *(mrk
= ++cur
);
3622 case '4': goto yy345
;
3627 yych
= *(mrk
= ++cur
);
3629 case '_': goto yy346
;
3634 yych
= *(mrk
= ++cur
);
3637 case 'a': goto yy347
;
3642 yych
= *(mrk
= ++cur
);
3707 case 0x7F: goto yy280
;
3708 case '\\': goto yy131
;
3712 #line 375 "src/parser.re"
3713 { NEWTOKEN(PSI_T_LONG
); goto start
; }
3714 #line 3715 "src/parser.c"
3717 yych
= *(mrk
= ++cur
);
3720 case 'd': goto yy348
;
3725 yych
= *(mrk
= ++cur
);
3790 case 0x7F: goto yy283
;
3791 case '\\': goto yy131
;
3795 #line 367 "src/parser.re"
3796 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3797 #line 3798 "src/parser.c"
3800 yych
= *(mrk
= ++cur
);
3803 case 'c': goto yy350
;
3808 yych
= *(mrk
= ++cur
);
3811 case 'a': goto yy351
;
3816 yych
= *(mrk
= ++cur
);
3819 case 'v': goto yy352
;
3824 yych
= *(mrk
= ++cur
);
3826 case '_': goto yy353
;
3831 yych
= *(mrk
= ++cur
);
3834 case 'a': goto yy354
;
3839 yych
= *(mrk
= ++cur
);
3842 case 'r': goto yy355
;
3847 yych
= *(mrk
= ++cur
);
3850 case 't': goto yy356
;
3855 yych
= *(mrk
= ++cur
);
3858 case 'e': goto yy358
;
3863 yych
= *(mrk
= ++cur
);
3866 case 'i': goto yy359
;
3871 yych
= *(mrk
= ++cur
);
3874 case 'n': goto yy360
;
3879 yych
= *(mrk
= ++cur
);
3882 case 'e': goto yy361
;
3887 yych
= *(mrk
= ++cur
);
3890 case 'c': goto yy362
;
3895 yych
= *(mrk
= ++cur
);
3898 case 'a': goto yy363
;
3903 yych
= *(mrk
= ++cur
);
3968 case 0x7F: goto yy298
;
3969 case '\\': goto yy131
;
3973 #line 406 "src/parser.re"
3974 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3975 #line 3976 "src/parser.c"
3978 yych
= *(mrk
= ++cur
);
3981 case 'r': goto yy364
;
3986 yych
= *(mrk
= ++cur
);
3989 case 'o': goto yy365
;
3994 yych
= *(mrk
= ++cur
);
3997 case 'l': goto yy366
;
4002 yych
= *(mrk
= ++cur
);
4005 case 'n': goto yy367
;
4010 yych
= *(mrk
= ++cur
);
4013 case 'b': goto yy368
;
4018 yych
= *(mrk
= ++cur
);
4021 case 't': goto yy369
;
4026 yych
= *(mrk
= ++cur
);
4091 case 0x7F: goto yy306
;
4092 case '\\': goto yy131
;
4096 #line 365 "src/parser.re"
4097 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4098 #line 4099 "src/parser.c"
4101 yych
= *(mrk
= ++cur
);
4104 case 'd': goto yy370
;
4109 yych
= *(mrk
= ++cur
);
4111 case '1': goto yy371
;
4112 case '3': goto yy372
;
4113 case '6': goto yy373
;
4114 case '8': goto yy374
;
4119 yych
= *(mrk
= ++cur
);
4122 case 'f': goto yy375
;
4127 yych
= *(mrk
= ++cur
);
4130 case 'n': goto yy377
;
4135 yych
= *(mrk
= ++cur
);
4138 case 'g': goto yy379
;
4143 yych
= *(mrk
= ++cur
);
4208 case 0x7F: goto yy313
;
4209 case '\\': goto yy131
;
4213 #line 370 "src/parser.re"
4214 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4215 #line 4216 "src/parser.c"
4218 yych
= *(mrk
= ++cur
);
4221 case 'i': goto yy380
;
4226 yych
= *(mrk
= ++cur
);
4291 case 0x7F: goto yy316
;
4292 case '\\': goto yy131
;
4296 #line 415 "src/parser.re"
4297 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4298 #line 4299 "src/parser.c"
4301 yych
= *(mrk
= ++cur
);
4366 case 0x7F: goto yy318
;
4367 case '\\': goto yy131
;
4371 #line 389 "src/parser.re"
4372 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4373 #line 4374 "src/parser.c"
4376 yych
= *(mrk
= ++cur
);
4379 case 'l': goto yy381
;
4384 yych
= *(mrk
= ++cur
);
4387 case 'a': goto yy383
;
4392 yych
= *(mrk
= ++cur
);
4395 case 'b': goto yy384
;
4400 yych
= *(mrk
= ++cur
);
4403 case 'a': goto yy385
;
4408 yych
= *(mrk
= ++cur
);
4411 case 'c': goto yy386
;
4416 yych
= *(mrk
= ++cur
);
4481 case 0x7F: goto yy325
;
4482 case '\\': goto yy131
;
4486 #line 398 "src/parser.re"
4487 { NEWTOKEN(PSI_T_CONST
); goto start
; }
4488 #line 4489 "src/parser.c"
4491 yych
= *(mrk
= ++cur
);
4556 case 0x7F: goto yy327
;
4557 case '\\': goto yy131
;
4561 #line 416 "src/parser.re"
4562 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4563 #line 4564 "src/parser.c"
4566 yych
= *(mrk
= ++cur
);
4569 case 'e': goto yy388
;
4574 yych
= *(mrk
= ++cur
);
4577 case 'e': goto yy390
;
4582 yych
= *(mrk
= ++cur
);
4647 case 0x7F: goto yy331
;
4648 case '\\': goto yy131
;
4652 #line 357 "src/parser.re"
4653 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4654 #line 4655 "src/parser.c"
4657 yych
= *(mrk
= ++cur
);
4722 case 0x7F: goto yy333
;
4723 case '\\': goto yy131
;
4727 #line 362 "src/parser.re"
4728 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
4729 #line 4730 "src/parser.c"
4732 yych
= *(mrk
= ++cur
);
4797 case 0x7F: goto yy335
;
4798 case '\\': goto yy131
;
4802 #line 366 "src/parser.re"
4803 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
4804 #line 4805 "src/parser.c"
4807 yych
= *(mrk
= ++cur
);
4872 case 0x7F: goto yy337
;
4874 case 'v': goto yy392
;
4875 case '\\': goto yy131
;
4879 #line 376 "src/parser.re"
4880 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
4881 #line 4882 "src/parser.c"
4884 yych
= *(mrk
= ++cur
);
4887 case 'i': goto yy393
;
4892 yych
= *(mrk
= ++cur
);
4957 case 0x7F: goto yy340
;
4958 case '\\': goto yy131
;
4962 #line 353 "src/parser.re"
4963 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
4964 #line 4965 "src/parser.c"
4967 yych
= *(mrk
= ++cur
);
4970 case 'f': goto yy394
;
4975 yych
= *(mrk
= ++cur
);
4978 case 'd': goto yy396
;
4983 yych
= *(mrk
= ++cur
);
4985 case '_': goto yy397
;
4990 yych
= *(mrk
= ++cur
);
4992 case '_': goto yy398
;
4997 yych
= *(mrk
= ++cur
);
4999 case '_': goto yy399
;
5004 yych
= *(mrk
= ++cur
);
5007 case 't': goto yy400
;
5012 yych
= *(mrk
= ++cur
);
5015 case 'l': goto yy402
;
5020 yych
= *(mrk
= ++cur
);
5085 case 0x7F: goto yy349
;
5086 case '\\': goto yy131
;
5090 #line 368 "src/parser.re"
5091 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5092 #line 5093 "src/parser.c"
5095 yych
= *(mrk
= ++cur
);
5098 case 't': goto yy404
;
5103 yych
= *(mrk
= ++cur
);
5106 case 'l': goto yy406
;
5111 yych
= *(mrk
= ++cur
);
5114 case 'a': goto yy408
;
5119 yych
= *(mrk
= ++cur
);
5122 case 'a': goto yy409
;
5127 yych
= *(mrk
= ++cur
);
5130 case 's': goto yy410
;
5135 yych
= *(mrk
= ++cur
);
5138 case 'n': goto yy411
;
5143 yych
= *(mrk
= ++cur
);
5208 case 0x7F: goto yy357
;
5209 case '\\': goto yy131
;
5213 #line 373 "src/parser.re"
5214 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5215 #line 5216 "src/parser.c"
5218 yych
= *(mrk
= ++cur
);
5221 case 'd': goto yy413
;
5226 yych
= *(mrk
= ++cur
);
5229 case 'c': goto yy415
;
5234 yych
= *(mrk
= ++cur
);
5237 case 'g': goto yy417
;
5242 yych
= *(mrk
= ++cur
);
5245 case 'n': goto yy419
;
5250 yych
= *(mrk
= ++cur
);
5253 case 't': goto yy421
;
5258 yych
= *(mrk
= ++cur
);
5261 case 'l': goto yy423
;
5266 yych
= *(mrk
= ++cur
);
5269 case 'r': goto yy425
;
5274 yych
= *(mrk
= ++cur
);
5277 case 'o': goto yy426
;
5282 yych
= *(mrk
= ++cur
);
5285 case 'o': goto yy427
;
5290 yych
= *(mrk
= ++cur
);
5293 case 't': goto yy428
;
5298 yych
= *(mrk
= ++cur
);
5301 case 'j': goto yy430
;
5306 yych
= *(mrk
= ++cur
);
5309 case 'r': goto yy431
;
5314 yych
= *(mrk
= ++cur
);
5317 case 'e': goto yy432
;
5322 yych
= *(mrk
= ++cur
);
5324 case '6': goto yy433
;
5329 yych
= *(mrk
= ++cur
);
5331 case '2': goto yy434
;
5336 yych
= *(mrk
= ++cur
);
5338 case '4': goto yy435
;
5343 yych
= *(mrk
= ++cur
);
5345 case '_': goto yy436
;
5350 yych
= *(mrk
= ++cur
);
5415 case 0x7F: goto yy376
;
5416 case '\\': goto yy131
;
5420 #line 360 "src/parser.re"
5421 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5422 #line 5423 "src/parser.c"
5425 yych
= *(mrk
= ++cur
);
5490 case 0x7F: goto yy378
;
5491 case '\\': goto yy131
;
5495 #line 396 "src/parser.re"
5496 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5497 #line 5498 "src/parser.c"
5500 yych
= *(mrk
= ++cur
);
5503 case 'n': goto yy437
;
5508 yych
= *(mrk
= ++cur
);
5511 case 'n': goto yy438
;
5516 yych
= *(mrk
= ++cur
);
5581 case 0x7F: goto yy382
;
5582 case '\\': goto yy131
;
5586 #line 413 "src/parser.re"
5587 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5588 #line 5589 "src/parser.c"
5591 yych
= *(mrk
= ++cur
);
5594 case 'l': goto yy439
;
5599 yych
= *(mrk
= ++cur
);
5602 case 'l': goto yy441
;
5607 yych
= *(mrk
= ++cur
);
5610 case 'c': goto yy442
;
5615 yych
= *(mrk
= ++cur
);
5680 case 0x7F: goto yy387
;
5681 case '\\': goto yy131
;
5685 #line 417 "src/parser.re"
5686 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
5687 #line 5688 "src/parser.c"
5690 yych
= *(mrk
= ++cur
);
5755 case 0x7F: goto yy389
;
5757 case 'd': goto yy443
;
5758 case '\\': goto yy131
;
5762 #line 358 "src/parser.re"
5763 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
5764 #line 5765 "src/parser.c"
5767 yych
= *(mrk
= ++cur
);
5832 case 0x7F: goto yy391
;
5833 case '\\': goto yy131
;
5837 #line 377 "src/parser.re"
5838 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
5839 #line 5840 "src/parser.c"
5842 yych
= *(mrk
= ++cur
);
5845 case 'a': goto yy445
;
5850 yych
= *(mrk
= ++cur
);
5853 case 'o': goto yy446
;
5858 yych
= *(mrk
= ++cur
);
5923 case 0x7F: goto yy395
;
5924 case '\\': goto yy131
;
5928 #line 354 "src/parser.re"
5929 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
5930 #line 5931 "src/parser.c"
5933 yych
= *(mrk
= ++cur
);
5936 case 'e': goto yy447
;
5941 yych
= *(mrk
= ++cur
);
5944 case 't': goto yy449
;
5949 yych
= *(mrk
= ++cur
);
5952 case 't': goto yy451
;
5957 yych
= *(mrk
= ++cur
);
5960 case 't': goto yy453
;
5965 yych
= *(mrk
= ++cur
);
6030 case 0x7F: goto yy401
;
6031 case '\\': goto yy131
;
6035 #line 378 "src/parser.re"
6036 { NEWTOKEN(PSI_T_INT8
); goto start
; }
6037 #line 6038 "src/parser.c"
6040 yych
= *(mrk
= ++cur
);
6105 case 0x7F: goto yy403
;
6106 case '\\': goto yy131
;
6110 #line 410 "src/parser.re"
6111 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6112 #line 6113 "src/parser.c"
6115 yych
= *(mrk
= ++cur
);
6180 case 0x7F: goto yy405
;
6181 case '\\': goto yy131
;
6185 #line 390 "src/parser.re"
6186 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6187 #line 6188 "src/parser.c"
6190 yych
= *(mrk
= ++cur
);
6255 case 0x7F: goto yy407
;
6256 case '\\': goto yy131
;
6260 #line 414 "src/parser.re"
6261 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6262 #line 6263 "src/parser.c"
6265 yych
= *(mrk
= ++cur
);
6268 case 'l': goto yy455
;
6273 yych
= *(mrk
= ++cur
);
6276 case 's': goto yy457
;
6281 yych
= *(mrk
= ++cur
);
6284 case 's': goto yy458
;
6289 yych
= *(mrk
= ++cur
);
6354 case 0x7F: goto yy412
;
6355 case '\\': goto yy131
;
6359 #line 404 "src/parser.re"
6360 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6361 #line 6362 "src/parser.c"
6364 yych
= *(mrk
= ++cur
);
6429 case 0x7F: goto yy414
;
6430 case '\\': goto yy131
;
6434 #line 387 "src/parser.re"
6435 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
6436 #line 6437 "src/parser.c"
6439 yych
= *(mrk
= ++cur
);
6504 case 0x7F: goto yy416
;
6505 case '\\': goto yy131
;
6509 #line 392 "src/parser.re"
6510 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6511 #line 6512 "src/parser.c"
6514 yych
= *(mrk
= ++cur
);
6579 case 0x7F: goto yy418
;
6580 case '\\': goto yy131
;
6584 #line 388 "src/parser.re"
6585 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6586 #line 6587 "src/parser.c"
6589 yych
= *(mrk
= ++cur
);
6654 case 0x7F: goto yy420
;
6655 case '\\': goto yy131
;
6659 #line 407 "src/parser.re"
6660 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6661 #line 6662 "src/parser.c"
6664 yych
= *(mrk
= ++cur
);
6729 case 0x7F: goto yy422
;
6730 case '\\': goto yy131
;
6734 #line 395 "src/parser.re"
6735 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
6736 #line 6737 "src/parser.c"
6739 yych
= *(mrk
= ++cur
);
6804 case 0x7F: goto yy424
;
6805 case '\\': goto yy131
;
6809 #line 408 "src/parser.re"
6810 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6811 #line 6812 "src/parser.c"
6814 yych
= *(mrk
= ++cur
);
6817 case 'a': goto yy459
;
6822 yych
= *(mrk
= ++cur
);
6825 case 'l': goto yy460
;
6830 yych
= *(mrk
= ++cur
);
6833 case 'a': goto yy462
;
6838 yych
= *(mrk
= ++cur
);
6903 case 0x7F: goto yy429
;
6904 case '\\': goto yy131
;
6908 #line 421 "src/parser.re"
6909 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
6910 #line 6911 "src/parser.c"
6913 yych
= *(mrk
= ++cur
);
6916 case 'e': goto yy463
;
6921 yych
= *(mrk
= ++cur
);
6924 case 'i': goto yy464
;
6929 yych
= *(mrk
= ++cur
);
6932 case 'f': goto yy465
;
6937 yych
= *(mrk
= ++cur
);
6939 case '_': goto yy467
;
6944 yych
= *(mrk
= ++cur
);
6946 case '_': goto yy468
;
6951 yych
= *(mrk
= ++cur
);
6953 case '_': goto yy469
;
6958 yych
= *(mrk
= ++cur
);
6961 case 't': goto yy470
;
6966 yych
= *(mrk
= ++cur
);
6969 case 'e': goto yy472
;
6974 yych
= *(mrk
= ++cur
);
6977 case 'g': goto yy473
;
6982 yych
= *(mrk
= ++cur
);
7047 case 0x7F: goto yy440
;
7048 case '\\': goto yy131
;
7052 #line 412 "src/parser.re"
7053 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7054 #line 7055 "src/parser.c"
7057 yych
= *(mrk
= ++cur
);
7060 case 'e': goto yy475
;
7065 yych
= *(mrk
= ++cur
);
7068 case 'k': goto yy477
;
7073 yych
= *(mrk
= ++cur
);
7138 case 0x7F: goto yy444
;
7139 case '\\': goto yy131
;
7143 #line 359 "src/parser.re"
7144 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7145 #line 7146 "src/parser.c"
7148 yych
= *(mrk
= ++cur
);
7151 case 'l': goto yy479
;
7156 yych
= *(mrk
= ++cur
);
7159 case 'n': goto yy481
;
7164 yych
= *(mrk
= ++cur
);
7229 case 0x7F: goto yy448
;
7230 case '\\': goto yy131
;
7231 case '_': goto yy483
;
7235 #line 363 "src/parser.re"
7236 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7237 #line 7238 "src/parser.c"
7240 yych
= *(mrk
= ++cur
);
7305 case 0x7F: goto yy450
;
7306 case '\\': goto yy131
;
7310 #line 380 "src/parser.re"
7311 { NEWTOKEN(PSI_T_INT16
); goto start
; }
7312 #line 7313 "src/parser.c"
7315 yych
= *(mrk
= ++cur
);
7380 case 0x7F: goto yy452
;
7381 case '\\': goto yy131
;
7385 #line 382 "src/parser.re"
7386 { NEWTOKEN(PSI_T_INT32
); goto start
; }
7387 #line 7388 "src/parser.c"
7390 yych
= *(mrk
= ++cur
);
7455 case 0x7F: goto yy454
;
7456 case '\\': goto yy131
;
7460 #line 384 "src/parser.re"
7461 { NEWTOKEN(PSI_T_INT64
); goto start
; }
7462 #line 7463 "src/parser.c"
7465 yych
= *(mrk
= ++cur
);
7530 case 0x7F: goto yy456
;
7531 case '\\': goto yy131
;
7535 #line 409 "src/parser.re"
7536 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7537 #line 7538 "src/parser.c"
7540 yych
= *(mrk
= ++cur
);
7543 case 's': goto yy484
;
7548 yych
= *(mrk
= ++cur
);
7551 case 'e': goto yy485
;
7556 yych
= *(mrk
= ++cur
);
7559 case 'y': goto yy486
;
7564 yych
= *(mrk
= ++cur
);
7629 case 0x7F: goto yy461
;
7630 case '\\': goto yy131
;
7634 #line 423 "src/parser.re"
7635 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7636 #line 7637 "src/parser.c"
7639 yych
= *(mrk
= ++cur
);
7642 case 't': goto yy488
;
7647 yych
= *(mrk
= ++cur
);
7650 case 'c': goto yy490
;
7655 yych
= *(mrk
= ++cur
);
7658 case 'n': goto yy491
;
7663 yych
= *(mrk
= ++cur
);
7728 case 0x7F: goto yy466
;
7729 case '\\': goto yy131
;
7733 #line 394 "src/parser.re"
7734 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
7735 #line 7736 "src/parser.c"
7738 yych
= *(mrk
= ++cur
);
7741 case 't': goto yy492
;
7746 yych
= *(mrk
= ++cur
);
7749 case 't': goto yy494
;
7754 yych
= *(mrk
= ++cur
);
7757 case 't': goto yy496
;
7762 yych
= *(mrk
= ++cur
);
7827 case 0x7F: goto yy471
;
7828 case '\\': goto yy131
;
7832 #line 379 "src/parser.re"
7833 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
7834 #line 7835 "src/parser.c"
7837 yych
= *(mrk
= ++cur
);
7840 case 'd': goto yy498
;
7845 yych
= *(mrk
= ++cur
);
7910 case 0x7F: goto yy474
;
7911 case '\\': goto yy131
;
7915 #line 361 "src/parser.re"
7916 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
7917 #line 7918 "src/parser.c"
7920 yych
= *(mrk
= ++cur
);
7985 case 0x7F: goto yy476
;
7986 case '\\': goto yy131
;
7990 #line 369 "src/parser.re"
7991 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
7992 #line 7993 "src/parser.c"
7995 yych
= *(mrk
= ++cur
);
8060 case 0x7F: goto yy478
;
8061 case '\\': goto yy131
;
8065 #line 391 "src/parser.re"
8066 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8067 #line 8068 "src/parser.c"
8070 yych
= *(mrk
= ++cur
);
8135 case 0x7F: goto yy480
;
8136 case '\\': goto yy131
;
8140 #line 411 "src/parser.re"
8141 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8142 #line 8143 "src/parser.c"
8145 yych
= *(mrk
= ++cur
);
8210 case 0x7F: goto yy482
;
8211 case '\\': goto yy131
;
8215 #line 393 "src/parser.re"
8216 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8217 #line 8218 "src/parser.c"
8220 yych
= *(mrk
= ++cur
);
8223 case 'n': goto yy500
;
8228 yych
= *(mrk
= ++cur
);
8231 case 'e': goto yy501
;
8236 yych
= *(mrk
= ++cur
);
8239 case 'r': goto yy502
;
8244 yych
= *(mrk
= ++cur
);
8309 case 0x7F: goto yy487
;
8310 case '\\': goto yy131
;
8314 #line 419 "src/parser.re"
8315 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8316 #line 8317 "src/parser.c"
8319 yych
= *(mrk
= ++cur
);
8384 case 0x7F: goto yy489
;
8385 case '\\': goto yy131
;
8389 #line 422 "src/parser.re"
8390 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8391 #line 8392 "src/parser.c"
8394 yych
= *(mrk
= ++cur
);
8397 case 't': goto yy503
;
8402 yych
= *(mrk
= ++cur
);
8405 case 'g': goto yy505
;
8410 yych
= *(mrk
= ++cur
);
8475 case 0x7F: goto yy493
;
8476 case '\\': goto yy131
;
8480 #line 381 "src/parser.re"
8481 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
8482 #line 8483 "src/parser.c"
8485 yych
= *(mrk
= ++cur
);
8550 case 0x7F: goto yy495
;
8551 case '\\': goto yy131
;
8555 #line 383 "src/parser.re"
8556 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
8557 #line 8558 "src/parser.c"
8560 yych
= *(mrk
= ++cur
);
8625 case 0x7F: goto yy497
;
8626 case '\\': goto yy131
;
8630 #line 385 "src/parser.re"
8631 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
8632 #line 8633 "src/parser.c"
8635 yych
= *(mrk
= ++cur
);
8700 case 0x7F: goto yy499
;
8701 case '\\': goto yy131
;
8705 #line 386 "src/parser.re"
8706 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
8707 #line 8708 "src/parser.c"
8710 yych
= *(mrk
= ++cur
);
8713 case 'e': goto yy507
;
8718 yych
= *(mrk
= ++cur
);
8721 case 'r': goto yy508
;
8726 yych
= *(mrk
= ++cur
);
8729 case 't': goto yy509
;
8734 yych
= *(mrk
= ++cur
);
8799 case 0x7F: goto yy504
;
8800 case '\\': goto yy131
;
8804 #line 418 "src/parser.re"
8805 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
8806 #line 8807 "src/parser.c"
8809 yych
= *(mrk
= ++cur
);
8874 case 0x7F: goto yy506
;
8875 case '\\': goto yy131
;
8879 #line 420 "src/parser.re"
8880 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
8881 #line 8882 "src/parser.c"
8884 yych
= *(mrk
= ++cur
);
8887 case 'x': goto yy511
;
8892 yych
= *(mrk
= ++cur
);
8895 case 't': goto yy512
;
8900 yych
= *(mrk
= ++cur
);
8965 case 0x7F: goto yy510
;
8966 case '\\': goto yy131
;
8970 #line 402 "src/parser.re"
8971 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
8972 #line 8973 "src/parser.c"
8975 yych
= *(mrk
= ++cur
);
8978 case 't': goto yy514
;
8983 yych
= *(mrk
= ++cur
);
9048 case 0x7F: goto yy513
;
9049 case '\\': goto yy131
;
9053 #line 403 "src/parser.re"
9054 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9055 #line 9056 "src/parser.c"
9058 yych
= *(mrk
= ++cur
);
9123 case 0x7F: goto yy515
;
9124 case '\\': goto yy131
;
9128 #line 364 "src/parser.re"
9129 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9130 #line 9131 "src/parser.c"
9132 #line 436 "src/parser.re"
9137 #line 9138 "src/parser.c"
9140 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9144 case '\r': goto yy520
;
9145 case '*': goto yy522
;
9146 default: goto yy518
;
9151 #line 443 "src/parser.re"
9153 #line 9154 "src/parser.c"
9156 #line 441 "src/parser.re"
9157 { NEWLINE(); goto comment
; }
9158 #line 9159 "src/parser.c"
9162 case '/': goto yy523
;
9163 default: goto yy519
;
9167 #line 442 "src/parser.re"
9168 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
9169 #line 9170 "src/parser.c"
9171 #line 445 "src/parser.re"
9176 #line 9177 "src/parser.c"
9179 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9183 case '\r': goto yy529
;
9184 default: goto yy527
;
9188 #line 451 "src/parser.re"
9189 { goto comment_sl
; }
9190 #line 9191 "src/parser.c"
9193 #line 450 "src/parser.re"
9194 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
9195 #line 9196 "src/parser.c"
9197 #line 453 "src/parser.re"
9201 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
9202 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
9203 psi_plist_free(tokens
);
9208 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);