1 /* Generated by re2c 0.16 on Tue Mar 7 09:49: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
39 #line 57 "src/parser.re"
42 static void free_cpp_def(zval
*p
)
44 if (Z_TYPE_P(p
) == IS_PTR
) {
45 psi_cpp_macro_decl_free((void *) &Z_PTR_P(p
));
46 } else if (Z_REFCOUNTED_P(p
)) {
51 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
54 P
= malloc(sizeof(*P
));
56 memset(P
, 0, sizeof(*P
));
58 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
62 P
->proc
= psi_parser_proc_init();
64 zend_hash_init(&P
->cpp
.defs
, 0, NULL
, free_cpp_def
, 1);
66 ZVAL_ARR(&tmp
, &P
->cpp
.defs
);
67 add_assoc_string(&tmp
, "PHP_OS", PHP_OS
);
69 if (flags
& PSI_DEBUG
) {
70 psi_parser_proc_trace(stderr
, "PSI> ");
76 void psi_parser_reset(struct psi_parser
*P
)
78 P
->cur
= P
->tok
= P
->mrk
= P
->input
.buffer
;
79 P
->lim
= P
->input
.buffer
+ P
->input
.length
;
82 bool psi_parser_open_file(struct psi_parser
*P
, const char *filename
)
88 if (stat(filename
, &sb
)) {
89 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
90 "Could not stat '%s': %s",
91 filename
, strerror(errno
));
95 if (!(fb
= malloc(sb
.st_size
+ YYMAXFILL
))) {
96 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
97 "Could not allocate %zu bytes for reading '%s': %s",
98 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
102 if (!(fp
= fopen(filename
, "r"))) {
104 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
105 "Could not open '%s' for reading: %s",
106 filename
, strerror(errno
));
110 if (sb
.st_size
!= fread(fb
, 1, sb
.st_size
, fp
)) {
113 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
114 "Could not read %zu bytes from '%s': %s",
115 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
118 memset(fb
+ sb
.st_size
, 0, YYMAXFILL
);
120 if (P
->input
.buffer
) {
121 free(P
->input
.buffer
);
123 P
->input
.buffer
= fb
;
124 P
->input
.length
= sb
.st_size
;
126 P
->file
.fn
= strdup(filename
);
133 bool psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
137 if (!(sb
= malloc(length
+ YYMAXFILL
))) {
138 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
139 "Could not allocate %zu bytes: %s",
140 length
+ YYMAXFILL
, strerror(errno
));
144 memcpy(sb
, string
, length
);
145 memset(sb
+ length
, 0, YYMAXFILL
);
147 if (P
->input
.buffer
) {
148 free(P
->input
.buffer
);
150 P
->input
.buffer
= sb
;
151 P
->input
.length
= length
;
153 P
->file
.fn
= strdup("<input>");
161 static void psi_parser_register_constants(struct psi_parser
*P
)
166 ZEND_HASH_FOREACH_STR_KEY_VAL(&P
->cpp
.defs
, key
, val
)
168 struct psi_impl_def_val
*iv
;
169 struct psi_const_type
*ct
;
177 switch (Z_TYPE_P(val
)) {
182 tmp
.zend
.bval
= Z_TYPE_P(val
) == IS_TRUE
;
187 tmp
.zend
.lval
= Z_LVAL_P(val
);
192 tmp
.dval
= Z_DVAL_P(val
);
197 str
= zval_get_string(val
);
198 tmp
.zend
.str
= zend_string_dup(str
, 1);
199 zend_string_release(str
);
203 iv
= psi_impl_def_val_init(ctt
, NULL
);
205 ct
= psi_const_type_init(ctt
, ctn
);
206 c
= psi_const_init(ct
, key
->val
, iv
);
208 P
->consts
= psi_plist_init((psi_plist_dtor
) psi_const_free
);
210 P
->consts
= psi_plist_add(P
->consts
, &c
);
212 ZEND_HASH_FOREACH_END();
216 void psi_parser_parse(struct psi_parser
*P
)
221 P
->cpp
.tokens
= psi_parser_scan(P
);
223 psi_cpp_preprocess(P
, &P
->cpp
);
225 if (psi_plist_count(P
->cpp
.tokens
)) {
226 while (psi_plist_get(P
->cpp
.tokens
, i
++, &T
)) {
227 if (P
->flags
& PSI_DEBUG
) {
228 fprintf(stderr
, "PSI> ");
229 psi_token_dump(2, T
);
231 psi_parser_proc_parse(P
->proc
, T
->type
, T
, P
);
233 psi_parser_proc_parse(P
->proc
, 0, NULL
, P
);
236 psi_plist_free(P
->cpp
.tokens
);
237 P
->cpp
.tokens
= NULL
;
240 void psi_parser_dtor(struct psi_parser
*P
)
242 psi_parser_proc_free(&P
->proc
);
244 if (P
->input
.buffer
) {
245 free(P
->input
.buffer
);
246 P
->input
.buffer
= NULL
;
249 psi_data_dtor(PSI_DATA(P
));
251 zend_hash_destroy(&P
->cpp
.defs
);
253 memset(P
, 0, sizeof(*P
));
256 void psi_parser_free(struct psi_parser
**P
)
269 #define NEWTOKEN(t) \
271 token = psi_token_alloc(P); \
272 tokens = psi_plist_add(tokens, &token); \
273 P->col += P->cur - P->tok; \
274 if (P->flags & PSI_DEBUG) { \
275 fprintf(stderr, "PSI< "); \
276 psi_token_dump(2, token); \
281 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
)
283 struct psi_plist
*tokens
;
284 struct psi_token
*token
;
290 tokens
= psi_plist_init(NULL
);
296 #line 297 "src/parser.c"
299 unsigned int yyaccept
= 0;
300 if ((P
->lim
- P
->cur
) < 12) if (P
->cur
>= P
->lim
) goto done
;;
390 case '\\': goto yy71
;
402 #line 426 "src/parser.re"
404 #line 405 "src/parser.c"
407 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
415 #line 425 "src/parser.re"
416 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
417 #line 418 "src/parser.c"
420 #line 424 "src/parser.re"
421 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
422 #line 423 "src/parser.c"
425 switch ((yych
= *P
->cur
)) {
430 #line 333 "src/parser.re"
431 { NEWTOKEN(PSI_T_NOT
); goto start
; }
432 #line 433 "src/parser.c"
435 yych
= *(P
->mrk
= ++P
->cur
);
442 #line 316 "src/parser.re"
443 { NEWTOKEN(PSI_T_HASH
); goto start
; }
444 #line 445 "src/parser.c"
515 #line 334 "src/parser.re"
516 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
517 #line 518 "src/parser.c"
520 switch ((yych
= *P
->cur
)) {
525 #line 335 "src/parser.re"
526 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
527 #line 528 "src/parser.c"
530 #line 317 "src/parser.re"
531 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
532 #line 533 "src/parser.c"
535 #line 318 "src/parser.re"
536 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
537 #line 538 "src/parser.c"
540 #line 331 "src/parser.re"
541 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
542 #line 543 "src/parser.c"
545 yych
= *(P
->mrk
= ++P
->cur
);
561 #line 336 "src/parser.re"
562 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
563 #line 564 "src/parser.c"
566 #line 320 "src/parser.re"
567 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
568 #line 569 "src/parser.c"
571 yych
= *(P
->mrk
= ++P
->cur
);
587 #line 337 "src/parser.re"
588 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
589 #line 590 "src/parser.c"
592 yych
= *(P
->mrk
= ++P
->cur
);
609 switch ((yych
= *P
->cur
)) {
611 case '/': goto yy101
;
615 #line 338 "src/parser.re"
616 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
617 #line 618 "src/parser.c"
621 if ((P
->lim
- P
->cur
) < 3) if (P
->cur
>= P
->lim
) goto done
;;
636 case 'e': goto yy103
;
640 #line 419 "src/parser.re"
641 { NEWTOKEN(PSI_T_NUMBER
); goto start
; }
642 #line 643 "src/parser.c"
645 #line 321 "src/parser.re"
646 { NEWTOKEN(PSI_T_COLON
); goto start
; }
647 #line 648 "src/parser.c"
650 #line 319 "src/parser.re"
651 { NEWTOKEN(PSI_T_EOS
); goto start
; }
652 #line 653 "src/parser.c"
655 switch ((yych
= *P
->cur
)) {
656 case '<': goto yy104
;
657 case '=': goto yy106
;
661 #line 346 "src/parser.re"
662 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
663 #line 664 "src/parser.c"
666 switch ((yych
= *P
->cur
)) {
667 case '=': goto yy108
;
671 #line 330 "src/parser.re"
672 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
673 #line 674 "src/parser.c"
676 switch ((yych
= *P
->cur
)) {
677 case '=': goto yy110
;
678 case '>': goto yy112
;
682 #line 347 "src/parser.re"
683 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
684 #line 685 "src/parser.c"
687 yych
= *(P
->mrk
= ++P
->cur
);
690 case 'r': goto yy114
;
694 #line 420 "src/parser.re"
695 { NEWTOKEN(PSI_T_NAME
); goto start
; }
696 #line 697 "src/parser.c"
699 yych
= *(P
->mrk
= ++P
->cur
);
702 case 'o': goto yy116
;
707 yych
= *(P
->mrk
= ++P
->cur
);
710 case 'a': goto yy117
;
712 case 'h': goto yy118
;
714 case 'o': goto yy119
;
719 yych
= *(P
->mrk
= ++P
->cur
);
722 case 'e': goto yy120
;
724 case 'o': goto yy121
;
729 yych
= *(P
->mrk
= ++P
->cur
);
732 case 'l': goto yy122
;
734 case 'n': goto yy123
;
736 case 'r': goto yy124
;
741 yych
= *(P
->mrk
= ++P
->cur
);
744 case 'a': goto yy125
;
746 case 'l': goto yy126
;
748 case 'r': goto yy127
;
750 case 'u': goto yy128
;
756 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
823 case '\\': goto yy115
;
828 yych
= *(P
->mrk
= ++P
->cur
);
831 case 'f': goto yy129
;
833 case 'n': goto yy131
;
838 yych
= *(P
->mrk
= ++P
->cur
);
841 case 'e': goto yy132
;
843 case 'i': goto yy133
;
845 case 'o': goto yy134
;
850 yych
= *(P
->mrk
= ++P
->cur
);
853 case 'i': goto yy135
;
858 yych
= *(P
->mrk
= ++P
->cur
);
861 case 'u': goto yy136
;
866 yych
= *(P
->mrk
= ++P
->cur
);
869 case 'b': goto yy137
;
874 yych
= *(P
->mrk
= ++P
->cur
);
877 case 'a': goto yy138
;
879 case 'o': goto yy139
;
881 case 'r': goto yy140
;
886 yych
= *(P
->mrk
= ++P
->cur
);
889 case 'e': goto yy141
;
894 yych
= *(P
->mrk
= ++P
->cur
);
897 case 'e': goto yy142
;
899 case 'h': goto yy143
;
901 case 'i': goto yy144
;
903 case 't': goto yy145
;
908 yych
= *(P
->mrk
= ++P
->cur
);
911 case 'e': goto yy146
;
913 case 'o': goto yy147
;
915 case 'r': goto yy148
;
917 case 'y': goto yy149
;
922 yych
= *(P
->mrk
= ++P
->cur
);
925 case 'i': goto yy150
;
927 case 'n': goto yy151
;
932 yych
= *(P
->mrk
= ++P
->cur
);
935 case 'o': goto yy152
;
940 yych
= *(P
->mrk
= ++P
->cur
);
943 case 'a': goto yy153
;
948 yych
= *(P
->mrk
= ++P
->cur
);
951 case 'v': goto yy154
;
956 #line 324 "src/parser.re"
957 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
958 #line 959 "src/parser.c"
961 switch ((yych
= *P
->cur
)) {
1014 case 'z': goto yy155
;
1018 #line 339 "src/parser.re"
1019 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1020 #line 1021 "src/parser.c"
1023 #line 325 "src/parser.re"
1024 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1025 #line 1026 "src/parser.c"
1028 #line 341 "src/parser.re"
1029 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1030 #line 1031 "src/parser.c"
1033 #line 322 "src/parser.re"
1034 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1035 #line 1036 "src/parser.c"
1038 switch ((yych
= *P
->cur
)) {
1039 case '|': goto yy158
;
1043 #line 340 "src/parser.re"
1044 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1045 #line 1046 "src/parser.c"
1048 #line 323 "src/parser.re"
1049 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1050 #line 1051 "src/parser.c"
1053 #line 332 "src/parser.re"
1054 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1055 #line 1056 "src/parser.c"
1058 #line 326 "src/parser.re"
1059 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1060 #line 1061 "src/parser.c"
1063 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
1066 case '"': goto yy160
;
1071 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
1136 case 'z': goto yy89
;
1140 #line 422 "src/parser.re"
1141 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1142 #line 1143 "src/parser.c"
1145 #line 328 "src/parser.re"
1146 { NEWTOKEN(PSI_T_AND
); goto start
; }
1147 #line 1148 "src/parser.c"
1160 case '9': goto yy97
;
1176 case 10: goto yy201
;
1177 case 11: goto yy220
;
1178 case 12: goto yy223
;
1179 case 13: goto yy229
;
1180 case 14: goto yy231
;
1181 case 15: goto yy234
;
1182 case 16: goto yy239
;
1183 case 17: goto yy249
;
1184 case 18: goto yy252
;
1185 case 19: goto yy267
;
1186 case 20: goto yy275
;
1187 case 21: goto yy282
;
1188 case 22: goto yy285
;
1189 case 23: goto yy287
;
1190 case 24: goto yy294
;
1191 case 25: goto yy296
;
1192 case 26: goto yy300
;
1193 case 27: goto yy302
;
1194 case 28: goto yy304
;
1195 case 29: goto yy306
;
1196 case 30: goto yy309
;
1197 case 31: goto yy317
;
1198 case 32: goto yy325
;
1199 case 33: goto yy344
;
1200 case 34: goto yy346
;
1201 case 35: goto yy350
;
1202 case 36: goto yy355
;
1203 case 37: goto yy357
;
1204 case 38: goto yy359
;
1205 case 39: goto yy363
;
1206 case 40: goto yy368
;
1207 case 41: goto yy370
;
1208 case 42: goto yy372
;
1209 case 43: goto yy374
;
1210 case 44: goto yy379
;
1211 case 45: goto yy381
;
1212 case 46: goto yy383
;
1213 case 47: goto yy385
;
1214 case 48: goto yy387
;
1215 case 49: goto yy389
;
1216 case 50: goto yy391
;
1217 case 51: goto yy396
;
1218 case 52: goto yy407
;
1219 case 53: goto yy411
;
1220 case 54: goto yy415
;
1221 case 55: goto yy417
;
1222 case 56: goto yy419
;
1223 case 57: goto yy421
;
1224 case 58: goto yy426
;
1225 case 59: goto yy431
;
1226 case 60: goto yy436
;
1227 case 61: goto yy439
;
1228 case 62: goto yy441
;
1229 case 63: goto yy443
;
1230 case 64: goto yy445
;
1231 case 65: goto yy447
;
1232 case 66: goto yy451
;
1233 case 67: goto yy453
;
1234 case 68: goto yy457
;
1235 case 69: goto yy459
;
1236 case 70: goto yy461
;
1237 case 71: goto yy463
;
1238 case 72: goto yy467
;
1239 case 73: goto yy469
;
1240 case 74: goto yy472
;
1241 default: goto yy474
;
1246 case '.': goto yy162
;
1252 if ((P
->lim
- P
->cur
) < 3) if (P
->cur
>= P
->lim
) goto done
;;
1264 case '9': goto yy97
;
1266 case 'e': goto yy103
;
1271 #line 314 "src/parser.re"
1273 #line 1274 "src/parser.c"
1276 #line 315 "src/parser.re"
1277 { goto comment_sl
; }
1278 #line 1279 "src/parser.c"
1283 case '-': goto yy164
;
1293 case '9': goto yy165
;
1298 #line 342 "src/parser.re"
1299 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1300 #line 1301 "src/parser.c"
1303 #line 344 "src/parser.re"
1304 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1305 #line 1306 "src/parser.c"
1308 #line 327 "src/parser.re"
1309 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1310 #line 1311 "src/parser.c"
1313 #line 345 "src/parser.re"
1314 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1315 #line 1316 "src/parser.c"
1318 #line 343 "src/parser.re"
1319 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1320 #line 1321 "src/parser.c"
1323 yych
= *(P
->mrk
= ++P
->cur
);
1326 case 'r': goto yy167
;
1331 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
1386 case 'z': goto yy155
;
1391 yych
= *(P
->mrk
= ++P
->cur
);
1394 case 'o': goto yy168
;
1399 yych
= *(P
->mrk
= ++P
->cur
);
1402 case 'l': goto yy169
;
1407 yych
= *(P
->mrk
= ++P
->cur
);
1410 case 'a': goto yy170
;
1415 yych
= *(P
->mrk
= ++P
->cur
);
1418 case 'n': goto yy171
;
1420 case 'u': goto yy172
;
1425 yych
= *(P
->mrk
= ++P
->cur
);
1428 case 'f': goto yy173
;
1433 yych
= *(P
->mrk
= ++P
->cur
);
1436 case 'u': goto yy174
;
1441 yych
= *(P
->mrk
= ++P
->cur
);
1444 case 'i': goto yy175
;
1446 case 's': goto yy176
;
1451 yych
= *(P
->mrk
= ++P
->cur
);
1454 case 'd': goto yy177
;
1456 case 'u': goto yy178
;
1461 yych
= *(P
->mrk
= ++P
->cur
);
1464 case 'r': goto yy179
;
1469 yych
= *(P
->mrk
= ++P
->cur
);
1472 case 'l': goto yy180
;
1477 yych
= *(P
->mrk
= ++P
->cur
);
1480 case 'o': goto yy181
;
1485 yych
= *(P
->mrk
= ++P
->cur
);
1488 case 'e': goto yy182
;
1493 yych
= *(P
->mrk
= ++P
->cur
);
1496 case 'n': goto yy183
;
1501 yych
= *(P
->mrk
= ++P
->cur
);
1561 case 'z': goto yy54
;
1563 case 'd': goto yy184
;
1565 case 'n': goto yy185
;
1566 case '\\': goto yy115
;
1567 default: goto yy130
;
1570 #line 349 "src/parser.re"
1571 { NEWTOKEN(PSI_T_IF
); goto start
; }
1572 #line 1573 "src/parser.c"
1575 yych
= *(P
->mrk
= ++P
->cur
);
1578 case 't': goto yy186
;
1583 yych
= *(P
->mrk
= ++P
->cur
);
1586 case 't': goto yy188
;
1591 yych
= *(P
->mrk
= ++P
->cur
);
1594 case 'b': goto yy190
;
1599 yych
= *(P
->mrk
= ++P
->cur
);
1602 case 'n': goto yy192
;
1607 yych
= *(P
->mrk
= ++P
->cur
);
1610 case 'x': goto yy193
;
1615 yych
= *(P
->mrk
= ++P
->cur
);
1618 case 'l': goto yy194
;
1623 yych
= *(P
->mrk
= ++P
->cur
);
1626 case 'j': goto yy195
;
1631 yych
= *(P
->mrk
= ++P
->cur
);
1634 case 't': goto yy196
;
1639 yych
= *(P
->mrk
= ++P
->cur
);
1642 case 's': goto yy197
;
1647 yych
= *(P
->mrk
= ++P
->cur
);
1650 case 'e': goto yy198
;
1655 yych
= *(P
->mrk
= ++P
->cur
);
1658 case 't': goto yy199
;
1663 yych
= *(P
->mrk
= ++P
->cur
);
1666 case 't': goto yy200
;
1671 yych
= *(P
->mrk
= ++P
->cur
);
1674 case 'o': goto yy202
;
1679 yych
= *(P
->mrk
= ++P
->cur
);
1682 case 'g': goto yy203
;
1687 yych
= *(P
->mrk
= ++P
->cur
);
1690 case 'a': goto yy204
;
1692 case 'r': goto yy205
;
1697 yych
= *(P
->mrk
= ++P
->cur
);
1700 case 'm': goto yy206
;
1705 yych
= *(P
->mrk
= ++P
->cur
);
1707 case '_': goto yy207
;
1712 yych
= *(P
->mrk
= ++P
->cur
);
1715 case 'u': goto yy208
;
1720 yych
= *(P
->mrk
= ++P
->cur
);
1723 case 'p': goto yy209
;
1728 yych
= *(P
->mrk
= ++P
->cur
);
1731 case 'n': goto yy210
;
1736 yych
= *(P
->mrk
= ++P
->cur
);
1739 case 'd': goto yy211
;
1741 case 'i': goto yy212
;
1743 case 's': goto yy213
;
1748 yych
= *(P
->mrk
= ++P
->cur
);
1751 case 'i': goto yy214
;
1756 yych
= *(P
->mrk
= ++P
->cur
);
1759 case 'r': goto yy215
;
1764 yych
= *(P
->mrk
= ++P
->cur
);
1767 case 'a': goto yy216
;
1773 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
1838 case 'z': goto yy155
;
1839 case '\\': goto yy115
;
1840 default: goto yy157
;
1843 #line 421 "src/parser.re"
1844 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
1845 #line 1846 "src/parser.c"
1848 #line 329 "src/parser.re"
1849 { NEWTOKEN(PSI_T_OR
); goto start
; }
1850 #line 1851 "src/parser.c"
1853 #line 423 "src/parser.re"
1854 { NEWTOKEN(PSI_T_QUOTED_STRING
); goto start
; }
1855 #line 1856 "src/parser.c"
1858 #line 348 "src/parser.re"
1859 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
1860 #line 1861 "src/parser.c"
1873 case '9': goto yy165
;
1878 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
1890 case '9': goto yy165
;
1895 yych
= *(P
->mrk
= ++P
->cur
);
1898 case 'a': goto yy217
;
1900 case 'v': goto yy218
;
1905 yych
= *(P
->mrk
= ++P
->cur
);
1908 case 'l': goto yy219
;
1913 yych
= *(P
->mrk
= ++P
->cur
);
1916 case 'l': goto yy221
;
1921 yych
= *(P
->mrk
= ++P
->cur
);
1924 case 'r': goto yy222
;
1929 yych
= *(P
->mrk
= ++P
->cur
);
1932 case 's': goto yy224
;
1937 yych
= *(P
->mrk
= ++P
->cur
);
1940 case 'n': goto yy225
;
1945 yych
= *(P
->mrk
= ++P
->cur
);
1948 case 'i': goto yy226
;
1953 yych
= *(P
->mrk
= ++P
->cur
);
1956 case 'b': goto yy227
;
1961 yych
= *(P
->mrk
= ++P
->cur
);
1964 case 'f': goto yy228
;
1969 yych
= *(P
->mrk
= ++P
->cur
);
1972 case 'e': goto yy230
;
1977 yych
= *(P
->mrk
= ++P
->cur
);
1980 case 'i': goto yy232
;
1985 yych
= *(P
->mrk
= ++P
->cur
);
1988 case 'm': goto yy233
;
1993 yych
= *(P
->mrk
= ++P
->cur
);
1996 case 'o': goto yy235
;
2001 yych
= *(P
->mrk
= ++P
->cur
);
2004 case 's': goto yy236
;
2009 yych
= *(P
->mrk
= ++P
->cur
);
2012 case 'a': goto yy237
;
2017 yych
= *(P
->mrk
= ++P
->cur
);
2020 case 'e': goto yy238
;
2025 yych
= *(P
->mrk
= ++P
->cur
);
2028 case 'c': goto yy240
;
2033 yych
= *(P
->mrk
= ++P
->cur
);
2036 case 'e': goto yy241
;
2041 yych
= *(P
->mrk
= ++P
->cur
);
2044 case 'd': goto yy242
;
2049 yych
= *(P
->mrk
= ++P
->cur
);
2107 case 'z': goto yy54
;
2108 case '1': goto yy243
;
2109 case '3': goto yy244
;
2110 case '6': goto yy245
;
2111 case '8': goto yy246
;
2113 case 'v': goto yy247
;
2114 case '\\': goto yy115
;
2115 default: goto yy187
;
2118 #line 369 "src/parser.re"
2119 { NEWTOKEN(PSI_T_INT
); goto start
; }
2120 #line 2121 "src/parser.c"
2123 yych
= *(P
->mrk
= ++P
->cur
);
2187 case 'z': goto yy54
;
2188 case '\\': goto yy115
;
2189 default: goto yy189
;
2192 #line 395 "src/parser.re"
2193 { NEWTOKEN(PSI_T_LET
); goto start
; }
2194 #line 2195 "src/parser.c"
2197 yych
= *(P
->mrk
= ++P
->cur
);
2261 case 'z': goto yy54
;
2262 case '\\': goto yy115
;
2263 default: goto yy191
;
2266 #line 394 "src/parser.re"
2267 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2268 #line 2269 "src/parser.c"
2271 yych
= *(P
->mrk
= ++P
->cur
);
2274 case 'g': goto yy248
;
2279 yych
= *(P
->mrk
= ++P
->cur
);
2282 case 'e': goto yy250
;
2287 yych
= *(P
->mrk
= ++P
->cur
);
2290 case 'l': goto yy251
;
2295 yych
= *(P
->mrk
= ++P
->cur
);
2298 case 'e': goto yy253
;
2300 case 'v': goto yy254
;
2305 yych
= *(P
->mrk
= ++P
->cur
);
2308 case 'h': goto yy255
;
2313 yych
= *(P
->mrk
= ++P
->cur
);
2316 case 't': goto yy256
;
2321 yych
= *(P
->mrk
= ++P
->cur
);
2323 case '_': goto yy257
;
2328 yych
= *(P
->mrk
= ++P
->cur
);
2331 case 'u': goto yy258
;
2336 yych
= *(P
->mrk
= ++P
->cur
);
2400 case 'z': goto yy54
;
2401 case '\\': goto yy115
;
2402 default: goto yy201
;
2405 #line 396 "src/parser.re"
2406 { NEWTOKEN(PSI_T_SET
); goto start
; }
2407 #line 2408 "src/parser.c"
2410 yych
= *(P
->mrk
= ++P
->cur
);
2413 case 'r': goto yy259
;
2418 yych
= *(P
->mrk
= ++P
->cur
);
2421 case 'n': goto yy260
;
2426 yych
= *(P
->mrk
= ++P
->cur
);
2429 case 't': goto yy261
;
2434 yych
= *(P
->mrk
= ++P
->cur
);
2437 case 'i': goto yy262
;
2439 case 'l': goto yy263
;
2441 case 'u': goto yy264
;
2443 case 'v': goto yy265
;
2448 yych
= *(P
->mrk
= ++P
->cur
);
2451 case 'p': goto yy266
;
2456 yych
= *(P
->mrk
= ++P
->cur
);
2459 case 'a': goto yy268
;
2461 case 'b': goto yy269
;
2463 case 'f': goto yy270
;
2465 case 'i': goto yy271
;
2467 case 'o': goto yy272
;
2469 case 's': goto yy273
;
2474 yych
= *(P
->mrk
= ++P
->cur
);
2477 case 'e': goto yy274
;
2482 yych
= *(P
->mrk
= ++P
->cur
);
2485 case 'e': goto yy276
;
2490 yych
= *(P
->mrk
= ++P
->cur
);
2493 case 't': goto yy277
;
2498 yych
= *(P
->mrk
= ++P
->cur
);
2501 case 'e': goto yy278
;
2506 yych
= *(P
->mrk
= ++P
->cur
);
2509 case 'o': goto yy279
;
2514 yych
= *(P
->mrk
= ++P
->cur
);
2517 case 'i': goto yy280
;
2522 yych
= *(P
->mrk
= ++P
->cur
);
2525 case 'd': goto yy281
;
2530 yych
= *(P
->mrk
= ++P
->cur
);
2533 case 'n': goto yy283
;
2538 yych
= *(P
->mrk
= ++P
->cur
);
2541 case 'l': goto yy284
;
2546 yych
= *(P
->mrk
= ++P
->cur
);
2549 case 'y': goto yy286
;
2554 yych
= *(P
->mrk
= ++P
->cur
);
2557 case 'a': goto yy288
;
2562 yych
= *(P
->mrk
= ++P
->cur
);
2624 case 'z': goto yy54
;
2626 case 'v': goto yy289
;
2627 case '\\': goto yy115
;
2628 default: goto yy220
;
2631 #line 366 "src/parser.re"
2632 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
2633 #line 2634 "src/parser.c"
2636 yych
= *(P
->mrk
= ++P
->cur
);
2639 case 'a': goto yy290
;
2641 case 'b': goto yy291
;
2643 case 'o': goto yy292
;
2648 yych
= *(P
->mrk
= ++P
->cur
);
2712 case 'z': goto yy54
;
2713 case '\\': goto yy115
;
2714 default: goto yy223
;
2717 #line 367 "src/parser.re"
2718 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
2719 #line 2720 "src/parser.c"
2722 yych
= *(P
->mrk
= ++P
->cur
);
2725 case 't': goto yy293
;
2730 yych
= *(P
->mrk
= ++P
->cur
);
2733 case 't': goto yy295
;
2738 yych
= *(P
->mrk
= ++P
->cur
);
2741 case 'n': goto yy297
;
2746 yych
= *(P
->mrk
= ++P
->cur
);
2749 case 'l': goto yy298
;
2754 yych
= *(P
->mrk
= ++P
->cur
);
2818 case 'z': goto yy54
;
2819 case '\\': goto yy115
;
2820 default: goto yy229
;
2823 #line 353 "src/parser.re"
2824 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
2825 #line 2826 "src/parser.c"
2828 yych
= *(P
->mrk
= ++P
->cur
);
2892 case 'z': goto yy54
;
2893 case '\\': goto yy115
;
2894 default: goto yy231
;
2897 #line 352 "src/parser.re"
2898 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
2899 #line 2900 "src/parser.c"
2902 yych
= *(P
->mrk
= ++P
->cur
);
2905 case 'f': goto yy299
;
2910 yych
= *(P
->mrk
= ++P
->cur
);
2974 case 'z': goto yy54
;
2975 case '\\': goto yy115
;
2976 default: goto yy234
;
2979 #line 392 "src/parser.re"
2980 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
2981 #line 2982 "src/parser.c"
2984 yych
= *(P
->mrk
= ++P
->cur
);
2987 case 'r': goto yy301
;
2992 yych
= *(P
->mrk
= ++P
->cur
);
2995 case 'e': goto yy303
;
3000 yych
= *(P
->mrk
= ++P
->cur
);
3003 case 't': goto yy305
;
3008 yych
= *(P
->mrk
= ++P
->cur
);
3072 case 'z': goto yy54
;
3073 case '\\': goto yy115
;
3074 default: goto yy239
;
3077 #line 400 "src/parser.re"
3078 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3079 #line 3080 "src/parser.c"
3082 yych
= *(P
->mrk
= ++P
->cur
);
3085 case 't': goto yy307
;
3090 yych
= *(P
->mrk
= ++P
->cur
);
3093 case 'f': goto yy308
;
3098 yych
= *(P
->mrk
= ++P
->cur
);
3101 case 'e': goto yy310
;
3106 yych
= *(P
->mrk
= ++P
->cur
);
3108 case '6': goto yy311
;
3113 yych
= *(P
->mrk
= ++P
->cur
);
3115 case '2': goto yy312
;
3120 yych
= *(P
->mrk
= ++P
->cur
);
3122 case '4': goto yy313
;
3127 yych
= *(P
->mrk
= ++P
->cur
);
3129 case '_': goto yy314
;
3134 yych
= *(P
->mrk
= ++P
->cur
);
3137 case 'a': goto yy315
;
3142 yych
= *(P
->mrk
= ++P
->cur
);
3206 case 'z': goto yy54
;
3207 case '\\': goto yy115
;
3208 default: goto yy249
;
3211 #line 370 "src/parser.re"
3212 { NEWTOKEN(PSI_T_LONG
); goto start
; }
3213 #line 3214 "src/parser.c"
3216 yych
= *(P
->mrk
= ++P
->cur
);
3219 case 'd': goto yy316
;
3224 yych
= *(P
->mrk
= ++P
->cur
);
3288 case 'z': goto yy54
;
3289 case '\\': goto yy115
;
3290 default: goto yy252
;
3293 #line 362 "src/parser.re"
3294 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3295 #line 3296 "src/parser.c"
3298 yych
= *(P
->mrk
= ++P
->cur
);
3301 case 'c': goto yy318
;
3306 yych
= *(P
->mrk
= ++P
->cur
);
3309 case 'a': goto yy319
;
3314 yych
= *(P
->mrk
= ++P
->cur
);
3317 case 'v': goto yy320
;
3322 yych
= *(P
->mrk
= ++P
->cur
);
3324 case '_': goto yy321
;
3329 yych
= *(P
->mrk
= ++P
->cur
);
3332 case 'a': goto yy322
;
3337 yych
= *(P
->mrk
= ++P
->cur
);
3340 case 'r': goto yy323
;
3345 yych
= *(P
->mrk
= ++P
->cur
);
3348 case 't': goto yy324
;
3353 yych
= *(P
->mrk
= ++P
->cur
);
3356 case 'e': goto yy326
;
3361 yych
= *(P
->mrk
= ++P
->cur
);
3364 case 'i': goto yy327
;
3369 yych
= *(P
->mrk
= ++P
->cur
);
3372 case 'n': goto yy328
;
3377 yych
= *(P
->mrk
= ++P
->cur
);
3380 case 'e': goto yy329
;
3385 yych
= *(P
->mrk
= ++P
->cur
);
3388 case 'c': goto yy330
;
3393 yych
= *(P
->mrk
= ++P
->cur
);
3396 case 'a': goto yy331
;
3401 yych
= *(P
->mrk
= ++P
->cur
);
3465 case 'z': goto yy54
;
3466 case '\\': goto yy115
;
3467 default: goto yy267
;
3470 #line 401 "src/parser.re"
3471 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3472 #line 3473 "src/parser.c"
3475 yych
= *(P
->mrk
= ++P
->cur
);
3478 case 'r': goto yy332
;
3483 yych
= *(P
->mrk
= ++P
->cur
);
3486 case 'o': goto yy333
;
3491 yych
= *(P
->mrk
= ++P
->cur
);
3494 case 'l': goto yy334
;
3499 yych
= *(P
->mrk
= ++P
->cur
);
3502 case 'n': goto yy335
;
3507 yych
= *(P
->mrk
= ++P
->cur
);
3510 case 'b': goto yy336
;
3515 yych
= *(P
->mrk
= ++P
->cur
);
3518 case 't': goto yy337
;
3523 yych
= *(P
->mrk
= ++P
->cur
);
3587 case 'z': goto yy54
;
3588 case '\\': goto yy115
;
3589 default: goto yy275
;
3592 #line 360 "src/parser.re"
3593 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
3594 #line 3595 "src/parser.c"
3597 yych
= *(P
->mrk
= ++P
->cur
);
3600 case 'd': goto yy338
;
3605 yych
= *(P
->mrk
= ++P
->cur
);
3607 case '1': goto yy339
;
3608 case '3': goto yy340
;
3609 case '6': goto yy341
;
3610 case '8': goto yy342
;
3615 yych
= *(P
->mrk
= ++P
->cur
);
3618 case 'f': goto yy343
;
3623 yych
= *(P
->mrk
= ++P
->cur
);
3626 case 'n': goto yy345
;
3631 yych
= *(P
->mrk
= ++P
->cur
);
3634 case 'g': goto yy347
;
3639 yych
= *(P
->mrk
= ++P
->cur
);
3703 case 'z': goto yy54
;
3704 case '\\': goto yy115
;
3705 default: goto yy282
;
3708 #line 365 "src/parser.re"
3709 { NEWTOKEN(PSI_T_VOID
); goto start
; }
3710 #line 3711 "src/parser.c"
3713 yych
= *(P
->mrk
= ++P
->cur
);
3716 case 'i': goto yy348
;
3721 yych
= *(P
->mrk
= ++P
->cur
);
3785 case 'z': goto yy54
;
3786 case '\\': goto yy115
;
3787 default: goto yy285
;
3790 #line 410 "src/parser.re"
3791 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
3792 #line 3793 "src/parser.c"
3795 yych
= *(P
->mrk
= ++P
->cur
);
3859 case 'z': goto yy54
;
3860 case '\\': goto yy115
;
3861 default: goto yy287
;
3864 #line 384 "src/parser.re"
3865 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
3866 #line 3867 "src/parser.c"
3869 yych
= *(P
->mrk
= ++P
->cur
);
3872 case 'l': goto yy349
;
3877 yych
= *(P
->mrk
= ++P
->cur
);
3880 case 'a': goto yy351
;
3885 yych
= *(P
->mrk
= ++P
->cur
);
3888 case 'b': goto yy352
;
3893 yych
= *(P
->mrk
= ++P
->cur
);
3896 case 'a': goto yy353
;
3901 yych
= *(P
->mrk
= ++P
->cur
);
3904 case 'c': goto yy354
;
3909 yych
= *(P
->mrk
= ++P
->cur
);
3973 case 'z': goto yy54
;
3974 case '\\': goto yy115
;
3975 default: goto yy294
;
3978 #line 393 "src/parser.re"
3979 { NEWTOKEN(PSI_T_CONST
); goto start
; }
3980 #line 3981 "src/parser.c"
3983 yych
= *(P
->mrk
= ++P
->cur
);
4047 case 'z': goto yy54
;
4048 case '\\': goto yy115
;
4049 default: goto yy296
;
4052 #line 411 "src/parser.re"
4053 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4054 #line 4055 "src/parser.c"
4057 yych
= *(P
->mrk
= ++P
->cur
);
4060 case 'e': goto yy356
;
4065 yych
= *(P
->mrk
= ++P
->cur
);
4068 case 'e': goto yy358
;
4073 yych
= *(P
->mrk
= ++P
->cur
);
4137 case 'z': goto yy54
;
4138 case '\\': goto yy115
;
4139 default: goto yy300
;
4142 #line 354 "src/parser.re"
4143 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4144 #line 4145 "src/parser.c"
4147 yych
= *(P
->mrk
= ++P
->cur
);
4211 case 'z': goto yy54
;
4212 case '\\': goto yy115
;
4213 default: goto yy302
;
4216 #line 359 "src/parser.re"
4217 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
4218 #line 4219 "src/parser.c"
4221 yych
= *(P
->mrk
= ++P
->cur
);
4285 case 'z': goto yy54
;
4286 case '\\': goto yy115
;
4287 default: goto yy304
;
4290 #line 361 "src/parser.re"
4291 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
4292 #line 4293 "src/parser.c"
4295 yych
= *(P
->mrk
= ++P
->cur
);
4357 case 'z': goto yy54
;
4359 case 'v': goto yy360
;
4360 case '\\': goto yy115
;
4361 default: goto yy306
;
4364 #line 371 "src/parser.re"
4365 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
4366 #line 4367 "src/parser.c"
4369 yych
= *(P
->mrk
= ++P
->cur
);
4372 case 'i': goto yy361
;
4377 yych
= *(P
->mrk
= ++P
->cur
);
4441 case 'z': goto yy54
;
4442 case '\\': goto yy115
;
4443 default: goto yy309
;
4446 #line 350 "src/parser.re"
4447 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
4448 #line 4449 "src/parser.c"
4451 yych
= *(P
->mrk
= ++P
->cur
);
4454 case 'f': goto yy362
;
4459 yych
= *(P
->mrk
= ++P
->cur
);
4461 case '_': goto yy364
;
4466 yych
= *(P
->mrk
= ++P
->cur
);
4468 case '_': goto yy365
;
4473 yych
= *(P
->mrk
= ++P
->cur
);
4475 case '_': goto yy366
;
4480 yych
= *(P
->mrk
= ++P
->cur
);
4483 case 't': goto yy367
;
4488 yych
= *(P
->mrk
= ++P
->cur
);
4491 case 'l': goto yy369
;
4496 yych
= *(P
->mrk
= ++P
->cur
);
4560 case 'z': goto yy54
;
4561 case '\\': goto yy115
;
4562 default: goto yy317
;
4565 #line 363 "src/parser.re"
4566 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
4567 #line 4568 "src/parser.c"
4570 yych
= *(P
->mrk
= ++P
->cur
);
4573 case 't': goto yy371
;
4578 yych
= *(P
->mrk
= ++P
->cur
);
4581 case 'l': goto yy373
;
4586 yych
= *(P
->mrk
= ++P
->cur
);
4589 case 'a': goto yy375
;
4594 yych
= *(P
->mrk
= ++P
->cur
);
4597 case 'a': goto yy376
;
4602 yych
= *(P
->mrk
= ++P
->cur
);
4605 case 's': goto yy377
;
4610 yych
= *(P
->mrk
= ++P
->cur
);
4613 case 'n': goto yy378
;
4618 yych
= *(P
->mrk
= ++P
->cur
);
4682 case 'z': goto yy54
;
4683 case '\\': goto yy115
;
4684 default: goto yy325
;
4687 #line 368 "src/parser.re"
4688 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
4689 #line 4690 "src/parser.c"
4692 yych
= *(P
->mrk
= ++P
->cur
);
4695 case 'd': goto yy380
;
4700 yych
= *(P
->mrk
= ++P
->cur
);
4703 case 'c': goto yy382
;
4708 yych
= *(P
->mrk
= ++P
->cur
);
4711 case 'g': goto yy384
;
4716 yych
= *(P
->mrk
= ++P
->cur
);
4719 case 'n': goto yy386
;
4724 yych
= *(P
->mrk
= ++P
->cur
);
4727 case 't': goto yy388
;
4732 yych
= *(P
->mrk
= ++P
->cur
);
4735 case 'l': goto yy390
;
4740 yych
= *(P
->mrk
= ++P
->cur
);
4743 case 'r': goto yy392
;
4748 yych
= *(P
->mrk
= ++P
->cur
);
4751 case 'o': goto yy393
;
4756 yych
= *(P
->mrk
= ++P
->cur
);
4759 case 'o': goto yy394
;
4764 yych
= *(P
->mrk
= ++P
->cur
);
4767 case 't': goto yy395
;
4772 yych
= *(P
->mrk
= ++P
->cur
);
4775 case 'j': goto yy397
;
4780 yych
= *(P
->mrk
= ++P
->cur
);
4783 case 'r': goto yy398
;
4788 yych
= *(P
->mrk
= ++P
->cur
);
4791 case 'e': goto yy399
;
4796 yych
= *(P
->mrk
= ++P
->cur
);
4798 case '6': goto yy400
;
4803 yych
= *(P
->mrk
= ++P
->cur
);
4805 case '2': goto yy401
;
4810 yych
= *(P
->mrk
= ++P
->cur
);
4812 case '4': goto yy402
;
4817 yych
= *(P
->mrk
= ++P
->cur
);
4819 case '_': goto yy403
;
4824 yych
= *(P
->mrk
= ++P
->cur
);
4888 case 'z': goto yy54
;
4889 case '\\': goto yy115
;
4890 default: goto yy344
;
4893 #line 357 "src/parser.re"
4894 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
4895 #line 4896 "src/parser.c"
4898 yych
= *(P
->mrk
= ++P
->cur
);
4962 case 'z': goto yy54
;
4963 case '\\': goto yy115
;
4964 default: goto yy346
;
4967 #line 391 "src/parser.re"
4968 { NEWTOKEN(PSI_T_UNION
); goto start
; }
4969 #line 4970 "src/parser.c"
4972 yych
= *(P
->mrk
= ++P
->cur
);
4975 case 'n': goto yy404
;
4980 yych
= *(P
->mrk
= ++P
->cur
);
4983 case 'n': goto yy405
;
4988 yych
= *(P
->mrk
= ++P
->cur
);
5052 case 'z': goto yy54
;
5053 case '\\': goto yy115
;
5054 default: goto yy350
;
5057 #line 408 "src/parser.re"
5058 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5059 #line 5060 "src/parser.c"
5062 yych
= *(P
->mrk
= ++P
->cur
);
5065 case 'l': goto yy406
;
5070 yych
= *(P
->mrk
= ++P
->cur
);
5073 case 'l': goto yy408
;
5078 yych
= *(P
->mrk
= ++P
->cur
);
5081 case 'c': goto yy409
;
5086 yych
= *(P
->mrk
= ++P
->cur
);
5150 case 'z': goto yy54
;
5151 case '\\': goto yy115
;
5152 default: goto yy355
;
5155 #line 412 "src/parser.re"
5156 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
5157 #line 5158 "src/parser.c"
5160 yych
= *(P
->mrk
= ++P
->cur
);
5222 case 'z': goto yy54
;
5224 case 'd': goto yy410
;
5225 case '\\': goto yy115
;
5226 default: goto yy357
;
5229 #line 355 "src/parser.re"
5230 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
5231 #line 5232 "src/parser.c"
5234 yych
= *(P
->mrk
= ++P
->cur
);
5298 case 'z': goto yy54
;
5299 case '\\': goto yy115
;
5300 default: goto yy359
;
5303 #line 372 "src/parser.re"
5304 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
5305 #line 5306 "src/parser.c"
5308 yych
= *(P
->mrk
= ++P
->cur
);
5311 case 'a': goto yy412
;
5316 yych
= *(P
->mrk
= ++P
->cur
);
5319 case 'o': goto yy413
;
5324 yych
= *(P
->mrk
= ++P
->cur
);
5388 case 'z': goto yy54
;
5389 case '\\': goto yy115
;
5390 default: goto yy363
;
5393 #line 351 "src/parser.re"
5394 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
5395 #line 5396 "src/parser.c"
5398 yych
= *(P
->mrk
= ++P
->cur
);
5401 case 't': goto yy414
;
5406 yych
= *(P
->mrk
= ++P
->cur
);
5409 case 't': goto yy416
;
5414 yych
= *(P
->mrk
= ++P
->cur
);
5417 case 't': goto yy418
;
5422 yych
= *(P
->mrk
= ++P
->cur
);
5486 case 'z': goto yy54
;
5487 case '\\': goto yy115
;
5488 default: goto yy368
;
5491 #line 373 "src/parser.re"
5492 { NEWTOKEN(PSI_T_INT8
); goto start
; }
5493 #line 5494 "src/parser.c"
5496 yych
= *(P
->mrk
= ++P
->cur
);
5560 case 'z': goto yy54
;
5561 case '\\': goto yy115
;
5562 default: goto yy370
;
5565 #line 405 "src/parser.re"
5566 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
5567 #line 5568 "src/parser.c"
5570 yych
= *(P
->mrk
= ++P
->cur
);
5634 case 'z': goto yy54
;
5635 case '\\': goto yy115
;
5636 default: goto yy372
;
5639 #line 385 "src/parser.re"
5640 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
5641 #line 5642 "src/parser.c"
5644 yych
= *(P
->mrk
= ++P
->cur
);
5708 case 'z': goto yy54
;
5709 case '\\': goto yy115
;
5710 default: goto yy374
;
5713 #line 409 "src/parser.re"
5714 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
5715 #line 5716 "src/parser.c"
5718 yych
= *(P
->mrk
= ++P
->cur
);
5721 case 'l': goto yy420
;
5726 yych
= *(P
->mrk
= ++P
->cur
);
5729 case 's': goto yy422
;
5734 yych
= *(P
->mrk
= ++P
->cur
);
5737 case 's': goto yy423
;
5742 yych
= *(P
->mrk
= ++P
->cur
);
5806 case 'z': goto yy54
;
5807 case '\\': goto yy115
;
5808 default: goto yy379
;
5811 #line 399 "src/parser.re"
5812 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
5813 #line 5814 "src/parser.c"
5816 yych
= *(P
->mrk
= ++P
->cur
);
5880 case 'z': goto yy54
;
5881 case '\\': goto yy115
;
5882 default: goto yy381
;
5885 #line 382 "src/parser.re"
5886 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
5887 #line 5888 "src/parser.c"
5890 yych
= *(P
->mrk
= ++P
->cur
);
5954 case 'z': goto yy54
;
5955 case '\\': goto yy115
;
5956 default: goto yy383
;
5959 #line 387 "src/parser.re"
5960 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
5961 #line 5962 "src/parser.c"
5964 yych
= *(P
->mrk
= ++P
->cur
);
6028 case 'z': goto yy54
;
6029 case '\\': goto yy115
;
6030 default: goto yy385
;
6033 #line 383 "src/parser.re"
6034 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6035 #line 6036 "src/parser.c"
6038 yych
= *(P
->mrk
= ++P
->cur
);
6102 case 'z': goto yy54
;
6103 case '\\': goto yy115
;
6104 default: goto yy387
;
6107 #line 402 "src/parser.re"
6108 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6109 #line 6110 "src/parser.c"
6112 yych
= *(P
->mrk
= ++P
->cur
);
6176 case 'z': goto yy54
;
6177 case '\\': goto yy115
;
6178 default: goto yy389
;
6181 #line 390 "src/parser.re"
6182 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
6183 #line 6184 "src/parser.c"
6186 yych
= *(P
->mrk
= ++P
->cur
);
6250 case 'z': goto yy54
;
6251 case '\\': goto yy115
;
6252 default: goto yy391
;
6255 #line 403 "src/parser.re"
6256 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6257 #line 6258 "src/parser.c"
6260 yych
= *(P
->mrk
= ++P
->cur
);
6263 case 'a': goto yy424
;
6268 yych
= *(P
->mrk
= ++P
->cur
);
6271 case 'l': goto yy425
;
6276 yych
= *(P
->mrk
= ++P
->cur
);
6279 case 'a': goto yy427
;
6284 yych
= *(P
->mrk
= ++P
->cur
);
6348 case 'z': goto yy54
;
6349 case '\\': goto yy115
;
6350 default: goto yy396
;
6353 #line 416 "src/parser.re"
6354 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
6355 #line 6356 "src/parser.c"
6358 yych
= *(P
->mrk
= ++P
->cur
);
6361 case 'e': goto yy428
;
6366 yych
= *(P
->mrk
= ++P
->cur
);
6369 case 'i': goto yy429
;
6374 yych
= *(P
->mrk
= ++P
->cur
);
6377 case 'f': goto yy430
;
6382 yych
= *(P
->mrk
= ++P
->cur
);
6384 case '_': goto yy432
;
6389 yych
= *(P
->mrk
= ++P
->cur
);
6391 case '_': goto yy433
;
6396 yych
= *(P
->mrk
= ++P
->cur
);
6398 case '_': goto yy434
;
6403 yych
= *(P
->mrk
= ++P
->cur
);
6406 case 't': goto yy435
;
6411 yych
= *(P
->mrk
= ++P
->cur
);
6414 case 'e': goto yy437
;
6419 yych
= *(P
->mrk
= ++P
->cur
);
6422 case 'g': goto yy438
;
6427 yych
= *(P
->mrk
= ++P
->cur
);
6491 case 'z': goto yy54
;
6492 case '\\': goto yy115
;
6493 default: goto yy407
;
6496 #line 407 "src/parser.re"
6497 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
6498 #line 6499 "src/parser.c"
6501 yych
= *(P
->mrk
= ++P
->cur
);
6504 case 'e': goto yy440
;
6509 yych
= *(P
->mrk
= ++P
->cur
);
6512 case 'k': goto yy442
;
6517 yych
= *(P
->mrk
= ++P
->cur
);
6581 case 'z': goto yy54
;
6582 case '\\': goto yy115
;
6583 default: goto yy411
;
6586 #line 356 "src/parser.re"
6587 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
6588 #line 6589 "src/parser.c"
6591 yych
= *(P
->mrk
= ++P
->cur
);
6594 case 'l': goto yy444
;
6599 yych
= *(P
->mrk
= ++P
->cur
);
6602 case 'n': goto yy446
;
6607 yych
= *(P
->mrk
= ++P
->cur
);
6671 case 'z': goto yy54
;
6672 case '\\': goto yy115
;
6673 default: goto yy415
;
6676 #line 375 "src/parser.re"
6677 { NEWTOKEN(PSI_T_INT16
); goto start
; }
6678 #line 6679 "src/parser.c"
6681 yych
= *(P
->mrk
= ++P
->cur
);
6745 case 'z': goto yy54
;
6746 case '\\': goto yy115
;
6747 default: goto yy417
;
6750 #line 377 "src/parser.re"
6751 { NEWTOKEN(PSI_T_INT32
); goto start
; }
6752 #line 6753 "src/parser.c"
6755 yych
= *(P
->mrk
= ++P
->cur
);
6819 case 'z': goto yy54
;
6820 case '\\': goto yy115
;
6821 default: goto yy419
;
6824 #line 379 "src/parser.re"
6825 { NEWTOKEN(PSI_T_INT64
); goto start
; }
6826 #line 6827 "src/parser.c"
6829 yych
= *(P
->mrk
= ++P
->cur
);
6893 case 'z': goto yy54
;
6894 case '\\': goto yy115
;
6895 default: goto yy421
;
6898 #line 404 "src/parser.re"
6899 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
6900 #line 6901 "src/parser.c"
6903 yych
= *(P
->mrk
= ++P
->cur
);
6906 case 's': goto yy448
;
6911 yych
= *(P
->mrk
= ++P
->cur
);
6914 case 'e': goto yy449
;
6919 yych
= *(P
->mrk
= ++P
->cur
);
6922 case 'y': goto yy450
;
6927 yych
= *(P
->mrk
= ++P
->cur
);
6991 case 'z': goto yy54
;
6992 case '\\': goto yy115
;
6993 default: goto yy426
;
6996 #line 418 "src/parser.re"
6997 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
6998 #line 6999 "src/parser.c"
7001 yych
= *(P
->mrk
= ++P
->cur
);
7004 case 't': goto yy452
;
7009 yych
= *(P
->mrk
= ++P
->cur
);
7012 case 'c': goto yy454
;
7017 yych
= *(P
->mrk
= ++P
->cur
);
7020 case 'n': goto yy455
;
7025 yych
= *(P
->mrk
= ++P
->cur
);
7089 case 'z': goto yy54
;
7090 case '\\': goto yy115
;
7091 default: goto yy431
;
7094 #line 389 "src/parser.re"
7095 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
7096 #line 7097 "src/parser.c"
7099 yych
= *(P
->mrk
= ++P
->cur
);
7102 case 't': goto yy456
;
7107 yych
= *(P
->mrk
= ++P
->cur
);
7110 case 't': goto yy458
;
7115 yych
= *(P
->mrk
= ++P
->cur
);
7118 case 't': goto yy460
;
7123 yych
= *(P
->mrk
= ++P
->cur
);
7187 case 'z': goto yy54
;
7188 case '\\': goto yy115
;
7189 default: goto yy436
;
7192 #line 374 "src/parser.re"
7193 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
7194 #line 7195 "src/parser.c"
7197 yych
= *(P
->mrk
= ++P
->cur
);
7200 case 'd': goto yy462
;
7205 yych
= *(P
->mrk
= ++P
->cur
);
7269 case 'z': goto yy54
;
7270 case '\\': goto yy115
;
7271 default: goto yy439
;
7274 #line 358 "src/parser.re"
7275 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
7276 #line 7277 "src/parser.c"
7279 yych
= *(P
->mrk
= ++P
->cur
);
7343 case 'z': goto yy54
;
7344 case '\\': goto yy115
;
7345 default: goto yy441
;
7348 #line 364 "src/parser.re"
7349 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
7350 #line 7351 "src/parser.c"
7353 yych
= *(P
->mrk
= ++P
->cur
);
7417 case 'z': goto yy54
;
7418 case '\\': goto yy115
;
7419 default: goto yy443
;
7422 #line 386 "src/parser.re"
7423 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
7424 #line 7425 "src/parser.c"
7427 yych
= *(P
->mrk
= ++P
->cur
);
7491 case 'z': goto yy54
;
7492 case '\\': goto yy115
;
7493 default: goto yy445
;
7496 #line 406 "src/parser.re"
7497 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
7498 #line 7499 "src/parser.c"
7501 yych
= *(P
->mrk
= ++P
->cur
);
7565 case 'z': goto yy54
;
7566 case '\\': goto yy115
;
7567 default: goto yy447
;
7570 #line 388 "src/parser.re"
7571 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
7572 #line 7573 "src/parser.c"
7575 yych
= *(P
->mrk
= ++P
->cur
);
7578 case 'e': goto yy464
;
7583 yych
= *(P
->mrk
= ++P
->cur
);
7586 case 'r': goto yy465
;
7591 yych
= *(P
->mrk
= ++P
->cur
);
7655 case 'z': goto yy54
;
7656 case '\\': goto yy115
;
7657 default: goto yy451
;
7660 #line 414 "src/parser.re"
7661 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
7662 #line 7663 "src/parser.c"
7665 yych
= *(P
->mrk
= ++P
->cur
);
7729 case 'z': goto yy54
;
7730 case '\\': goto yy115
;
7731 default: goto yy453
;
7734 #line 417 "src/parser.re"
7735 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
7736 #line 7737 "src/parser.c"
7739 yych
= *(P
->mrk
= ++P
->cur
);
7742 case 't': goto yy466
;
7747 yych
= *(P
->mrk
= ++P
->cur
);
7750 case 'g': goto yy468
;
7755 yych
= *(P
->mrk
= ++P
->cur
);
7819 case 'z': goto yy54
;
7820 case '\\': goto yy115
;
7821 default: goto yy457
;
7824 #line 376 "src/parser.re"
7825 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
7826 #line 7827 "src/parser.c"
7829 yych
= *(P
->mrk
= ++P
->cur
);
7893 case 'z': goto yy54
;
7894 case '\\': goto yy115
;
7895 default: goto yy459
;
7898 #line 378 "src/parser.re"
7899 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
7900 #line 7901 "src/parser.c"
7903 yych
= *(P
->mrk
= ++P
->cur
);
7967 case 'z': goto yy54
;
7968 case '\\': goto yy115
;
7969 default: goto yy461
;
7972 #line 380 "src/parser.re"
7973 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
7974 #line 7975 "src/parser.c"
7977 yych
= *(P
->mrk
= ++P
->cur
);
8041 case 'z': goto yy54
;
8042 case '\\': goto yy115
;
8043 default: goto yy463
;
8046 #line 381 "src/parser.re"
8047 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
8048 #line 8049 "src/parser.c"
8051 yych
= *(P
->mrk
= ++P
->cur
);
8054 case 'r': goto yy470
;
8059 yych
= *(P
->mrk
= ++P
->cur
);
8062 case 't': goto yy471
;
8067 yych
= *(P
->mrk
= ++P
->cur
);
8131 case 'z': goto yy54
;
8132 case '\\': goto yy115
;
8133 default: goto yy467
;
8136 #line 413 "src/parser.re"
8137 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
8138 #line 8139 "src/parser.c"
8141 yych
= *(P
->mrk
= ++P
->cur
);
8205 case 'z': goto yy54
;
8206 case '\\': goto yy115
;
8207 default: goto yy469
;
8210 #line 415 "src/parser.re"
8211 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
8212 #line 8213 "src/parser.c"
8215 yych
= *(P
->mrk
= ++P
->cur
);
8218 case 't': goto yy473
;
8223 yych
= *(P
->mrk
= ++P
->cur
);
8287 case 'z': goto yy54
;
8288 case '\\': goto yy115
;
8289 default: goto yy472
;
8292 #line 397 "src/parser.re"
8293 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
8294 #line 8295 "src/parser.c"
8297 yych
= *(P
->mrk
= ++P
->cur
);
8361 case 'z': goto yy54
;
8362 case '\\': goto yy115
;
8363 default: goto yy474
;
8366 #line 398 "src/parser.re"
8367 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
8368 #line 8369 "src/parser.c"
8370 #line 428 "src/parser.re"
8375 #line 8376 "src/parser.c"
8378 if ((P
->lim
- P
->cur
) < 2) if (P
->cur
>= P
->lim
) goto done
;;
8382 case '\r': goto yy479
;
8383 case '*': goto yy481
;
8384 default: goto yy477
;
8389 #line 435 "src/parser.re"
8391 #line 8392 "src/parser.c"
8394 #line 433 "src/parser.re"
8395 { NEWLINE(); goto comment
; }
8396 #line 8397 "src/parser.c"
8400 case '/': goto yy482
;
8401 default: goto yy478
;
8405 #line 434 "src/parser.re"
8406 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
8407 #line 8408 "src/parser.c"
8409 #line 437 "src/parser.re"
8414 #line 8415 "src/parser.c"
8417 if (P
->lim
<= P
->cur
) if (P
->cur
>= P
->lim
) goto done
;;
8421 case '\r': goto yy488
;
8422 default: goto yy486
;
8426 #line 443 "src/parser.re"
8427 { goto comment_sl
; }
8428 #line 8429 "src/parser.c"
8431 #line 442 "src/parser.re"
8432 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
8433 #line 8434 "src/parser.c"
8435 #line 445 "src/parser.re"
8438 psi_plist_free(tokens
);