1 /* Generated by re2c 0.16 on Tue Feb 21 15:25:35 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"
34 void *psi_parser_proc_init(void);
35 void psi_parser_proc_free(void **parser_proc
);
36 void psi_parser_proc_parse(void *parser_proc
, token_t r
, struct psi_token
*token
, struct psi_parser
*parser
);
37 void psi_parser_proc_trace(FILE *out
, char *prefix
);
39 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
42 P
= malloc(sizeof(*P
));
44 memset(P
, 0, sizeof(*P
));
46 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
50 P
->proc
= psi_parser_proc_init();
52 if (flags
& PSI_DEBUG
) {
53 psi_parser_proc_trace(stderr
, "PSI> ");
59 bool psi_parser_open_file(struct psi_parser
*P
, const char *filename
)
61 FILE *fp
= fopen(filename
, "r");
64 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
65 "Could not open '%s' for reading: %s",
66 filename
, strerror(errno
));
70 P
->input
.type
= PSI_PARSE_FILE
;
71 P
->input
.data
.file
.handle
= fp
;
78 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
79 "Could not stat '%s': %s",
80 filename
, strerror(errno
));
84 P
->input
.data
.file
.buffer
= mmap(NULL
, sb
.st_size
, PROT_READ
, MAP_SHARED
, fd
, 0);
85 if (MAP_FAILED
== P
->input
.data
.file
.buffer
) {
86 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
87 "Could not map '%s' for reading: %s",
88 filename
, strerror(errno
));
91 P
->input
.data
.file
.length
= sb
.st_size
;
93 P
->input
.data
.file
.buffer
= malloc(BSIZE
);
96 P
->file
.fn
= strdup(filename
);
101 bool psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
103 P
->input
.type
= PSI_PARSE_STRING
;
104 P
->input
.data
.string
.length
= length
;
105 if (!(P
->input
.data
.string
.buffer
= strndup(string
, length
))) {
109 P
->file
.fn
= strdup("<input>");
114 static ssize_t
psi_parser_fill(struct psi_parser
*P
, size_t n
)
116 PSI_DEBUG_PRINT(P
, "PSI< Fill: n=%zu (input.type=%d)\n", n
, P
->input
.type
);
120 switch (P
->input
.type
) {
122 P
->cur
= P
->tok
= P
->mrk
= P
->input
.data
.file
.buffer
;
124 P
->eof
= P
->input
.data
.file
.buffer
+ P
->input
.data
.file
.length
;
128 P
->lim
= P
->input
.data
.file
.buffer
;
132 case PSI_PARSE_STRING
:
133 P
->cur
= P
->tok
= P
->mrk
= P
->input
.data
.string
.buffer
;
134 P
->eof
= P
->input
.data
.string
.buffer
+ P
->input
.data
.string
.length
;
139 PSI_DEBUG_PRINT(P
, "PSI< Fill: cur=%p lim=%p eof=%p\n", P
->cur
, P
->lim
, P
->eof
);
142 switch (P
->input
.type
) {
143 case PSI_PARSE_STRING
:
149 size_t consumed
= P
->tok
- P
->buf
;
150 size_t reserved
= P
->lim
- P
->tok
;
151 size_t available
= BSIZE
- reserved
;
155 memmove(P
->buf
, P
->tok
, reserved
);
162 didread
= fread(P
->lim
, 1, available
, P
->fp
);
164 if (didread
< available
) {
167 PSI_DEBUG_PRINT(P
, "PSI< Fill: consumed=%zu reserved=%zu available=%zu didread=%zu\n",
168 consumed
, reserved
, available
, didread
);
174 PSI_DEBUG_PRINT(P
, "PSI< Fill: avail=%td\n", P
->lim
- P
->cur
);
176 return P
->lim
- P
->cur
;
179 void psi_parser_parse(struct psi_parser
*P
, struct psi_token
*T
)
182 psi_parser_proc_parse(P
->proc
, T
->type
, T
, P
);
184 psi_parser_proc_parse(P
->proc
, 0, NULL
, P
);
188 void psi_parser_dtor(struct psi_parser
*P
)
190 psi_parser_proc_free(&P
->proc
);
192 switch (P
->input
.type
) {
194 if (P
->input
.data
.file
.buffer
) {
196 munmap(P
->input
.data
.file
.buffer
, P
->input
.data
.file
.length
);
198 free(P
->input
.data
.file
.buffer
);
201 if (P
->input
.data
.file
.handle
) {
202 fclose(P
->input
.data
.file
.handle
);
206 case PSI_PARSE_STRING
:
207 if (P
->input
.data
.string
.buffer
) {
208 free(P
->input
.data
.string
.buffer
);
213 psi_data_dtor(PSI_DATA(P
));
215 memset(P
, 0, sizeof(*P
));
218 void psi_parser_free(struct psi_parser
**P
)
228 #if BSIZE < YYMAXFILL
229 # error BSIZE must be greater than YYMAXFILL
232 #define RETURN(t) do { \
234 PSI_DEBUG_PRINT(P, "PSI< TOKEN: %d %.*s (EOF=%d %s:%u:%u)\n", \
235 P->num, (int) (P->cur-P->tok), P->tok, P->num == PSI_T_EOF, \
236 P->file.fn, P->line, P->col); \
241 P->col += P->cur - P->tok
243 #define NEWLINE(label) \
248 token_t
psi_parser_scan(struct psi_parser
*P
)
251 psi_parser_fill(P
, 0);
258 #line 259 "src/parser.c"
261 unsigned int yyaccept
= 0;
262 if ((P
->lim
- P
->cur
) < 12) { if (!psi_parser_fill(P
,12)) RETURN(PSI_T_EOF
); };
352 case '\\': goto yy69
;
364 #line 371 "src/parser.re"
366 #line 367 "src/parser.c"
369 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
377 #line 306 "src/parser.re"
379 #line 380 "src/parser.c"
382 #line 305 "src/parser.re"
383 { NEWLINE(nextline
); }
384 #line 385 "src/parser.c"
387 switch ((yych
= *P
->cur
)) {
392 #line 290 "src/parser.re"
394 #line 395 "src/parser.c"
397 yych
= *(P
->mrk
= ++P
->cur
);
404 yych
= *(P
->mrk
= ++P
->cur
);
476 #line 291 "src/parser.re"
477 {RETURN(PSI_T_MODULO
);}
478 #line 479 "src/parser.c"
481 switch ((yych
= *P
->cur
)) {
486 #line 292 "src/parser.re"
487 {RETURN(PSI_T_AMPERSAND
);}
488 #line 489 "src/parser.c"
491 #line 274 "src/parser.re"
492 {RETURN(PSI_T_LPAREN
);}
493 #line 494 "src/parser.c"
496 #line 275 "src/parser.re"
497 {RETURN(PSI_T_RPAREN
);}
498 #line 499 "src/parser.c"
501 #line 288 "src/parser.re"
502 {RETURN(PSI_T_ASTERISK
);}
503 #line 504 "src/parser.c"
506 yych
= *(P
->mrk
= ++P
->cur
);
522 #line 293 "src/parser.re"
523 {RETURN(PSI_T_PLUS
);}
524 #line 525 "src/parser.c"
527 #line 277 "src/parser.re"
528 {RETURN(PSI_T_COMMA
);}
529 #line 530 "src/parser.c"
532 yych
= *(P
->mrk
= ++P
->cur
);
548 #line 294 "src/parser.re"
549 {RETURN(PSI_T_MINUS
);}
550 #line 551 "src/parser.c"
553 yych
= *(P
->mrk
= ++P
->cur
);
570 yych
= *(P
->mrk
= ++P
->cur
);
572 case '*': goto yy100
;
577 #line 295 "src/parser.re"
578 {RETURN(PSI_T_SLASH
);}
579 #line 580 "src/parser.c"
583 if ((P
->lim
- P
->cur
) < 3) { if (!psi_parser_fill(P
,3)) RETURN(PSI_T_EOF
); };
598 case 'e': goto yy102
;
602 #line 366 "src/parser.re"
603 {RETURN(PSI_T_NUMBER
);}
604 #line 605 "src/parser.c"
607 #line 278 "src/parser.re"
608 {RETURN(PSI_T_COLON
);}
609 #line 610 "src/parser.c"
612 #line 276 "src/parser.re"
614 #line 615 "src/parser.c"
617 switch ((yych
= *P
->cur
)) {
618 case '<': goto yy103
;
619 case '=': goto yy105
;
623 #line 302 "src/parser.re"
624 {RETURN(PSI_T_LCHEVR
);}
625 #line 626 "src/parser.c"
628 switch ((yych
= *P
->cur
)) {
629 case '=': goto yy107
;
633 #line 287 "src/parser.re"
634 {RETURN(PSI_T_EQUALS
);}
635 #line 636 "src/parser.c"
638 switch ((yych
= *P
->cur
)) {
639 case '=': goto yy109
;
640 case '>': goto yy111
;
644 #line 303 "src/parser.re"
645 {RETURN(PSI_T_RCHEVR
);}
646 #line 647 "src/parser.c"
649 yych
= *(P
->mrk
= ++P
->cur
);
652 case 'r': goto yy113
;
656 #line 367 "src/parser.re"
657 {RETURN(PSI_T_NAME
);}
658 #line 659 "src/parser.c"
661 yych
= *(P
->mrk
= ++P
->cur
);
664 case 'o': goto yy115
;
669 yych
= *(P
->mrk
= ++P
->cur
);
672 case 'a': goto yy116
;
674 case 'h': goto yy117
;
676 case 'o': goto yy118
;
681 yych
= *(P
->mrk
= ++P
->cur
);
684 case 'o': goto yy119
;
689 yych
= *(P
->mrk
= ++P
->cur
);
692 case 'n': goto yy120
;
697 yych
= *(P
->mrk
= ++P
->cur
);
700 case 'a': goto yy121
;
702 case 'l': goto yy122
;
704 case 'r': goto yy123
;
706 case 'u': goto yy124
;
712 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
779 case '\\': goto yy114
;
784 yych
= *(P
->mrk
= ++P
->cur
);
787 case 'n': goto yy125
;
792 yych
= *(P
->mrk
= ++P
->cur
);
795 case 'e': goto yy126
;
797 case 'i': goto yy127
;
799 case 'o': goto yy128
;
804 yych
= *(P
->mrk
= ++P
->cur
);
807 case 'i': goto yy129
;
812 yych
= *(P
->mrk
= ++P
->cur
);
815 case 'u': goto yy130
;
820 yych
= *(P
->mrk
= ++P
->cur
);
823 case 'b': goto yy131
;
828 yych
= *(P
->mrk
= ++P
->cur
);
831 case 'a': goto yy132
;
833 case 'o': goto yy133
;
835 case 'r': goto yy134
;
840 yych
= *(P
->mrk
= ++P
->cur
);
843 case 'e': goto yy135
;
848 yych
= *(P
->mrk
= ++P
->cur
);
851 case 'e': goto yy136
;
853 case 'h': goto yy137
;
855 case 'i': goto yy138
;
857 case 't': goto yy139
;
862 yych
= *(P
->mrk
= ++P
->cur
);
865 case 'e': goto yy140
;
867 case 'o': goto yy141
;
869 case 'r': goto yy142
;
871 case 'y': goto yy143
;
876 yych
= *(P
->mrk
= ++P
->cur
);
879 case 'i': goto yy144
;
881 case 'n': goto yy145
;
886 yych
= *(P
->mrk
= ++P
->cur
);
889 case 'o': goto yy146
;
894 yych
= *(P
->mrk
= ++P
->cur
);
897 case 'v': goto yy147
;
902 #line 281 "src/parser.re"
903 {RETURN(PSI_T_LBRACKET
);}
904 #line 905 "src/parser.c"
960 case 'z': goto yy148
;
965 #line 282 "src/parser.re"
966 {RETURN(PSI_T_RBRACKET
);}
967 #line 968 "src/parser.c"
970 #line 297 "src/parser.re"
971 {RETURN(PSI_T_CARET
);}
972 #line 973 "src/parser.c"
975 #line 279 "src/parser.re"
976 {RETURN(PSI_T_LBRACE
);}
977 #line 978 "src/parser.c"
980 switch ((yych
= *P
->cur
)) {
981 case '|': goto yy151
;
985 #line 296 "src/parser.re"
986 {RETURN(PSI_T_PIPE
);}
987 #line 988 "src/parser.c"
990 #line 280 "src/parser.re"
991 {RETURN(PSI_T_RBRACE
);}
992 #line 993 "src/parser.c"
995 #line 289 "src/parser.re"
996 {RETURN(PSI_T_TILDE
);}
997 #line 998 "src/parser.c"
1000 #line 283 "src/parser.re"
1001 {RETURN(PSI_T_CMP_NE
);}
1002 #line 1003 "src/parser.c"
1005 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1008 case '"': goto yy153
;
1013 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1017 case '\n': goto yy88
;
1022 #line 273 "src/parser.re"
1023 { NEWLINE(nextline
); }
1024 #line 1025 "src/parser.c"
1027 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1092 case 'z': goto yy90
;
1096 #line 369 "src/parser.re"
1097 {RETURN(PSI_T_DOLLAR_NAME
);}
1098 #line 1099 "src/parser.c"
1101 #line 285 "src/parser.re"
1102 {RETURN(PSI_T_AND
);}
1103 #line 1104 "src/parser.c"
1116 case '9': goto yy98
;
1132 case 10: goto yy187
;
1133 case 11: goto yy204
;
1134 case 12: goto yy207
;
1135 case 13: goto yy212
;
1136 case 14: goto yy216
;
1137 case 15: goto yy224
;
1138 case 16: goto yy227
;
1139 case 17: goto yy242
;
1140 case 18: goto yy250
;
1141 case 19: goto yy256
;
1142 case 20: goto yy258
;
1143 case 21: goto yy260
;
1144 case 22: goto yy267
;
1145 case 23: goto yy269
;
1146 case 24: goto yy272
;
1147 case 25: goto yy274
;
1148 case 26: goto yy282
;
1149 case 27: goto yy290
;
1150 case 28: goto yy309
;
1151 case 29: goto yy312
;
1152 case 30: goto yy317
;
1153 case 31: goto yy319
;
1154 case 32: goto yy326
;
1155 case 33: goto yy328
;
1156 case 34: goto yy330
;
1157 case 35: goto yy332
;
1158 case 36: goto yy337
;
1159 case 37: goto yy339
;
1160 case 38: goto yy341
;
1161 case 39: goto yy343
;
1162 case 40: goto yy345
;
1163 case 41: goto yy347
;
1164 case 42: goto yy349
;
1165 case 43: goto yy354
;
1166 case 44: goto yy364
;
1167 case 45: goto yy370
;
1168 case 46: goto yy372
;
1169 case 47: goto yy374
;
1170 case 48: goto yy376
;
1171 case 49: goto yy381
;
1172 case 50: goto yy386
;
1173 case 51: goto yy391
;
1174 case 52: goto yy394
;
1175 case 53: goto yy396
;
1176 case 54: goto yy398
;
1177 case 55: goto yy400
;
1178 case 56: goto yy404
;
1179 case 57: goto yy406
;
1180 case 58: goto yy410
;
1181 case 59: goto yy412
;
1182 case 60: goto yy414
;
1183 case 61: goto yy416
;
1184 case 62: goto yy420
;
1185 case 63: goto yy422
;
1186 case 64: goto yy425
;
1187 default: goto yy427
;
1192 case '.': goto yy155
;
1198 if ((P
->lim
- P
->cur
) < 3) { if (!psi_parser_fill(P
,3)) RETURN(PSI_T_EOF
); };
1210 case '9': goto yy98
;
1212 case 'e': goto yy102
;
1217 #line 272 "src/parser.re"
1219 #line 1220 "src/parser.c"
1224 case '-': goto yy157
;
1234 case '9': goto yy158
;
1239 #line 298 "src/parser.re"
1240 {RETURN(PSI_T_LSHIFT
);}
1241 #line 1242 "src/parser.c"
1244 #line 300 "src/parser.re"
1245 {RETURN(PSI_T_CMP_LE
);}
1246 #line 1247 "src/parser.c"
1249 #line 284 "src/parser.re"
1250 {RETURN(PSI_T_CMP_EQ
);}
1251 #line 1252 "src/parser.c"
1254 #line 301 "src/parser.re"
1255 {RETURN(PSI_T_CMP_GE
);}
1256 #line 1257 "src/parser.c"
1259 #line 299 "src/parser.re"
1260 {RETURN(PSI_T_RSHIFT
);}
1261 #line 1262 "src/parser.c"
1264 yych
= *(P
->mrk
= ++P
->cur
);
1267 case 'r': goto yy160
;
1272 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1327 case 'z': goto yy148
;
1332 yych
= *(P
->mrk
= ++P
->cur
);
1335 case 'o': goto yy161
;
1340 yych
= *(P
->mrk
= ++P
->cur
);
1343 case 'l': goto yy162
;
1348 yych
= *(P
->mrk
= ++P
->cur
);
1351 case 'a': goto yy163
;
1356 yych
= *(P
->mrk
= ++P
->cur
);
1359 case 'n': goto yy164
;
1361 case 'u': goto yy165
;
1366 yych
= *(P
->mrk
= ++P
->cur
);
1369 case 'u': goto yy166
;
1374 yych
= *(P
->mrk
= ++P
->cur
);
1377 case 'u': goto yy167
;
1382 yych
= *(P
->mrk
= ++P
->cur
);
1385 case 'l': goto yy168
;
1390 yych
= *(P
->mrk
= ++P
->cur
);
1393 case 'o': goto yy169
;
1398 yych
= *(P
->mrk
= ++P
->cur
);
1401 case 'e': goto yy170
;
1406 yych
= *(P
->mrk
= ++P
->cur
);
1409 case 'n': goto yy171
;
1414 yych
= *(P
->mrk
= ++P
->cur
);
1417 case 't': goto yy172
;
1422 yych
= *(P
->mrk
= ++P
->cur
);
1425 case 't': goto yy174
;
1430 yych
= *(P
->mrk
= ++P
->cur
);
1433 case 'b': goto yy176
;
1438 yych
= *(P
->mrk
= ++P
->cur
);
1441 case 'n': goto yy178
;
1446 yych
= *(P
->mrk
= ++P
->cur
);
1449 case 'x': goto yy179
;
1454 yych
= *(P
->mrk
= ++P
->cur
);
1457 case 'l': goto yy180
;
1462 yych
= *(P
->mrk
= ++P
->cur
);
1465 case 'j': goto yy181
;
1470 yych
= *(P
->mrk
= ++P
->cur
);
1473 case 't': goto yy182
;
1478 yych
= *(P
->mrk
= ++P
->cur
);
1481 case 's': goto yy183
;
1486 yych
= *(P
->mrk
= ++P
->cur
);
1489 case 'e': goto yy184
;
1494 yych
= *(P
->mrk
= ++P
->cur
);
1497 case 't': goto yy185
;
1502 yych
= *(P
->mrk
= ++P
->cur
);
1505 case 't': goto yy186
;
1510 yych
= *(P
->mrk
= ++P
->cur
);
1513 case 'o': goto yy188
;
1518 yych
= *(P
->mrk
= ++P
->cur
);
1521 case 'g': goto yy189
;
1526 yych
= *(P
->mrk
= ++P
->cur
);
1529 case 'a': goto yy190
;
1531 case 'r': goto yy191
;
1536 yych
= *(P
->mrk
= ++P
->cur
);
1539 case 'm': goto yy192
;
1544 yych
= *(P
->mrk
= ++P
->cur
);
1546 case '_': goto yy193
;
1551 yych
= *(P
->mrk
= ++P
->cur
);
1554 case 'u': goto yy194
;
1559 yych
= *(P
->mrk
= ++P
->cur
);
1562 case 'p': goto yy195
;
1567 yych
= *(P
->mrk
= ++P
->cur
);
1570 case 'n': goto yy196
;
1575 yych
= *(P
->mrk
= ++P
->cur
);
1578 case 'i': goto yy197
;
1580 case 's': goto yy198
;
1585 yych
= *(P
->mrk
= ++P
->cur
);
1588 case 'i': goto yy199
;
1593 yych
= *(P
->mrk
= ++P
->cur
);
1596 case 'a': goto yy200
;
1602 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1667 case 'z': goto yy148
;
1668 case '\\': goto yy114
;
1669 default: goto yy150
;
1672 #line 368 "src/parser.re"
1673 {RETURN(PSI_T_NSNAME
);}
1674 #line 1675 "src/parser.c"
1677 #line 286 "src/parser.re"
1679 #line 1680 "src/parser.c"
1682 #line 370 "src/parser.re"
1683 {RETURN(PSI_T_QUOTED_STRING
);}
1684 #line 1685 "src/parser.c"
1687 #line 304 "src/parser.re"
1688 {RETURN(PSI_T_ELLIPSIS
);}
1689 #line 1690 "src/parser.c"
1702 case '9': goto yy158
;
1707 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1719 case '9': goto yy158
;
1724 yych
= *(P
->mrk
= ++P
->cur
);
1727 case 'a': goto yy201
;
1729 case 'v': goto yy202
;
1734 yych
= *(P
->mrk
= ++P
->cur
);
1737 case 'l': goto yy203
;
1742 yych
= *(P
->mrk
= ++P
->cur
);
1745 case 'l': goto yy205
;
1750 yych
= *(P
->mrk
= ++P
->cur
);
1753 case 'r': goto yy206
;
1758 yych
= *(P
->mrk
= ++P
->cur
);
1761 case 's': goto yy208
;
1766 yych
= *(P
->mrk
= ++P
->cur
);
1769 case 'n': goto yy209
;
1774 yych
= *(P
->mrk
= ++P
->cur
);
1777 case 'b': goto yy210
;
1782 yych
= *(P
->mrk
= ++P
->cur
);
1785 case 'm': goto yy211
;
1790 yych
= *(P
->mrk
= ++P
->cur
);
1793 case 's': goto yy213
;
1798 yych
= *(P
->mrk
= ++P
->cur
);
1801 case 'a': goto yy214
;
1806 yych
= *(P
->mrk
= ++P
->cur
);
1809 case 'e': goto yy215
;
1814 yych
= *(P
->mrk
= ++P
->cur
);
1817 case 'c': goto yy217
;
1822 yych
= *(P
->mrk
= ++P
->cur
);
1880 case 'z': goto yy53
;
1881 case '1': goto yy218
;
1882 case '3': goto yy219
;
1883 case '6': goto yy220
;
1884 case '8': goto yy221
;
1886 case 'v': goto yy222
;
1887 case '\\': goto yy114
;
1888 default: goto yy173
;
1891 #line 316 "src/parser.re"
1892 {RETURN(PSI_T_INT
);}
1893 #line 1894 "src/parser.c"
1896 yych
= *(P
->mrk
= ++P
->cur
);
1960 case 'z': goto yy53
;
1961 case '\\': goto yy114
;
1962 default: goto yy175
;
1965 #line 342 "src/parser.re"
1966 {RETURN(PSI_T_LET
);}
1967 #line 1968 "src/parser.c"
1970 yych
= *(P
->mrk
= ++P
->cur
);
2034 case 'z': goto yy53
;
2035 case '\\': goto yy114
;
2036 default: goto yy177
;
2039 #line 341 "src/parser.re"
2040 {RETURN(PSI_T_LIB
);}
2041 #line 2042 "src/parser.c"
2044 yych
= *(P
->mrk
= ++P
->cur
);
2047 case 'g': goto yy223
;
2052 yych
= *(P
->mrk
= ++P
->cur
);
2055 case 'e': goto yy225
;
2060 yych
= *(P
->mrk
= ++P
->cur
);
2063 case 'l': goto yy226
;
2068 yych
= *(P
->mrk
= ++P
->cur
);
2071 case 'e': goto yy228
;
2073 case 'v': goto yy229
;
2078 yych
= *(P
->mrk
= ++P
->cur
);
2081 case 'h': goto yy230
;
2086 yych
= *(P
->mrk
= ++P
->cur
);
2089 case 't': goto yy231
;
2094 yych
= *(P
->mrk
= ++P
->cur
);
2096 case '_': goto yy232
;
2101 yych
= *(P
->mrk
= ++P
->cur
);
2104 case 'u': goto yy233
;
2109 yych
= *(P
->mrk
= ++P
->cur
);
2173 case 'z': goto yy53
;
2174 case '\\': goto yy114
;
2175 default: goto yy187
;
2178 #line 343 "src/parser.re"
2179 {RETURN(PSI_T_SET
);}
2180 #line 2181 "src/parser.c"
2183 yych
= *(P
->mrk
= ++P
->cur
);
2186 case 'r': goto yy234
;
2191 yych
= *(P
->mrk
= ++P
->cur
);
2194 case 'n': goto yy235
;
2199 yych
= *(P
->mrk
= ++P
->cur
);
2202 case 't': goto yy236
;
2207 yych
= *(P
->mrk
= ++P
->cur
);
2210 case 'i': goto yy237
;
2212 case 'l': goto yy238
;
2214 case 'u': goto yy239
;
2216 case 'v': goto yy240
;
2221 yych
= *(P
->mrk
= ++P
->cur
);
2224 case 'p': goto yy241
;
2229 yych
= *(P
->mrk
= ++P
->cur
);
2232 case 'a': goto yy243
;
2234 case 'b': goto yy244
;
2236 case 'f': goto yy245
;
2238 case 'i': goto yy246
;
2240 case 'o': goto yy247
;
2242 case 's': goto yy248
;
2247 yych
= *(P
->mrk
= ++P
->cur
);
2250 case 'e': goto yy249
;
2255 yych
= *(P
->mrk
= ++P
->cur
);
2258 case 'e': goto yy251
;
2263 yych
= *(P
->mrk
= ++P
->cur
);
2266 case 't': goto yy252
;
2271 yych
= *(P
->mrk
= ++P
->cur
);
2274 case 'o': goto yy253
;
2279 yych
= *(P
->mrk
= ++P
->cur
);
2282 case 'i': goto yy254
;
2287 yych
= *(P
->mrk
= ++P
->cur
);
2290 case 'd': goto yy255
;
2295 yych
= *(P
->mrk
= ++P
->cur
);
2298 case 'l': goto yy257
;
2303 yych
= *(P
->mrk
= ++P
->cur
);
2306 case 'y': goto yy259
;
2311 yych
= *(P
->mrk
= ++P
->cur
);
2314 case 'a': goto yy261
;
2319 yych
= *(P
->mrk
= ++P
->cur
);
2381 case 'z': goto yy53
;
2383 case 'v': goto yy262
;
2384 case '\\': goto yy114
;
2385 default: goto yy204
;
2388 #line 313 "src/parser.re"
2389 {RETURN(PSI_T_BOOL
);}
2390 #line 2391 "src/parser.c"
2393 yych
= *(P
->mrk
= ++P
->cur
);
2396 case 'a': goto yy263
;
2398 case 'b': goto yy264
;
2400 case 'o': goto yy265
;
2405 yych
= *(P
->mrk
= ++P
->cur
);
2469 case 'z': goto yy53
;
2470 case '\\': goto yy114
;
2471 default: goto yy207
;
2474 #line 314 "src/parser.re"
2475 {RETURN(PSI_T_CHAR
);}
2476 #line 2477 "src/parser.c"
2479 yych
= *(P
->mrk
= ++P
->cur
);
2482 case 't': goto yy266
;
2487 yych
= *(P
->mrk
= ++P
->cur
);
2490 case 't': goto yy268
;
2495 yych
= *(P
->mrk
= ++P
->cur
);
2498 case 'l': goto yy270
;
2503 yych
= *(P
->mrk
= ++P
->cur
);
2567 case 'z': goto yy53
;
2568 case '\\': goto yy114
;
2569 default: goto yy212
;
2572 #line 339 "src/parser.re"
2573 {RETURN(PSI_T_ENUM
);}
2574 #line 2575 "src/parser.c"
2577 yych
= *(P
->mrk
= ++P
->cur
);
2580 case 'e': goto yy271
;
2585 yych
= *(P
->mrk
= ++P
->cur
);
2588 case 't': goto yy273
;
2593 yych
= *(P
->mrk
= ++P
->cur
);
2657 case 'z': goto yy53
;
2658 case '\\': goto yy114
;
2659 default: goto yy216
;
2662 #line 347 "src/parser.re"
2663 {RETURN(PSI_T_FREE
);}
2664 #line 2665 "src/parser.c"
2667 yych
= *(P
->mrk
= ++P
->cur
);
2670 case 't': goto yy275
;
2675 yych
= *(P
->mrk
= ++P
->cur
);
2677 case '6': goto yy276
;
2682 yych
= *(P
->mrk
= ++P
->cur
);
2684 case '2': goto yy277
;
2689 yych
= *(P
->mrk
= ++P
->cur
);
2691 case '4': goto yy278
;
2696 yych
= *(P
->mrk
= ++P
->cur
);
2698 case '_': goto yy279
;
2703 yych
= *(P
->mrk
= ++P
->cur
);
2706 case 'a': goto yy280
;
2711 yych
= *(P
->mrk
= ++P
->cur
);
2775 case 'z': goto yy53
;
2776 case '\\': goto yy114
;
2777 default: goto yy224
;
2780 #line 317 "src/parser.re"
2781 {RETURN(PSI_T_LONG
);}
2782 #line 2783 "src/parser.c"
2785 yych
= *(P
->mrk
= ++P
->cur
);
2788 case 'd': goto yy281
;
2793 yych
= *(P
->mrk
= ++P
->cur
);
2857 case 'z': goto yy53
;
2858 case '\\': goto yy114
;
2859 default: goto yy227
;
2862 #line 309 "src/parser.re"
2863 {RETURN(PSI_T_NULL
);}
2864 #line 2865 "src/parser.c"
2867 yych
= *(P
->mrk
= ++P
->cur
);
2870 case 'c': goto yy283
;
2875 yych
= *(P
->mrk
= ++P
->cur
);
2878 case 'a': goto yy284
;
2883 yych
= *(P
->mrk
= ++P
->cur
);
2886 case 'v': goto yy285
;
2891 yych
= *(P
->mrk
= ++P
->cur
);
2893 case '_': goto yy286
;
2898 yych
= *(P
->mrk
= ++P
->cur
);
2901 case 'a': goto yy287
;
2906 yych
= *(P
->mrk
= ++P
->cur
);
2909 case 'r': goto yy288
;
2914 yych
= *(P
->mrk
= ++P
->cur
);
2917 case 't': goto yy289
;
2922 yych
= *(P
->mrk
= ++P
->cur
);
2925 case 'e': goto yy291
;
2930 yych
= *(P
->mrk
= ++P
->cur
);
2933 case 'i': goto yy292
;
2938 yych
= *(P
->mrk
= ++P
->cur
);
2941 case 'n': goto yy293
;
2946 yych
= *(P
->mrk
= ++P
->cur
);
2949 case 'e': goto yy294
;
2954 yych
= *(P
->mrk
= ++P
->cur
);
2957 case 'c': goto yy295
;
2962 yych
= *(P
->mrk
= ++P
->cur
);
2965 case 'a': goto yy296
;
2970 yych
= *(P
->mrk
= ++P
->cur
);
3034 case 'z': goto yy53
;
3035 case '\\': goto yy114
;
3036 default: goto yy242
;
3039 #line 348 "src/parser.re"
3040 {RETURN(PSI_T_TEMP
);}
3041 #line 3042 "src/parser.c"
3044 yych
= *(P
->mrk
= ++P
->cur
);
3047 case 'r': goto yy297
;
3052 yych
= *(P
->mrk
= ++P
->cur
);
3055 case 'o': goto yy298
;
3060 yych
= *(P
->mrk
= ++P
->cur
);
3063 case 'l': goto yy299
;
3068 yych
= *(P
->mrk
= ++P
->cur
);
3071 case 'n': goto yy300
;
3076 yych
= *(P
->mrk
= ++P
->cur
);
3079 case 'b': goto yy301
;
3084 yych
= *(P
->mrk
= ++P
->cur
);
3087 case 't': goto yy302
;
3092 yych
= *(P
->mrk
= ++P
->cur
);
3156 case 'z': goto yy53
;
3157 case '\\': goto yy114
;
3158 default: goto yy250
;
3161 #line 307 "src/parser.re"
3162 {RETURN(PSI_T_TRUE
);}
3163 #line 3164 "src/parser.c"
3166 yych
= *(P
->mrk
= ++P
->cur
);
3169 case 'd': goto yy303
;
3174 yych
= *(P
->mrk
= ++P
->cur
);
3176 case '1': goto yy304
;
3177 case '3': goto yy305
;
3178 case '6': goto yy306
;
3179 case '8': goto yy307
;
3184 yych
= *(P
->mrk
= ++P
->cur
);
3187 case 'n': goto yy308
;
3192 yych
= *(P
->mrk
= ++P
->cur
);
3195 case 'g': goto yy310
;
3200 yych
= *(P
->mrk
= ++P
->cur
);
3264 case 'z': goto yy53
;
3265 case '\\': goto yy114
;
3266 default: goto yy256
;
3269 #line 312 "src/parser.re"
3270 {RETURN(PSI_T_VOID
);}
3271 #line 3272 "src/parser.c"
3274 yych
= *(P
->mrk
= ++P
->cur
);
3338 case 'z': goto yy53
;
3339 case '\\': goto yy114
;
3340 default: goto yy258
;
3343 #line 357 "src/parser.re"
3344 {RETURN(PSI_T_ZVAL
);}
3345 #line 3346 "src/parser.c"
3348 yych
= *(P
->mrk
= ++P
->cur
);
3412 case 'z': goto yy53
;
3413 case '\\': goto yy114
;
3414 default: goto yy260
;
3417 #line 331 "src/parser.re"
3418 {RETURN(PSI_T_ARRAY
);}
3419 #line 3420 "src/parser.c"
3422 yych
= *(P
->mrk
= ++P
->cur
);
3425 case 'l': goto yy311
;
3430 yych
= *(P
->mrk
= ++P
->cur
);
3433 case 'a': goto yy313
;
3438 yych
= *(P
->mrk
= ++P
->cur
);
3441 case 'b': goto yy314
;
3446 yych
= *(P
->mrk
= ++P
->cur
);
3449 case 'a': goto yy315
;
3454 yych
= *(P
->mrk
= ++P
->cur
);
3457 case 'c': goto yy316
;
3462 yych
= *(P
->mrk
= ++P
->cur
);
3526 case 'z': goto yy53
;
3527 case '\\': goto yy114
;
3528 default: goto yy267
;
3531 #line 340 "src/parser.re"
3532 {RETURN(PSI_T_CONST
);}
3533 #line 3534 "src/parser.c"
3536 yych
= *(P
->mrk
= ++P
->cur
);
3600 case 'z': goto yy53
;
3601 case '\\': goto yy114
;
3602 default: goto yy269
;
3605 #line 358 "src/parser.re"
3606 {RETURN(PSI_T_COUNT
);}
3607 #line 3608 "src/parser.c"
3610 yych
= *(P
->mrk
= ++P
->cur
);
3613 case 'e': goto yy318
;
3618 yych
= *(P
->mrk
= ++P
->cur
);
3682 case 'z': goto yy53
;
3683 case '\\': goto yy114
;
3684 default: goto yy272
;
3687 #line 308 "src/parser.re"
3688 {RETURN(PSI_T_FALSE
);}
3689 #line 3690 "src/parser.c"
3692 yych
= *(P
->mrk
= ++P
->cur
);
3754 case 'z': goto yy53
;
3756 case 'v': goto yy320
;
3757 case '\\': goto yy114
;
3758 default: goto yy274
;
3761 #line 318 "src/parser.re"
3762 {RETURN(PSI_T_FLOAT
);}
3763 #line 3764 "src/parser.c"
3766 yych
= *(P
->mrk
= ++P
->cur
);
3769 case 'i': goto yy321
;
3774 yych
= *(P
->mrk
= ++P
->cur
);
3776 case '_': goto yy322
;
3781 yych
= *(P
->mrk
= ++P
->cur
);
3783 case '_': goto yy323
;
3788 yych
= *(P
->mrk
= ++P
->cur
);
3790 case '_': goto yy324
;
3795 yych
= *(P
->mrk
= ++P
->cur
);
3798 case 't': goto yy325
;
3803 yych
= *(P
->mrk
= ++P
->cur
);
3806 case 'l': goto yy327
;
3811 yych
= *(P
->mrk
= ++P
->cur
);
3875 case 'z': goto yy53
;
3876 case '\\': goto yy114
;
3877 default: goto yy282
;
3880 #line 310 "src/parser.re"
3881 {RETURN(PSI_T_MIXED
);}
3882 #line 3883 "src/parser.c"
3885 yych
= *(P
->mrk
= ++P
->cur
);
3888 case 't': goto yy329
;
3893 yych
= *(P
->mrk
= ++P
->cur
);
3896 case 'l': goto yy331
;
3901 yych
= *(P
->mrk
= ++P
->cur
);
3904 case 'a': goto yy333
;
3909 yych
= *(P
->mrk
= ++P
->cur
);
3912 case 'a': goto yy334
;
3917 yych
= *(P
->mrk
= ++P
->cur
);
3920 case 's': goto yy335
;
3925 yych
= *(P
->mrk
= ++P
->cur
);
3928 case 'n': goto yy336
;
3933 yych
= *(P
->mrk
= ++P
->cur
);
3997 case 'z': goto yy53
;
3998 case '\\': goto yy114
;
3999 default: goto yy290
;
4002 #line 315 "src/parser.re"
4003 {RETURN(PSI_T_SHORT
);}
4004 #line 4005 "src/parser.c"
4007 yych
= *(P
->mrk
= ++P
->cur
);
4010 case 'd': goto yy338
;
4015 yych
= *(P
->mrk
= ++P
->cur
);
4018 case 'c': goto yy340
;
4023 yych
= *(P
->mrk
= ++P
->cur
);
4026 case 'g': goto yy342
;
4031 yych
= *(P
->mrk
= ++P
->cur
);
4034 case 'n': goto yy344
;
4039 yych
= *(P
->mrk
= ++P
->cur
);
4042 case 't': goto yy346
;
4047 yych
= *(P
->mrk
= ++P
->cur
);
4050 case 'l': goto yy348
;
4055 yych
= *(P
->mrk
= ++P
->cur
);
4058 case 'r': goto yy350
;
4063 yych
= *(P
->mrk
= ++P
->cur
);
4066 case 'o': goto yy351
;
4071 yych
= *(P
->mrk
= ++P
->cur
);
4074 case 'o': goto yy352
;
4079 yych
= *(P
->mrk
= ++P
->cur
);
4082 case 't': goto yy353
;
4087 yych
= *(P
->mrk
= ++P
->cur
);
4090 case 'j': goto yy355
;
4095 yych
= *(P
->mrk
= ++P
->cur
);
4098 case 'r': goto yy356
;
4103 yych
= *(P
->mrk
= ++P
->cur
);
4106 case 'e': goto yy357
;
4111 yych
= *(P
->mrk
= ++P
->cur
);
4113 case '6': goto yy358
;
4118 yych
= *(P
->mrk
= ++P
->cur
);
4120 case '2': goto yy359
;
4125 yych
= *(P
->mrk
= ++P
->cur
);
4127 case '4': goto yy360
;
4132 yych
= *(P
->mrk
= ++P
->cur
);
4134 case '_': goto yy361
;
4139 yych
= *(P
->mrk
= ++P
->cur
);
4203 case 'z': goto yy53
;
4204 case '\\': goto yy114
;
4205 default: goto yy309
;
4208 #line 338 "src/parser.re"
4209 {RETURN(PSI_T_UNION
);}
4210 #line 4211 "src/parser.c"
4213 yych
= *(P
->mrk
= ++P
->cur
);
4216 case 'n': goto yy362
;
4221 yych
= *(P
->mrk
= ++P
->cur
);
4285 case 'z': goto yy53
;
4286 case '\\': goto yy114
;
4287 default: goto yy312
;
4290 #line 355 "src/parser.re"
4291 {RETURN(PSI_T_ARRVAL
);}
4292 #line 4293 "src/parser.c"
4295 yych
= *(P
->mrk
= ++P
->cur
);
4298 case 'l': goto yy363
;
4303 yych
= *(P
->mrk
= ++P
->cur
);
4306 case 'l': goto yy365
;
4311 yych
= *(P
->mrk
= ++P
->cur
);
4314 case 'c': goto yy366
;
4319 yych
= *(P
->mrk
= ++P
->cur
);
4383 case 'z': goto yy53
;
4384 case '\\': goto yy114
;
4385 default: goto yy317
;
4388 #line 359 "src/parser.re"
4389 {RETURN(PSI_T_CALLOC
);}
4390 #line 4391 "src/parser.c"
4393 yych
= *(P
->mrk
= ++P
->cur
);
4457 case 'z': goto yy53
;
4458 case '\\': goto yy114
;
4459 default: goto yy319
;
4462 #line 319 "src/parser.re"
4463 {RETURN(PSI_T_DOUBLE
);}
4464 #line 4465 "src/parser.c"
4467 yych
= *(P
->mrk
= ++P
->cur
);
4470 case 'a': goto yy367
;
4475 yych
= *(P
->mrk
= ++P
->cur
);
4478 case 'o': goto yy368
;
4483 yych
= *(P
->mrk
= ++P
->cur
);
4486 case 't': goto yy369
;
4491 yych
= *(P
->mrk
= ++P
->cur
);
4494 case 't': goto yy371
;
4499 yych
= *(P
->mrk
= ++P
->cur
);
4502 case 't': goto yy373
;
4507 yych
= *(P
->mrk
= ++P
->cur
);
4571 case 'z': goto yy53
;
4572 case '\\': goto yy114
;
4573 default: goto yy326
;
4576 #line 320 "src/parser.re"
4577 {RETURN(PSI_T_INT8
);}
4578 #line 4579 "src/parser.c"
4581 yych
= *(P
->mrk
= ++P
->cur
);
4645 case 'z': goto yy53
;
4646 case '\\': goto yy114
;
4647 default: goto yy328
;
4650 #line 352 "src/parser.re"
4651 {RETURN(PSI_T_INTVAL
);}
4652 #line 4653 "src/parser.c"
4655 yych
= *(P
->mrk
= ++P
->cur
);
4719 case 'z': goto yy53
;
4720 case '\\': goto yy114
;
4721 default: goto yy330
;
4724 #line 332 "src/parser.re"
4725 {RETURN(PSI_T_OBJECT
);}
4726 #line 4727 "src/parser.c"
4729 yych
= *(P
->mrk
= ++P
->cur
);
4793 case 'z': goto yy53
;
4794 case '\\': goto yy114
;
4795 default: goto yy332
;
4798 #line 356 "src/parser.re"
4799 {RETURN(PSI_T_OBJVAL
);}
4800 #line 4801 "src/parser.c"
4803 yych
= *(P
->mrk
= ++P
->cur
);
4806 case 'l': goto yy375
;
4811 yych
= *(P
->mrk
= ++P
->cur
);
4814 case 's': goto yy377
;
4819 yych
= *(P
->mrk
= ++P
->cur
);
4822 case 's': goto yy378
;
4827 yych
= *(P
->mrk
= ++P
->cur
);
4891 case 'z': goto yy53
;
4892 case '\\': goto yy114
;
4893 default: goto yy337
;
4896 #line 346 "src/parser.re"
4897 {RETURN(PSI_T_RETURN
);}
4898 #line 4899 "src/parser.c"
4901 yych
= *(P
->mrk
= ++P
->cur
);
4965 case 'z': goto yy53
;
4966 case '\\': goto yy114
;
4967 default: goto yy339
;
4970 #line 329 "src/parser.re"
4971 {RETURN(PSI_T_SIGNED
);}
4972 #line 4973 "src/parser.c"
4975 yych
= *(P
->mrk
= ++P
->cur
);
5039 case 'z': goto yy53
;
5040 case '\\': goto yy114
;
5041 default: goto yy341
;
5044 #line 334 "src/parser.re"
5045 {RETURN(PSI_T_STATIC
);}
5046 #line 5047 "src/parser.c"
5049 yych
= *(P
->mrk
= ++P
->cur
);
5113 case 'z': goto yy53
;
5114 case '\\': goto yy114
;
5115 default: goto yy343
;
5118 #line 330 "src/parser.re"
5119 {RETURN(PSI_T_STRING
);}
5120 #line 5121 "src/parser.c"
5123 yych
= *(P
->mrk
= ++P
->cur
);
5187 case 'z': goto yy53
;
5188 case '\\': goto yy114
;
5189 default: goto yy345
;
5192 #line 349 "src/parser.re"
5193 {RETURN(PSI_T_STRLEN
);}
5194 #line 5195 "src/parser.c"
5197 yych
= *(P
->mrk
= ++P
->cur
);
5261 case 'z': goto yy53
;
5262 case '\\': goto yy114
;
5263 default: goto yy347
;
5266 #line 337 "src/parser.re"
5267 {RETURN(PSI_T_STRUCT
);}
5268 #line 5269 "src/parser.c"
5271 yych
= *(P
->mrk
= ++P
->cur
);
5335 case 'z': goto yy53
;
5336 case '\\': goto yy114
;
5337 default: goto yy349
;
5340 #line 350 "src/parser.re"
5341 {RETURN(PSI_T_STRVAL
);}
5342 #line 5343 "src/parser.c"
5345 yych
= *(P
->mrk
= ++P
->cur
);
5348 case 'a': goto yy379
;
5353 yych
= *(P
->mrk
= ++P
->cur
);
5356 case 'l': goto yy380
;
5361 yych
= *(P
->mrk
= ++P
->cur
);
5364 case 'a': goto yy382
;
5369 yych
= *(P
->mrk
= ++P
->cur
);
5433 case 'z': goto yy53
;
5434 case '\\': goto yy114
;
5435 default: goto yy354
;
5438 #line 363 "src/parser.re"
5439 {RETURN(PSI_T_TO_INT
);}
5440 #line 5441 "src/parser.c"
5443 yych
= *(P
->mrk
= ++P
->cur
);
5446 case 'e': goto yy383
;
5451 yych
= *(P
->mrk
= ++P
->cur
);
5454 case 'i': goto yy384
;
5459 yych
= *(P
->mrk
= ++P
->cur
);
5462 case 'f': goto yy385
;
5467 yych
= *(P
->mrk
= ++P
->cur
);
5469 case '_': goto yy387
;
5474 yych
= *(P
->mrk
= ++P
->cur
);
5476 case '_': goto yy388
;
5481 yych
= *(P
->mrk
= ++P
->cur
);
5483 case '_': goto yy389
;
5488 yych
= *(P
->mrk
= ++P
->cur
);
5491 case 't': goto yy390
;
5496 yych
= *(P
->mrk
= ++P
->cur
);
5499 case 'e': goto yy392
;
5504 yych
= *(P
->mrk
= ++P
->cur
);
5568 case 'z': goto yy53
;
5569 case '\\': goto yy114
;
5570 default: goto yy364
;
5573 #line 354 "src/parser.re"
5574 {RETURN(PSI_T_BOOLVAL
);}
5575 #line 5576 "src/parser.c"
5578 yych
= *(P
->mrk
= ++P
->cur
);
5581 case 'e': goto yy393
;
5586 yych
= *(P
->mrk
= ++P
->cur
);
5589 case 'k': goto yy395
;
5594 yych
= *(P
->mrk
= ++P
->cur
);
5597 case 'l': goto yy397
;
5602 yych
= *(P
->mrk
= ++P
->cur
);
5605 case 'n': goto yy399
;
5610 yych
= *(P
->mrk
= ++P
->cur
);
5674 case 'z': goto yy53
;
5675 case '\\': goto yy114
;
5676 default: goto yy370
;
5679 #line 322 "src/parser.re"
5680 {RETURN(PSI_T_INT16
);}
5681 #line 5682 "src/parser.c"
5684 yych
= *(P
->mrk
= ++P
->cur
);
5748 case 'z': goto yy53
;
5749 case '\\': goto yy114
;
5750 default: goto yy372
;
5753 #line 324 "src/parser.re"
5754 {RETURN(PSI_T_INT32
);}
5755 #line 5756 "src/parser.c"
5758 yych
= *(P
->mrk
= ++P
->cur
);
5822 case 'z': goto yy53
;
5823 case '\\': goto yy114
;
5824 default: goto yy374
;
5827 #line 326 "src/parser.re"
5828 {RETURN(PSI_T_INT64
);}
5829 #line 5830 "src/parser.c"
5832 yych
= *(P
->mrk
= ++P
->cur
);
5896 case 'z': goto yy53
;
5897 case '\\': goto yy114
;
5898 default: goto yy376
;
5901 #line 351 "src/parser.re"
5902 {RETURN(PSI_T_PATHVAL
);}
5903 #line 5904 "src/parser.c"
5906 yych
= *(P
->mrk
= ++P
->cur
);
5909 case 's': goto yy401
;
5914 yych
= *(P
->mrk
= ++P
->cur
);
5917 case 'e': goto yy402
;
5922 yych
= *(P
->mrk
= ++P
->cur
);
5925 case 'y': goto yy403
;
5930 yych
= *(P
->mrk
= ++P
->cur
);
5994 case 'z': goto yy53
;
5995 case '\\': goto yy114
;
5996 default: goto yy381
;
5999 #line 365 "src/parser.re"
6000 {RETURN(PSI_T_TO_BOOL
);}
6001 #line 6002 "src/parser.c"
6004 yych
= *(P
->mrk
= ++P
->cur
);
6007 case 't': goto yy405
;
6012 yych
= *(P
->mrk
= ++P
->cur
);
6015 case 'c': goto yy407
;
6020 yych
= *(P
->mrk
= ++P
->cur
);
6023 case 'n': goto yy408
;
6028 yych
= *(P
->mrk
= ++P
->cur
);
6092 case 'z': goto yy53
;
6093 case '\\': goto yy114
;
6094 default: goto yy386
;
6097 #line 336 "src/parser.re"
6098 {RETURN(PSI_T_TYPEDEF
);}
6099 #line 6100 "src/parser.c"
6102 yych
= *(P
->mrk
= ++P
->cur
);
6105 case 't': goto yy409
;
6110 yych
= *(P
->mrk
= ++P
->cur
);
6113 case 't': goto yy411
;
6118 yych
= *(P
->mrk
= ++P
->cur
);
6121 case 't': goto yy413
;
6126 yych
= *(P
->mrk
= ++P
->cur
);
6190 case 'z': goto yy53
;
6191 case '\\': goto yy114
;
6192 default: goto yy391
;
6195 #line 321 "src/parser.re"
6196 {RETURN(PSI_T_UINT8
);}
6197 #line 6198 "src/parser.c"
6200 yych
= *(P
->mrk
= ++P
->cur
);
6203 case 'd': goto yy415
;
6208 yych
= *(P
->mrk
= ++P
->cur
);
6272 case 'z': goto yy53
;
6273 case '\\': goto yy114
;
6274 default: goto yy394
;
6277 #line 311 "src/parser.re"
6278 {RETURN(PSI_T_CALLABLE
);}
6279 #line 6280 "src/parser.c"
6282 yych
= *(P
->mrk
= ++P
->cur
);
6346 case 'z': goto yy53
;
6347 case '\\': goto yy114
;
6348 default: goto yy396
;
6351 #line 333 "src/parser.re"
6352 {RETURN(PSI_T_CALLBACK
);}
6353 #line 6354 "src/parser.c"
6356 yych
= *(P
->mrk
= ++P
->cur
);
6420 case 'z': goto yy53
;
6421 case '\\': goto yy114
;
6422 default: goto yy398
;
6425 #line 353 "src/parser.re"
6426 {RETURN(PSI_T_FLOATVAL
);}
6427 #line 6428 "src/parser.c"
6430 yych
= *(P
->mrk
= ++P
->cur
);
6494 case 'z': goto yy53
;
6495 case '\\': goto yy114
;
6496 default: goto yy400
;
6499 #line 335 "src/parser.re"
6500 {RETURN(PSI_T_FUNCTION
);}
6501 #line 6502 "src/parser.c"
6504 yych
= *(P
->mrk
= ++P
->cur
);
6507 case 'e': goto yy417
;
6512 yych
= *(P
->mrk
= ++P
->cur
);
6515 case 'r': goto yy418
;
6520 yych
= *(P
->mrk
= ++P
->cur
);
6584 case 'z': goto yy53
;
6585 case '\\': goto yy114
;
6586 default: goto yy404
;
6589 #line 361 "src/parser.re"
6590 {RETURN(PSI_T_TO_ARRAY
);}
6591 #line 6592 "src/parser.c"
6594 yych
= *(P
->mrk
= ++P
->cur
);
6658 case 'z': goto yy53
;
6659 case '\\': goto yy114
;
6660 default: goto yy406
;
6663 #line 364 "src/parser.re"
6664 {RETURN(PSI_T_TO_FLOAT
);}
6665 #line 6666 "src/parser.c"
6668 yych
= *(P
->mrk
= ++P
->cur
);
6671 case 't': goto yy419
;
6676 yych
= *(P
->mrk
= ++P
->cur
);
6679 case 'g': goto yy421
;
6684 yych
= *(P
->mrk
= ++P
->cur
);
6748 case 'z': goto yy53
;
6749 case '\\': goto yy114
;
6750 default: goto yy410
;
6753 #line 323 "src/parser.re"
6754 {RETURN(PSI_T_UINT16
);}
6755 #line 6756 "src/parser.c"
6758 yych
= *(P
->mrk
= ++P
->cur
);
6822 case 'z': goto yy53
;
6823 case '\\': goto yy114
;
6824 default: goto yy412
;
6827 #line 325 "src/parser.re"
6828 {RETURN(PSI_T_UINT32
);}
6829 #line 6830 "src/parser.c"
6832 yych
= *(P
->mrk
= ++P
->cur
);
6896 case 'z': goto yy53
;
6897 case '\\': goto yy114
;
6898 default: goto yy414
;
6901 #line 327 "src/parser.re"
6902 {RETURN(PSI_T_UINT64
);}
6903 #line 6904 "src/parser.c"
6906 yych
= *(P
->mrk
= ++P
->cur
);
6970 case 'z': goto yy53
;
6971 case '\\': goto yy114
;
6972 default: goto yy416
;
6975 #line 328 "src/parser.re"
6976 {RETURN(PSI_T_UNSIGNED
);}
6977 #line 6978 "src/parser.c"
6980 yych
= *(P
->mrk
= ++P
->cur
);
6983 case 'r': goto yy423
;
6988 yych
= *(P
->mrk
= ++P
->cur
);
6991 case 't': goto yy424
;
6996 yych
= *(P
->mrk
= ++P
->cur
);
7060 case 'z': goto yy53
;
7061 case '\\': goto yy114
;
7062 default: goto yy420
;
7065 #line 360 "src/parser.re"
7066 {RETURN(PSI_T_TO_OBJECT
);}
7067 #line 7068 "src/parser.c"
7070 yych
= *(P
->mrk
= ++P
->cur
);
7134 case 'z': goto yy53
;
7135 case '\\': goto yy114
;
7136 default: goto yy422
;
7139 #line 362 "src/parser.re"
7140 {RETURN(PSI_T_TO_STRING
);}
7141 #line 7142 "src/parser.c"
7144 yych
= *(P
->mrk
= ++P
->cur
);
7147 case 't': goto yy426
;
7152 yych
= *(P
->mrk
= ++P
->cur
);
7216 case 'z': goto yy53
;
7217 case '\\': goto yy114
;
7218 default: goto yy425
;
7221 #line 344 "src/parser.re"
7222 {RETURN(PSI_T_PRE_ASSERT
);}
7223 #line 7224 "src/parser.c"
7226 yych
= *(P
->mrk
= ++P
->cur
);
7290 case 'z': goto yy53
;
7291 case '\\': goto yy114
;
7292 default: goto yy427
;
7295 #line 345 "src/parser.re"
7296 {RETURN(PSI_T_POST_ASSERT
);}
7297 #line 7298 "src/parser.c"
7299 #line 372 "src/parser.re"
7305 #line 7306 "src/parser.c"
7308 if ((P
->lim
- P
->cur
) < 2) { if (!psi_parser_fill(P
,2)) RETURN(PSI_T_EOF
); };
7311 case '\n': goto yy432
;
7312 case '*': goto yy434
;
7313 default: goto yy430
;
7318 #line 379 "src/parser.re"
7320 #line 7321 "src/parser.c"
7323 #line 377 "src/parser.re"
7324 { NEWLINE(comment
); }
7325 #line 7326 "src/parser.c"
7329 case '/': goto yy435
;
7330 default: goto yy431
;
7334 #line 378 "src/parser.re"
7336 #line 7337 "src/parser.c"
7338 #line 380 "src/parser.re"