1 /* Generated by re2c 0.16 on Mon Feb 20 20:39:25 2017 */
2 #line 1 "src/parser.re"
3 #include "php_psi_stdinc.h"
9 void *psi_parser_proc_init(void);
10 void psi_parser_proc_free(void **parser_proc
);
11 void psi_parser_proc_parse(void *parser_proc
, token_t r
, struct psi_token
*token
, struct psi_parser
*parser
);
12 void psi_parser_proc_trace(FILE *out
, char *prefix
);
14 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
17 P
= malloc(sizeof(*P
));
19 memset(P
, 0, sizeof(*P
));
21 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
25 P
->proc
= psi_parser_proc_init();
27 if (flags
& PSI_DEBUG
) {
28 psi_parser_proc_trace(stderr
, "PSI> ");
34 bool psi_parser_open_file(struct psi_parser
*P
, const char *filename
)
36 FILE *fp
= fopen(filename
, "r");
39 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
40 "Could not open '%s' for reading: %s",
41 filename
, strerror(errno
));
45 P
->input
.type
= PSI_PARSE_FILE
;
46 P
->input
.data
.file
.handle
= fp
;
53 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
54 "Could not stat '%s': %s",
55 filename
, strerror(errno
));
59 P
->input
.data
.file
.buffer
= mmap(NULL
, sb
.st_size
, PROT_READ
, MAP_SHARED
, fd
, 0);
60 if (MAP_FAILED
== P
->input
.data
.file
.buffer
) {
61 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
62 "Could not map '%s' for reading: %s",
63 filename
, strerror(errno
));
66 P
->input
.data
.file
.length
= sb
.st_size
;
68 P
->input
.data
.file
.buffer
= malloc(BSIZE
);
71 P
->file
.fn
= strdup(filename
);
76 bool psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
78 P
->input
.type
= PSI_PARSE_STRING
;
79 P
->input
.data
.string
.length
= length
;
80 if (!(P
->input
.data
.string
.buffer
= strndup(string
, length
))) {
84 P
->file
.fn
= strdup("<input>");
89 static ssize_t
psi_parser_fill(struct psi_parser
*P
, size_t n
)
91 PSI_DEBUG_PRINT(P
, "PSI< Fill: n=%zu (input.type=%d)\n", n
, P
->input
.type
);
95 switch (P
->input
.type
) {
97 P
->cur
= P
->tok
= P
->mrk
= P
->input
.data
.file
.buffer
;
99 P
->eof
= P
->input
.data
.file
.buffer
+ P
->input
.data
.file
.length
;
103 P
->lim
= P
->input
.data
.file
.buffer
;
107 case PSI_PARSE_STRING
:
108 P
->cur
= P
->tok
= P
->mrk
= P
->input
.data
.string
.buffer
;
109 P
->eof
= P
->input
.data
.string
.buffer
+ P
->input
.data
.string
.length
;
114 PSI_DEBUG_PRINT(P
, "PSI< Fill: cur=%p lim=%p eof=%p\n", P
->cur
, P
->lim
, P
->eof
);
117 switch (P
->input
.type
) {
118 case PSI_PARSE_STRING
:
124 size_t consumed
= P
->tok
- P
->buf
;
125 size_t reserved
= P
->lim
- P
->tok
;
126 size_t available
= BSIZE
- reserved
;
130 memmove(P
->buf
, P
->tok
, reserved
);
137 didread
= fread(P
->lim
, 1, available
, P
->fp
);
139 if (didread
< available
) {
142 PSI_DEBUG_PRINT(P
, "PSI< Fill: consumed=%zu reserved=%zu available=%zu didread=%zu\n",
143 consumed
, reserved
, available
, didread
);
149 PSI_DEBUG_PRINT(P
, "PSI< Fill: avail=%td\n", P
->lim
- P
->cur
);
151 return P
->lim
- P
->cur
;
154 void psi_parser_parse(struct psi_parser
*P
, struct psi_token
*T
)
157 psi_parser_proc_parse(P
->proc
, T
->type
, T
, P
);
159 psi_parser_proc_parse(P
->proc
, 0, NULL
, P
);
163 void psi_parser_dtor(struct psi_parser
*P
)
165 psi_parser_proc_free(&P
->proc
);
167 switch (P
->input
.type
) {
169 if (P
->input
.data
.file
.buffer
) {
171 munmap(P
->input
.data
.file
.buffer
, P
->input
.data
.file
.length
);
173 free(P
->input
.data
.file
.buffer
);
176 if (P
->input
.data
.file
.handle
) {
177 fclose(P
->input
.data
.file
.handle
);
181 case PSI_PARSE_STRING
:
182 if (P
->input
.data
.string
.buffer
) {
183 free(P
->input
.data
.string
.buffer
);
188 psi_data_dtor(PSI_DATA(P
));
190 memset(P
, 0, sizeof(*P
));
193 void psi_parser_free(struct psi_parser
**P
)
203 #if BSIZE < YYMAXFILL
204 # error BSIZE must be greater than YYMAXFILL
207 #define RETURN(t) do { \
209 PSI_DEBUG_PRINT(P, "PSI< TOKEN: %d %.*s (EOF=%d %s:%u:%u)\n", \
210 P->num, (int) (P->cur-P->tok), P->tok, P->num == PSI_T_EOF, \
211 P->file.fn, P->line, P->col); \
216 P->col += P->cur - P->tok
218 #define NEWLINE(label) \
223 token_t
psi_parser_scan(struct psi_parser
*P
)
226 psi_parser_fill(P
, 0);
233 #line 234 "src/parser.c"
236 unsigned int yyaccept
= 0;
237 if ((P
->lim
- P
->cur
) < 12) { if (!psi_parser_fill(P
,12)) RETURN(PSI_T_EOF
); };
327 case '\\': goto yy69
;
339 #line 346 "src/parser.re"
341 #line 342 "src/parser.c"
344 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
352 #line 281 "src/parser.re"
354 #line 355 "src/parser.c"
357 #line 280 "src/parser.re"
358 { NEWLINE(nextline
); }
359 #line 360 "src/parser.c"
362 switch ((yych
= *P
->cur
)) {
367 #line 265 "src/parser.re"
369 #line 370 "src/parser.c"
372 yych
= *(P
->mrk
= ++P
->cur
);
379 yych
= *(P
->mrk
= ++P
->cur
);
451 #line 266 "src/parser.re"
452 {RETURN(PSI_T_MODULO
);}
453 #line 454 "src/parser.c"
456 switch ((yych
= *P
->cur
)) {
461 #line 267 "src/parser.re"
462 {RETURN(PSI_T_AMPERSAND
);}
463 #line 464 "src/parser.c"
466 #line 249 "src/parser.re"
467 {RETURN(PSI_T_LPAREN
);}
468 #line 469 "src/parser.c"
471 #line 250 "src/parser.re"
472 {RETURN(PSI_T_RPAREN
);}
473 #line 474 "src/parser.c"
476 #line 263 "src/parser.re"
477 {RETURN(PSI_T_ASTERISK
);}
478 #line 479 "src/parser.c"
481 yych
= *(P
->mrk
= ++P
->cur
);
497 #line 268 "src/parser.re"
498 {RETURN(PSI_T_PLUS
);}
499 #line 500 "src/parser.c"
502 #line 252 "src/parser.re"
503 {RETURN(PSI_T_COMMA
);}
504 #line 505 "src/parser.c"
507 yych
= *(P
->mrk
= ++P
->cur
);
523 #line 269 "src/parser.re"
524 {RETURN(PSI_T_MINUS
);}
525 #line 526 "src/parser.c"
528 yych
= *(P
->mrk
= ++P
->cur
);
545 yych
= *(P
->mrk
= ++P
->cur
);
547 case '*': goto yy100
;
552 #line 270 "src/parser.re"
553 {RETURN(PSI_T_SLASH
);}
554 #line 555 "src/parser.c"
558 if ((P
->lim
- P
->cur
) < 3) { if (!psi_parser_fill(P
,3)) RETURN(PSI_T_EOF
); };
573 case 'e': goto yy102
;
577 #line 341 "src/parser.re"
578 {RETURN(PSI_T_NUMBER
);}
579 #line 580 "src/parser.c"
582 #line 253 "src/parser.re"
583 {RETURN(PSI_T_COLON
);}
584 #line 585 "src/parser.c"
587 #line 251 "src/parser.re"
589 #line 590 "src/parser.c"
592 switch ((yych
= *P
->cur
)) {
593 case '<': goto yy103
;
594 case '=': goto yy105
;
598 #line 277 "src/parser.re"
599 {RETURN(PSI_T_LCHEVR
);}
600 #line 601 "src/parser.c"
603 switch ((yych
= *P
->cur
)) {
604 case '=': goto yy107
;
608 #line 262 "src/parser.re"
609 {RETURN(PSI_T_EQUALS
);}
610 #line 611 "src/parser.c"
613 switch ((yych
= *P
->cur
)) {
614 case '=': goto yy109
;
615 case '>': goto yy111
;
619 #line 278 "src/parser.re"
620 {RETURN(PSI_T_RCHEVR
);}
621 #line 622 "src/parser.c"
624 yych
= *(P
->mrk
= ++P
->cur
);
627 case 'r': goto yy113
;
631 #line 342 "src/parser.re"
632 {RETURN(PSI_T_NAME
);}
633 #line 634 "src/parser.c"
636 yych
= *(P
->mrk
= ++P
->cur
);
639 case 'o': goto yy115
;
644 yych
= *(P
->mrk
= ++P
->cur
);
647 case 'a': goto yy116
;
649 case 'h': goto yy117
;
651 case 'o': goto yy118
;
656 yych
= *(P
->mrk
= ++P
->cur
);
659 case 'o': goto yy119
;
664 yych
= *(P
->mrk
= ++P
->cur
);
667 case 'n': goto yy120
;
672 yych
= *(P
->mrk
= ++P
->cur
);
675 case 'a': goto yy121
;
677 case 'l': goto yy122
;
679 case 'r': goto yy123
;
681 case 'u': goto yy124
;
687 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
754 case '\\': goto yy114
;
759 yych
= *(P
->mrk
= ++P
->cur
);
762 case 'n': goto yy125
;
767 yych
= *(P
->mrk
= ++P
->cur
);
770 case 'e': goto yy126
;
772 case 'i': goto yy127
;
774 case 'o': goto yy128
;
779 yych
= *(P
->mrk
= ++P
->cur
);
782 case 'i': goto yy129
;
787 yych
= *(P
->mrk
= ++P
->cur
);
790 case 'u': goto yy130
;
795 yych
= *(P
->mrk
= ++P
->cur
);
798 case 'b': goto yy131
;
803 yych
= *(P
->mrk
= ++P
->cur
);
806 case 'a': goto yy132
;
808 case 'o': goto yy133
;
810 case 'r': goto yy134
;
815 yych
= *(P
->mrk
= ++P
->cur
);
818 case 'e': goto yy135
;
823 yych
= *(P
->mrk
= ++P
->cur
);
826 case 'e': goto yy136
;
828 case 'h': goto yy137
;
830 case 'i': goto yy138
;
832 case 't': goto yy139
;
837 yych
= *(P
->mrk
= ++P
->cur
);
840 case 'e': goto yy140
;
842 case 'o': goto yy141
;
844 case 'r': goto yy142
;
846 case 'y': goto yy143
;
851 yych
= *(P
->mrk
= ++P
->cur
);
854 case 'i': goto yy144
;
856 case 'n': goto yy145
;
861 yych
= *(P
->mrk
= ++P
->cur
);
864 case 'o': goto yy146
;
869 yych
= *(P
->mrk
= ++P
->cur
);
872 case 'v': goto yy147
;
877 #line 256 "src/parser.re"
878 {RETURN(PSI_T_LBRACKET
);}
879 #line 880 "src/parser.c"
935 case 'z': goto yy148
;
940 #line 257 "src/parser.re"
941 {RETURN(PSI_T_RBRACKET
);}
942 #line 943 "src/parser.c"
945 #line 272 "src/parser.re"
946 {RETURN(PSI_T_CARET
);}
947 #line 948 "src/parser.c"
950 #line 254 "src/parser.re"
951 {RETURN(PSI_T_LBRACE
);}
952 #line 953 "src/parser.c"
955 switch ((yych
= *P
->cur
)) {
956 case '|': goto yy151
;
960 #line 271 "src/parser.re"
961 {RETURN(PSI_T_PIPE
);}
962 #line 963 "src/parser.c"
965 #line 255 "src/parser.re"
966 {RETURN(PSI_T_RBRACE
);}
967 #line 968 "src/parser.c"
970 #line 264 "src/parser.re"
971 {RETURN(PSI_T_TILDE
);}
972 #line 973 "src/parser.c"
975 #line 258 "src/parser.re"
976 {RETURN(PSI_T_CMP_NE
);}
977 #line 978 "src/parser.c"
980 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
983 case '"': goto yy153
;
988 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
992 case '\n': goto yy88
;
997 #line 248 "src/parser.re"
998 { NEWLINE(nextline
); }
999 #line 1000 "src/parser.c"
1002 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1067 case 'z': goto yy90
;
1071 #line 344 "src/parser.re"
1072 {RETURN(PSI_T_DOLLAR_NAME
);}
1073 #line 1074 "src/parser.c"
1076 #line 260 "src/parser.re"
1077 {RETURN(PSI_T_AND
);}
1078 #line 1079 "src/parser.c"
1091 case '9': goto yy98
;
1107 case 10: goto yy187
;
1108 case 11: goto yy204
;
1109 case 12: goto yy207
;
1110 case 13: goto yy212
;
1111 case 14: goto yy216
;
1112 case 15: goto yy224
;
1113 case 16: goto yy227
;
1114 case 17: goto yy242
;
1115 case 18: goto yy250
;
1116 case 19: goto yy256
;
1117 case 20: goto yy258
;
1118 case 21: goto yy260
;
1119 case 22: goto yy267
;
1120 case 23: goto yy269
;
1121 case 24: goto yy272
;
1122 case 25: goto yy274
;
1123 case 26: goto yy282
;
1124 case 27: goto yy290
;
1125 case 28: goto yy309
;
1126 case 29: goto yy312
;
1127 case 30: goto yy317
;
1128 case 31: goto yy319
;
1129 case 32: goto yy326
;
1130 case 33: goto yy328
;
1131 case 34: goto yy330
;
1132 case 35: goto yy332
;
1133 case 36: goto yy337
;
1134 case 37: goto yy339
;
1135 case 38: goto yy341
;
1136 case 39: goto yy343
;
1137 case 40: goto yy345
;
1138 case 41: goto yy347
;
1139 case 42: goto yy349
;
1140 case 43: goto yy354
;
1141 case 44: goto yy364
;
1142 case 45: goto yy370
;
1143 case 46: goto yy372
;
1144 case 47: goto yy374
;
1145 case 48: goto yy376
;
1146 case 49: goto yy381
;
1147 case 50: goto yy386
;
1148 case 51: goto yy391
;
1149 case 52: goto yy394
;
1150 case 53: goto yy396
;
1151 case 54: goto yy398
;
1152 case 55: goto yy400
;
1153 case 56: goto yy404
;
1154 case 57: goto yy406
;
1155 case 58: goto yy410
;
1156 case 59: goto yy412
;
1157 case 60: goto yy414
;
1158 case 61: goto yy416
;
1159 case 62: goto yy420
;
1160 case 63: goto yy422
;
1161 case 64: goto yy425
;
1162 default: goto yy427
;
1167 case '.': goto yy155
;
1173 if ((P
->lim
- P
->cur
) < 3) { if (!psi_parser_fill(P
,3)) RETURN(PSI_T_EOF
); };
1185 case '9': goto yy98
;
1187 case 'e': goto yy102
;
1192 #line 247 "src/parser.re"
1194 #line 1195 "src/parser.c"
1199 case '-': goto yy157
;
1209 case '9': goto yy158
;
1214 #line 273 "src/parser.re"
1215 {RETURN(PSI_T_LSHIFT
);}
1216 #line 1217 "src/parser.c"
1219 #line 275 "src/parser.re"
1220 {RETURN(PSI_T_CMP_LE
);}
1221 #line 1222 "src/parser.c"
1224 #line 259 "src/parser.re"
1225 {RETURN(PSI_T_CMP_EQ
);}
1226 #line 1227 "src/parser.c"
1229 #line 276 "src/parser.re"
1230 {RETURN(PSI_T_CMP_GE
);}
1231 #line 1232 "src/parser.c"
1234 #line 274 "src/parser.re"
1235 {RETURN(PSI_T_RSHIFT
);}
1236 #line 1237 "src/parser.c"
1239 yych
= *(P
->mrk
= ++P
->cur
);
1242 case 'r': goto yy160
;
1247 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1302 case 'z': goto yy148
;
1307 yych
= *(P
->mrk
= ++P
->cur
);
1310 case 'o': goto yy161
;
1315 yych
= *(P
->mrk
= ++P
->cur
);
1318 case 'l': goto yy162
;
1323 yych
= *(P
->mrk
= ++P
->cur
);
1326 case 'a': goto yy163
;
1331 yych
= *(P
->mrk
= ++P
->cur
);
1334 case 'n': goto yy164
;
1336 case 'u': goto yy165
;
1341 yych
= *(P
->mrk
= ++P
->cur
);
1344 case 'u': goto yy166
;
1349 yych
= *(P
->mrk
= ++P
->cur
);
1352 case 'u': goto yy167
;
1357 yych
= *(P
->mrk
= ++P
->cur
);
1360 case 'l': goto yy168
;
1365 yych
= *(P
->mrk
= ++P
->cur
);
1368 case 'o': goto yy169
;
1373 yych
= *(P
->mrk
= ++P
->cur
);
1376 case 'e': goto yy170
;
1381 yych
= *(P
->mrk
= ++P
->cur
);
1384 case 'n': goto yy171
;
1389 yych
= *(P
->mrk
= ++P
->cur
);
1392 case 't': goto yy172
;
1397 yych
= *(P
->mrk
= ++P
->cur
);
1400 case 't': goto yy174
;
1405 yych
= *(P
->mrk
= ++P
->cur
);
1408 case 'b': goto yy176
;
1413 yych
= *(P
->mrk
= ++P
->cur
);
1416 case 'n': goto yy178
;
1421 yych
= *(P
->mrk
= ++P
->cur
);
1424 case 'x': goto yy179
;
1429 yych
= *(P
->mrk
= ++P
->cur
);
1432 case 'l': goto yy180
;
1437 yych
= *(P
->mrk
= ++P
->cur
);
1440 case 'j': goto yy181
;
1445 yych
= *(P
->mrk
= ++P
->cur
);
1448 case 't': goto yy182
;
1453 yych
= *(P
->mrk
= ++P
->cur
);
1456 case 's': goto yy183
;
1461 yych
= *(P
->mrk
= ++P
->cur
);
1464 case 'e': goto yy184
;
1469 yych
= *(P
->mrk
= ++P
->cur
);
1472 case 't': goto yy185
;
1477 yych
= *(P
->mrk
= ++P
->cur
);
1480 case 't': goto yy186
;
1485 yych
= *(P
->mrk
= ++P
->cur
);
1488 case 'o': goto yy188
;
1493 yych
= *(P
->mrk
= ++P
->cur
);
1496 case 'g': goto yy189
;
1501 yych
= *(P
->mrk
= ++P
->cur
);
1504 case 'a': goto yy190
;
1506 case 'r': goto yy191
;
1511 yych
= *(P
->mrk
= ++P
->cur
);
1514 case 'm': goto yy192
;
1519 yych
= *(P
->mrk
= ++P
->cur
);
1521 case '_': goto yy193
;
1526 yych
= *(P
->mrk
= ++P
->cur
);
1529 case 'u': goto yy194
;
1534 yych
= *(P
->mrk
= ++P
->cur
);
1537 case 'p': goto yy195
;
1542 yych
= *(P
->mrk
= ++P
->cur
);
1545 case 'n': goto yy196
;
1550 yych
= *(P
->mrk
= ++P
->cur
);
1553 case 'i': goto yy197
;
1555 case 's': goto yy198
;
1560 yych
= *(P
->mrk
= ++P
->cur
);
1563 case 'i': goto yy199
;
1568 yych
= *(P
->mrk
= ++P
->cur
);
1571 case 'a': goto yy200
;
1577 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1642 case 'z': goto yy148
;
1643 case '\\': goto yy114
;
1644 default: goto yy150
;
1647 #line 343 "src/parser.re"
1648 {RETURN(PSI_T_NSNAME
);}
1649 #line 1650 "src/parser.c"
1652 #line 261 "src/parser.re"
1654 #line 1655 "src/parser.c"
1657 #line 345 "src/parser.re"
1658 {RETURN(PSI_T_QUOTED_STRING
);}
1659 #line 1660 "src/parser.c"
1662 #line 279 "src/parser.re"
1663 {RETURN(PSI_T_ELLIPSIS
);}
1664 #line 1665 "src/parser.c"
1677 case '9': goto yy158
;
1682 if (P
->lim
<= P
->cur
) { if (!psi_parser_fill(P
,1)) RETURN(PSI_T_EOF
); };
1694 case '9': goto yy158
;
1699 yych
= *(P
->mrk
= ++P
->cur
);
1702 case 'a': goto yy201
;
1704 case 'v': goto yy202
;
1709 yych
= *(P
->mrk
= ++P
->cur
);
1712 case 'l': goto yy203
;
1717 yych
= *(P
->mrk
= ++P
->cur
);
1720 case 'l': goto yy205
;
1725 yych
= *(P
->mrk
= ++P
->cur
);
1728 case 'r': goto yy206
;
1733 yych
= *(P
->mrk
= ++P
->cur
);
1736 case 's': goto yy208
;
1741 yych
= *(P
->mrk
= ++P
->cur
);
1744 case 'n': goto yy209
;
1749 yych
= *(P
->mrk
= ++P
->cur
);
1752 case 'b': goto yy210
;
1757 yych
= *(P
->mrk
= ++P
->cur
);
1760 case 'm': goto yy211
;
1765 yych
= *(P
->mrk
= ++P
->cur
);
1768 case 's': goto yy213
;
1773 yych
= *(P
->mrk
= ++P
->cur
);
1776 case 'a': goto yy214
;
1781 yych
= *(P
->mrk
= ++P
->cur
);
1784 case 'e': goto yy215
;
1789 yych
= *(P
->mrk
= ++P
->cur
);
1792 case 'c': goto yy217
;
1797 yych
= *(P
->mrk
= ++P
->cur
);
1855 case 'z': goto yy53
;
1856 case '1': goto yy218
;
1857 case '3': goto yy219
;
1858 case '6': goto yy220
;
1859 case '8': goto yy221
;
1861 case 'v': goto yy222
;
1862 case '\\': goto yy114
;
1863 default: goto yy173
;
1866 #line 291 "src/parser.re"
1867 {RETURN(PSI_T_INT
);}
1868 #line 1869 "src/parser.c"
1871 yych
= *(P
->mrk
= ++P
->cur
);
1935 case 'z': goto yy53
;
1936 case '\\': goto yy114
;
1937 default: goto yy175
;
1940 #line 317 "src/parser.re"
1941 {RETURN(PSI_T_LET
);}
1942 #line 1943 "src/parser.c"
1945 yych
= *(P
->mrk
= ++P
->cur
);
2009 case 'z': goto yy53
;
2010 case '\\': goto yy114
;
2011 default: goto yy177
;
2014 #line 316 "src/parser.re"
2015 {RETURN(PSI_T_LIB
);}
2016 #line 2017 "src/parser.c"
2019 yych
= *(P
->mrk
= ++P
->cur
);
2022 case 'g': goto yy223
;
2027 yych
= *(P
->mrk
= ++P
->cur
);
2030 case 'e': goto yy225
;
2035 yych
= *(P
->mrk
= ++P
->cur
);
2038 case 'l': goto yy226
;
2043 yych
= *(P
->mrk
= ++P
->cur
);
2046 case 'e': goto yy228
;
2048 case 'v': goto yy229
;
2053 yych
= *(P
->mrk
= ++P
->cur
);
2056 case 'h': goto yy230
;
2061 yych
= *(P
->mrk
= ++P
->cur
);
2064 case 't': goto yy231
;
2069 yych
= *(P
->mrk
= ++P
->cur
);
2071 case '_': goto yy232
;
2076 yych
= *(P
->mrk
= ++P
->cur
);
2079 case 'u': goto yy233
;
2084 yych
= *(P
->mrk
= ++P
->cur
);
2148 case 'z': goto yy53
;
2149 case '\\': goto yy114
;
2150 default: goto yy187
;
2153 #line 318 "src/parser.re"
2154 {RETURN(PSI_T_SET
);}
2155 #line 2156 "src/parser.c"
2158 yych
= *(P
->mrk
= ++P
->cur
);
2161 case 'r': goto yy234
;
2166 yych
= *(P
->mrk
= ++P
->cur
);
2169 case 'n': goto yy235
;
2174 yych
= *(P
->mrk
= ++P
->cur
);
2177 case 't': goto yy236
;
2182 yych
= *(P
->mrk
= ++P
->cur
);
2185 case 'i': goto yy237
;
2187 case 'l': goto yy238
;
2189 case 'u': goto yy239
;
2191 case 'v': goto yy240
;
2196 yych
= *(P
->mrk
= ++P
->cur
);
2199 case 'p': goto yy241
;
2204 yych
= *(P
->mrk
= ++P
->cur
);
2207 case 'a': goto yy243
;
2209 case 'b': goto yy244
;
2211 case 'f': goto yy245
;
2213 case 'i': goto yy246
;
2215 case 'o': goto yy247
;
2217 case 's': goto yy248
;
2222 yych
= *(P
->mrk
= ++P
->cur
);
2225 case 'e': goto yy249
;
2230 yych
= *(P
->mrk
= ++P
->cur
);
2233 case 'e': goto yy251
;
2238 yych
= *(P
->mrk
= ++P
->cur
);
2241 case 't': goto yy252
;
2246 yych
= *(P
->mrk
= ++P
->cur
);
2249 case 'o': goto yy253
;
2254 yych
= *(P
->mrk
= ++P
->cur
);
2257 case 'i': goto yy254
;
2262 yych
= *(P
->mrk
= ++P
->cur
);
2265 case 'd': goto yy255
;
2270 yych
= *(P
->mrk
= ++P
->cur
);
2273 case 'l': goto yy257
;
2278 yych
= *(P
->mrk
= ++P
->cur
);
2281 case 'y': goto yy259
;
2286 yych
= *(P
->mrk
= ++P
->cur
);
2289 case 'a': goto yy261
;
2294 yych
= *(P
->mrk
= ++P
->cur
);
2356 case 'z': goto yy53
;
2358 case 'v': goto yy262
;
2359 case '\\': goto yy114
;
2360 default: goto yy204
;
2363 #line 288 "src/parser.re"
2364 {RETURN(PSI_T_BOOL
);}
2365 #line 2366 "src/parser.c"
2368 yych
= *(P
->mrk
= ++P
->cur
);
2371 case 'a': goto yy263
;
2373 case 'b': goto yy264
;
2375 case 'o': goto yy265
;
2380 yych
= *(P
->mrk
= ++P
->cur
);
2444 case 'z': goto yy53
;
2445 case '\\': goto yy114
;
2446 default: goto yy207
;
2449 #line 289 "src/parser.re"
2450 {RETURN(PSI_T_CHAR
);}
2451 #line 2452 "src/parser.c"
2454 yych
= *(P
->mrk
= ++P
->cur
);
2457 case 't': goto yy266
;
2462 yych
= *(P
->mrk
= ++P
->cur
);
2465 case 't': goto yy268
;
2470 yych
= *(P
->mrk
= ++P
->cur
);
2473 case 'l': goto yy270
;
2478 yych
= *(P
->mrk
= ++P
->cur
);
2542 case 'z': goto yy53
;
2543 case '\\': goto yy114
;
2544 default: goto yy212
;
2547 #line 314 "src/parser.re"
2548 {RETURN(PSI_T_ENUM
);}
2549 #line 2550 "src/parser.c"
2552 yych
= *(P
->mrk
= ++P
->cur
);
2555 case 'e': goto yy271
;
2560 yych
= *(P
->mrk
= ++P
->cur
);
2563 case 't': goto yy273
;
2568 yych
= *(P
->mrk
= ++P
->cur
);
2632 case 'z': goto yy53
;
2633 case '\\': goto yy114
;
2634 default: goto yy216
;
2637 #line 322 "src/parser.re"
2638 {RETURN(PSI_T_FREE
);}
2639 #line 2640 "src/parser.c"
2642 yych
= *(P
->mrk
= ++P
->cur
);
2645 case 't': goto yy275
;
2650 yych
= *(P
->mrk
= ++P
->cur
);
2652 case '6': goto yy276
;
2657 yych
= *(P
->mrk
= ++P
->cur
);
2659 case '2': goto yy277
;
2664 yych
= *(P
->mrk
= ++P
->cur
);
2666 case '4': goto yy278
;
2671 yych
= *(P
->mrk
= ++P
->cur
);
2673 case '_': goto yy279
;
2678 yych
= *(P
->mrk
= ++P
->cur
);
2681 case 'a': goto yy280
;
2686 yych
= *(P
->mrk
= ++P
->cur
);
2750 case 'z': goto yy53
;
2751 case '\\': goto yy114
;
2752 default: goto yy224
;
2755 #line 292 "src/parser.re"
2756 {RETURN(PSI_T_LONG
);}
2757 #line 2758 "src/parser.c"
2760 yych
= *(P
->mrk
= ++P
->cur
);
2763 case 'd': goto yy281
;
2768 yych
= *(P
->mrk
= ++P
->cur
);
2832 case 'z': goto yy53
;
2833 case '\\': goto yy114
;
2834 default: goto yy227
;
2837 #line 284 "src/parser.re"
2838 {RETURN(PSI_T_NULL
);}
2839 #line 2840 "src/parser.c"
2842 yych
= *(P
->mrk
= ++P
->cur
);
2845 case 'c': goto yy283
;
2850 yych
= *(P
->mrk
= ++P
->cur
);
2853 case 'a': goto yy284
;
2858 yych
= *(P
->mrk
= ++P
->cur
);
2861 case 'v': goto yy285
;
2866 yych
= *(P
->mrk
= ++P
->cur
);
2868 case '_': goto yy286
;
2873 yych
= *(P
->mrk
= ++P
->cur
);
2876 case 'a': goto yy287
;
2881 yych
= *(P
->mrk
= ++P
->cur
);
2884 case 'r': goto yy288
;
2889 yych
= *(P
->mrk
= ++P
->cur
);
2892 case 't': goto yy289
;
2897 yych
= *(P
->mrk
= ++P
->cur
);
2900 case 'e': goto yy291
;
2905 yych
= *(P
->mrk
= ++P
->cur
);
2908 case 'i': goto yy292
;
2913 yych
= *(P
->mrk
= ++P
->cur
);
2916 case 'n': goto yy293
;
2921 yych
= *(P
->mrk
= ++P
->cur
);
2924 case 'e': goto yy294
;
2929 yych
= *(P
->mrk
= ++P
->cur
);
2932 case 'c': goto yy295
;
2937 yych
= *(P
->mrk
= ++P
->cur
);
2940 case 'a': goto yy296
;
2945 yych
= *(P
->mrk
= ++P
->cur
);
3009 case 'z': goto yy53
;
3010 case '\\': goto yy114
;
3011 default: goto yy242
;
3014 #line 323 "src/parser.re"
3015 {RETURN(PSI_T_TEMP
);}
3016 #line 3017 "src/parser.c"
3019 yych
= *(P
->mrk
= ++P
->cur
);
3022 case 'r': goto yy297
;
3027 yych
= *(P
->mrk
= ++P
->cur
);
3030 case 'o': goto yy298
;
3035 yych
= *(P
->mrk
= ++P
->cur
);
3038 case 'l': goto yy299
;
3043 yych
= *(P
->mrk
= ++P
->cur
);
3046 case 'n': goto yy300
;
3051 yych
= *(P
->mrk
= ++P
->cur
);
3054 case 'b': goto yy301
;
3059 yych
= *(P
->mrk
= ++P
->cur
);
3062 case 't': goto yy302
;
3067 yych
= *(P
->mrk
= ++P
->cur
);
3131 case 'z': goto yy53
;
3132 case '\\': goto yy114
;
3133 default: goto yy250
;
3136 #line 282 "src/parser.re"
3137 {RETURN(PSI_T_TRUE
);}
3138 #line 3139 "src/parser.c"
3141 yych
= *(P
->mrk
= ++P
->cur
);
3144 case 'd': goto yy303
;
3149 yych
= *(P
->mrk
= ++P
->cur
);
3151 case '1': goto yy304
;
3152 case '3': goto yy305
;
3153 case '6': goto yy306
;
3154 case '8': goto yy307
;
3159 yych
= *(P
->mrk
= ++P
->cur
);
3162 case 'n': goto yy308
;
3167 yych
= *(P
->mrk
= ++P
->cur
);
3170 case 'g': goto yy310
;
3175 yych
= *(P
->mrk
= ++P
->cur
);
3239 case 'z': goto yy53
;
3240 case '\\': goto yy114
;
3241 default: goto yy256
;
3244 #line 287 "src/parser.re"
3245 {RETURN(PSI_T_VOID
);}
3246 #line 3247 "src/parser.c"
3249 yych
= *(P
->mrk
= ++P
->cur
);
3313 case 'z': goto yy53
;
3314 case '\\': goto yy114
;
3315 default: goto yy258
;
3318 #line 332 "src/parser.re"
3319 {RETURN(PSI_T_ZVAL
);}
3320 #line 3321 "src/parser.c"
3323 yych
= *(P
->mrk
= ++P
->cur
);
3387 case 'z': goto yy53
;
3388 case '\\': goto yy114
;
3389 default: goto yy260
;
3392 #line 306 "src/parser.re"
3393 {RETURN(PSI_T_ARRAY
);}
3394 #line 3395 "src/parser.c"
3397 yych
= *(P
->mrk
= ++P
->cur
);
3400 case 'l': goto yy311
;
3405 yych
= *(P
->mrk
= ++P
->cur
);
3408 case 'a': goto yy313
;
3413 yych
= *(P
->mrk
= ++P
->cur
);
3416 case 'b': goto yy314
;
3421 yych
= *(P
->mrk
= ++P
->cur
);
3424 case 'a': goto yy315
;
3429 yych
= *(P
->mrk
= ++P
->cur
);
3432 case 'c': goto yy316
;
3437 yych
= *(P
->mrk
= ++P
->cur
);
3501 case 'z': goto yy53
;
3502 case '\\': goto yy114
;
3503 default: goto yy267
;
3506 #line 315 "src/parser.re"
3507 {RETURN(PSI_T_CONST
);}
3508 #line 3509 "src/parser.c"
3511 yych
= *(P
->mrk
= ++P
->cur
);
3575 case 'z': goto yy53
;
3576 case '\\': goto yy114
;
3577 default: goto yy269
;
3580 #line 333 "src/parser.re"
3581 {RETURN(PSI_T_COUNT
);}
3582 #line 3583 "src/parser.c"
3585 yych
= *(P
->mrk
= ++P
->cur
);
3588 case 'e': goto yy318
;
3593 yych
= *(P
->mrk
= ++P
->cur
);
3657 case 'z': goto yy53
;
3658 case '\\': goto yy114
;
3659 default: goto yy272
;
3662 #line 283 "src/parser.re"
3663 {RETURN(PSI_T_FALSE
);}
3664 #line 3665 "src/parser.c"
3667 yych
= *(P
->mrk
= ++P
->cur
);
3729 case 'z': goto yy53
;
3731 case 'v': goto yy320
;
3732 case '\\': goto yy114
;
3733 default: goto yy274
;
3736 #line 293 "src/parser.re"
3737 {RETURN(PSI_T_FLOAT
);}
3738 #line 3739 "src/parser.c"
3741 yych
= *(P
->mrk
= ++P
->cur
);
3744 case 'i': goto yy321
;
3749 yych
= *(P
->mrk
= ++P
->cur
);
3751 case '_': goto yy322
;
3756 yych
= *(P
->mrk
= ++P
->cur
);
3758 case '_': goto yy323
;
3763 yych
= *(P
->mrk
= ++P
->cur
);
3765 case '_': goto yy324
;
3770 yych
= *(P
->mrk
= ++P
->cur
);
3773 case 't': goto yy325
;
3778 yych
= *(P
->mrk
= ++P
->cur
);
3781 case 'l': goto yy327
;
3786 yych
= *(P
->mrk
= ++P
->cur
);
3850 case 'z': goto yy53
;
3851 case '\\': goto yy114
;
3852 default: goto yy282
;
3855 #line 285 "src/parser.re"
3856 {RETURN(PSI_T_MIXED
);}
3857 #line 3858 "src/parser.c"
3860 yych
= *(P
->mrk
= ++P
->cur
);
3863 case 't': goto yy329
;
3868 yych
= *(P
->mrk
= ++P
->cur
);
3871 case 'l': goto yy331
;
3876 yych
= *(P
->mrk
= ++P
->cur
);
3879 case 'a': goto yy333
;
3884 yych
= *(P
->mrk
= ++P
->cur
);
3887 case 'a': goto yy334
;
3892 yych
= *(P
->mrk
= ++P
->cur
);
3895 case 's': goto yy335
;
3900 yych
= *(P
->mrk
= ++P
->cur
);
3903 case 'n': goto yy336
;
3908 yych
= *(P
->mrk
= ++P
->cur
);
3972 case 'z': goto yy53
;
3973 case '\\': goto yy114
;
3974 default: goto yy290
;
3977 #line 290 "src/parser.re"
3978 {RETURN(PSI_T_SHORT
);}
3979 #line 3980 "src/parser.c"
3982 yych
= *(P
->mrk
= ++P
->cur
);
3985 case 'd': goto yy338
;
3990 yych
= *(P
->mrk
= ++P
->cur
);
3993 case 'c': goto yy340
;
3998 yych
= *(P
->mrk
= ++P
->cur
);
4001 case 'g': goto yy342
;
4006 yych
= *(P
->mrk
= ++P
->cur
);
4009 case 'n': goto yy344
;
4014 yych
= *(P
->mrk
= ++P
->cur
);
4017 case 't': goto yy346
;
4022 yych
= *(P
->mrk
= ++P
->cur
);
4025 case 'l': goto yy348
;
4030 yych
= *(P
->mrk
= ++P
->cur
);
4033 case 'r': goto yy350
;
4038 yych
= *(P
->mrk
= ++P
->cur
);
4041 case 'o': goto yy351
;
4046 yych
= *(P
->mrk
= ++P
->cur
);
4049 case 'o': goto yy352
;
4054 yych
= *(P
->mrk
= ++P
->cur
);
4057 case 't': goto yy353
;
4062 yych
= *(P
->mrk
= ++P
->cur
);
4065 case 'j': goto yy355
;
4070 yych
= *(P
->mrk
= ++P
->cur
);
4073 case 'r': goto yy356
;
4078 yych
= *(P
->mrk
= ++P
->cur
);
4081 case 'e': goto yy357
;
4086 yych
= *(P
->mrk
= ++P
->cur
);
4088 case '6': goto yy358
;
4093 yych
= *(P
->mrk
= ++P
->cur
);
4095 case '2': goto yy359
;
4100 yych
= *(P
->mrk
= ++P
->cur
);
4102 case '4': goto yy360
;
4107 yych
= *(P
->mrk
= ++P
->cur
);
4109 case '_': goto yy361
;
4114 yych
= *(P
->mrk
= ++P
->cur
);
4178 case 'z': goto yy53
;
4179 case '\\': goto yy114
;
4180 default: goto yy309
;
4183 #line 313 "src/parser.re"
4184 {RETURN(PSI_T_UNION
);}
4185 #line 4186 "src/parser.c"
4188 yych
= *(P
->mrk
= ++P
->cur
);
4191 case 'n': goto yy362
;
4196 yych
= *(P
->mrk
= ++P
->cur
);
4260 case 'z': goto yy53
;
4261 case '\\': goto yy114
;
4262 default: goto yy312
;
4265 #line 330 "src/parser.re"
4266 {RETURN(PSI_T_ARRVAL
);}
4267 #line 4268 "src/parser.c"
4270 yych
= *(P
->mrk
= ++P
->cur
);
4273 case 'l': goto yy363
;
4278 yych
= *(P
->mrk
= ++P
->cur
);
4281 case 'l': goto yy365
;
4286 yych
= *(P
->mrk
= ++P
->cur
);
4289 case 'c': goto yy366
;
4294 yych
= *(P
->mrk
= ++P
->cur
);
4358 case 'z': goto yy53
;
4359 case '\\': goto yy114
;
4360 default: goto yy317
;
4363 #line 334 "src/parser.re"
4364 {RETURN(PSI_T_CALLOC
);}
4365 #line 4366 "src/parser.c"
4368 yych
= *(P
->mrk
= ++P
->cur
);
4432 case 'z': goto yy53
;
4433 case '\\': goto yy114
;
4434 default: goto yy319
;
4437 #line 294 "src/parser.re"
4438 {RETURN(PSI_T_DOUBLE
);}
4439 #line 4440 "src/parser.c"
4442 yych
= *(P
->mrk
= ++P
->cur
);
4445 case 'a': goto yy367
;
4450 yych
= *(P
->mrk
= ++P
->cur
);
4453 case 'o': goto yy368
;
4458 yych
= *(P
->mrk
= ++P
->cur
);
4461 case 't': goto yy369
;
4466 yych
= *(P
->mrk
= ++P
->cur
);
4469 case 't': goto yy371
;
4474 yych
= *(P
->mrk
= ++P
->cur
);
4477 case 't': goto yy373
;
4482 yych
= *(P
->mrk
= ++P
->cur
);
4546 case 'z': goto yy53
;
4547 case '\\': goto yy114
;
4548 default: goto yy326
;
4551 #line 295 "src/parser.re"
4552 {RETURN(PSI_T_INT8
);}
4553 #line 4554 "src/parser.c"
4556 yych
= *(P
->mrk
= ++P
->cur
);
4620 case 'z': goto yy53
;
4621 case '\\': goto yy114
;
4622 default: goto yy328
;
4625 #line 327 "src/parser.re"
4626 {RETURN(PSI_T_INTVAL
);}
4627 #line 4628 "src/parser.c"
4630 yych
= *(P
->mrk
= ++P
->cur
);
4694 case 'z': goto yy53
;
4695 case '\\': goto yy114
;
4696 default: goto yy330
;
4699 #line 307 "src/parser.re"
4700 {RETURN(PSI_T_OBJECT
);}
4701 #line 4702 "src/parser.c"
4704 yych
= *(P
->mrk
= ++P
->cur
);
4768 case 'z': goto yy53
;
4769 case '\\': goto yy114
;
4770 default: goto yy332
;
4773 #line 331 "src/parser.re"
4774 {RETURN(PSI_T_OBJVAL
);}
4775 #line 4776 "src/parser.c"
4778 yych
= *(P
->mrk
= ++P
->cur
);
4781 case 'l': goto yy375
;
4786 yych
= *(P
->mrk
= ++P
->cur
);
4789 case 's': goto yy377
;
4794 yych
= *(P
->mrk
= ++P
->cur
);
4797 case 's': goto yy378
;
4802 yych
= *(P
->mrk
= ++P
->cur
);
4866 case 'z': goto yy53
;
4867 case '\\': goto yy114
;
4868 default: goto yy337
;
4871 #line 321 "src/parser.re"
4872 {RETURN(PSI_T_RETURN
);}
4873 #line 4874 "src/parser.c"
4876 yych
= *(P
->mrk
= ++P
->cur
);
4940 case 'z': goto yy53
;
4941 case '\\': goto yy114
;
4942 default: goto yy339
;
4945 #line 304 "src/parser.re"
4946 {RETURN(PSI_T_SIGNED
);}
4947 #line 4948 "src/parser.c"
4950 yych
= *(P
->mrk
= ++P
->cur
);
5014 case 'z': goto yy53
;
5015 case '\\': goto yy114
;
5016 default: goto yy341
;
5019 #line 309 "src/parser.re"
5020 {RETURN(PSI_T_STATIC
);}
5021 #line 5022 "src/parser.c"
5024 yych
= *(P
->mrk
= ++P
->cur
);
5088 case 'z': goto yy53
;
5089 case '\\': goto yy114
;
5090 default: goto yy343
;
5093 #line 305 "src/parser.re"
5094 {RETURN(PSI_T_STRING
);}
5095 #line 5096 "src/parser.c"
5098 yych
= *(P
->mrk
= ++P
->cur
);
5162 case 'z': goto yy53
;
5163 case '\\': goto yy114
;
5164 default: goto yy345
;
5167 #line 324 "src/parser.re"
5168 {RETURN(PSI_T_STRLEN
);}
5169 #line 5170 "src/parser.c"
5172 yych
= *(P
->mrk
= ++P
->cur
);
5236 case 'z': goto yy53
;
5237 case '\\': goto yy114
;
5238 default: goto yy347
;
5241 #line 312 "src/parser.re"
5242 {RETURN(PSI_T_STRUCT
);}
5243 #line 5244 "src/parser.c"
5246 yych
= *(P
->mrk
= ++P
->cur
);
5310 case 'z': goto yy53
;
5311 case '\\': goto yy114
;
5312 default: goto yy349
;
5315 #line 325 "src/parser.re"
5316 {RETURN(PSI_T_STRVAL
);}
5317 #line 5318 "src/parser.c"
5320 yych
= *(P
->mrk
= ++P
->cur
);
5323 case 'a': goto yy379
;
5328 yych
= *(P
->mrk
= ++P
->cur
);
5331 case 'l': goto yy380
;
5336 yych
= *(P
->mrk
= ++P
->cur
);
5339 case 'a': goto yy382
;
5344 yych
= *(P
->mrk
= ++P
->cur
);
5408 case 'z': goto yy53
;
5409 case '\\': goto yy114
;
5410 default: goto yy354
;
5413 #line 338 "src/parser.re"
5414 {RETURN(PSI_T_TO_INT
);}
5415 #line 5416 "src/parser.c"
5418 yych
= *(P
->mrk
= ++P
->cur
);
5421 case 'e': goto yy383
;
5426 yych
= *(P
->mrk
= ++P
->cur
);
5429 case 'i': goto yy384
;
5434 yych
= *(P
->mrk
= ++P
->cur
);
5437 case 'f': goto yy385
;
5442 yych
= *(P
->mrk
= ++P
->cur
);
5444 case '_': goto yy387
;
5449 yych
= *(P
->mrk
= ++P
->cur
);
5451 case '_': goto yy388
;
5456 yych
= *(P
->mrk
= ++P
->cur
);
5458 case '_': goto yy389
;
5463 yych
= *(P
->mrk
= ++P
->cur
);
5466 case 't': goto yy390
;
5471 yych
= *(P
->mrk
= ++P
->cur
);
5474 case 'e': goto yy392
;
5479 yych
= *(P
->mrk
= ++P
->cur
);
5543 case 'z': goto yy53
;
5544 case '\\': goto yy114
;
5545 default: goto yy364
;
5548 #line 329 "src/parser.re"
5549 {RETURN(PSI_T_BOOLVAL
);}
5550 #line 5551 "src/parser.c"
5553 yych
= *(P
->mrk
= ++P
->cur
);
5556 case 'e': goto yy393
;
5561 yych
= *(P
->mrk
= ++P
->cur
);
5564 case 'k': goto yy395
;
5569 yych
= *(P
->mrk
= ++P
->cur
);
5572 case 'l': goto yy397
;
5577 yych
= *(P
->mrk
= ++P
->cur
);
5580 case 'n': goto yy399
;
5585 yych
= *(P
->mrk
= ++P
->cur
);
5649 case 'z': goto yy53
;
5650 case '\\': goto yy114
;
5651 default: goto yy370
;
5654 #line 297 "src/parser.re"
5655 {RETURN(PSI_T_INT16
);}
5656 #line 5657 "src/parser.c"
5659 yych
= *(P
->mrk
= ++P
->cur
);
5723 case 'z': goto yy53
;
5724 case '\\': goto yy114
;
5725 default: goto yy372
;
5728 #line 299 "src/parser.re"
5729 {RETURN(PSI_T_INT32
);}
5730 #line 5731 "src/parser.c"
5733 yych
= *(P
->mrk
= ++P
->cur
);
5797 case 'z': goto yy53
;
5798 case '\\': goto yy114
;
5799 default: goto yy374
;
5802 #line 301 "src/parser.re"
5803 {RETURN(PSI_T_INT64
);}
5804 #line 5805 "src/parser.c"
5807 yych
= *(P
->mrk
= ++P
->cur
);
5871 case 'z': goto yy53
;
5872 case '\\': goto yy114
;
5873 default: goto yy376
;
5876 #line 326 "src/parser.re"
5877 {RETURN(PSI_T_PATHVAL
);}
5878 #line 5879 "src/parser.c"
5881 yych
= *(P
->mrk
= ++P
->cur
);
5884 case 's': goto yy401
;
5889 yych
= *(P
->mrk
= ++P
->cur
);
5892 case 'e': goto yy402
;
5897 yych
= *(P
->mrk
= ++P
->cur
);
5900 case 'y': goto yy403
;
5905 yych
= *(P
->mrk
= ++P
->cur
);
5969 case 'z': goto yy53
;
5970 case '\\': goto yy114
;
5971 default: goto yy381
;
5974 #line 340 "src/parser.re"
5975 {RETURN(PSI_T_TO_BOOL
);}
5976 #line 5977 "src/parser.c"
5979 yych
= *(P
->mrk
= ++P
->cur
);
5982 case 't': goto yy405
;
5987 yych
= *(P
->mrk
= ++P
->cur
);
5990 case 'c': goto yy407
;
5995 yych
= *(P
->mrk
= ++P
->cur
);
5998 case 'n': goto yy408
;
6003 yych
= *(P
->mrk
= ++P
->cur
);
6067 case 'z': goto yy53
;
6068 case '\\': goto yy114
;
6069 default: goto yy386
;
6072 #line 311 "src/parser.re"
6073 {RETURN(PSI_T_TYPEDEF
);}
6074 #line 6075 "src/parser.c"
6077 yych
= *(P
->mrk
= ++P
->cur
);
6080 case 't': goto yy409
;
6085 yych
= *(P
->mrk
= ++P
->cur
);
6088 case 't': goto yy411
;
6093 yych
= *(P
->mrk
= ++P
->cur
);
6096 case 't': goto yy413
;
6101 yych
= *(P
->mrk
= ++P
->cur
);
6165 case 'z': goto yy53
;
6166 case '\\': goto yy114
;
6167 default: goto yy391
;
6170 #line 296 "src/parser.re"
6171 {RETURN(PSI_T_UINT8
);}
6172 #line 6173 "src/parser.c"
6175 yych
= *(P
->mrk
= ++P
->cur
);
6178 case 'd': goto yy415
;
6183 yych
= *(P
->mrk
= ++P
->cur
);
6247 case 'z': goto yy53
;
6248 case '\\': goto yy114
;
6249 default: goto yy394
;
6252 #line 286 "src/parser.re"
6253 {RETURN(PSI_T_CALLABLE
);}
6254 #line 6255 "src/parser.c"
6257 yych
= *(P
->mrk
= ++P
->cur
);
6321 case 'z': goto yy53
;
6322 case '\\': goto yy114
;
6323 default: goto yy396
;
6326 #line 308 "src/parser.re"
6327 {RETURN(PSI_T_CALLBACK
);}
6328 #line 6329 "src/parser.c"
6331 yych
= *(P
->mrk
= ++P
->cur
);
6395 case 'z': goto yy53
;
6396 case '\\': goto yy114
;
6397 default: goto yy398
;
6400 #line 328 "src/parser.re"
6401 {RETURN(PSI_T_FLOATVAL
);}
6402 #line 6403 "src/parser.c"
6405 yych
= *(P
->mrk
= ++P
->cur
);
6469 case 'z': goto yy53
;
6470 case '\\': goto yy114
;
6471 default: goto yy400
;
6474 #line 310 "src/parser.re"
6475 {RETURN(PSI_T_FUNCTION
);}
6476 #line 6477 "src/parser.c"
6479 yych
= *(P
->mrk
= ++P
->cur
);
6482 case 'e': goto yy417
;
6487 yych
= *(P
->mrk
= ++P
->cur
);
6490 case 'r': goto yy418
;
6495 yych
= *(P
->mrk
= ++P
->cur
);
6559 case 'z': goto yy53
;
6560 case '\\': goto yy114
;
6561 default: goto yy404
;
6564 #line 336 "src/parser.re"
6565 {RETURN(PSI_T_TO_ARRAY
);}
6566 #line 6567 "src/parser.c"
6569 yych
= *(P
->mrk
= ++P
->cur
);
6633 case 'z': goto yy53
;
6634 case '\\': goto yy114
;
6635 default: goto yy406
;
6638 #line 339 "src/parser.re"
6639 {RETURN(PSI_T_TO_FLOAT
);}
6640 #line 6641 "src/parser.c"
6643 yych
= *(P
->mrk
= ++P
->cur
);
6646 case 't': goto yy419
;
6651 yych
= *(P
->mrk
= ++P
->cur
);
6654 case 'g': goto yy421
;
6659 yych
= *(P
->mrk
= ++P
->cur
);
6723 case 'z': goto yy53
;
6724 case '\\': goto yy114
;
6725 default: goto yy410
;
6728 #line 298 "src/parser.re"
6729 {RETURN(PSI_T_UINT16
);}
6730 #line 6731 "src/parser.c"
6733 yych
= *(P
->mrk
= ++P
->cur
);
6797 case 'z': goto yy53
;
6798 case '\\': goto yy114
;
6799 default: goto yy412
;
6802 #line 300 "src/parser.re"
6803 {RETURN(PSI_T_UINT32
);}
6804 #line 6805 "src/parser.c"
6807 yych
= *(P
->mrk
= ++P
->cur
);
6871 case 'z': goto yy53
;
6872 case '\\': goto yy114
;
6873 default: goto yy414
;
6876 #line 302 "src/parser.re"
6877 {RETURN(PSI_T_UINT64
);}
6878 #line 6879 "src/parser.c"
6881 yych
= *(P
->mrk
= ++P
->cur
);
6945 case 'z': goto yy53
;
6946 case '\\': goto yy114
;
6947 default: goto yy416
;
6950 #line 303 "src/parser.re"
6951 {RETURN(PSI_T_UNSIGNED
);}
6952 #line 6953 "src/parser.c"
6955 yych
= *(P
->mrk
= ++P
->cur
);
6958 case 'r': goto yy423
;
6963 yych
= *(P
->mrk
= ++P
->cur
);
6966 case 't': goto yy424
;
6971 yych
= *(P
->mrk
= ++P
->cur
);
7035 case 'z': goto yy53
;
7036 case '\\': goto yy114
;
7037 default: goto yy420
;
7040 #line 335 "src/parser.re"
7041 {RETURN(PSI_T_TO_OBJECT
);}
7042 #line 7043 "src/parser.c"
7045 yych
= *(P
->mrk
= ++P
->cur
);
7109 case 'z': goto yy53
;
7110 case '\\': goto yy114
;
7111 default: goto yy422
;
7114 #line 337 "src/parser.re"
7115 {RETURN(PSI_T_TO_STRING
);}
7116 #line 7117 "src/parser.c"
7119 yych
= *(P
->mrk
= ++P
->cur
);
7122 case 't': goto yy426
;
7127 yych
= *(P
->mrk
= ++P
->cur
);
7191 case 'z': goto yy53
;
7192 case '\\': goto yy114
;
7193 default: goto yy425
;
7196 #line 319 "src/parser.re"
7197 {RETURN(PSI_T_PRE_ASSERT
);}
7198 #line 7199 "src/parser.c"
7201 yych
= *(P
->mrk
= ++P
->cur
);
7265 case 'z': goto yy53
;
7266 case '\\': goto yy114
;
7267 default: goto yy427
;
7270 #line 320 "src/parser.re"
7271 {RETURN(PSI_T_POST_ASSERT
);}
7272 #line 7273 "src/parser.c"
7274 #line 347 "src/parser.re"
7280 #line 7281 "src/parser.c"
7283 if ((P
->lim
- P
->cur
) < 2) { if (!psi_parser_fill(P
,2)) RETURN(PSI_T_EOF
); };
7286 case '\n': goto yy432
;
7287 case '*': goto yy434
;
7288 default: goto yy430
;
7293 #line 354 "src/parser.re"
7295 #line 7296 "src/parser.c"
7298 #line 352 "src/parser.re"
7299 { NEWLINE(comment
); }
7300 #line 7301 "src/parser.c"
7304 case '/': goto yy435
;
7305 default: goto yy431
;
7309 #line 353 "src/parser.re"
7311 #line 7312 "src/parser.c"
7313 #line 355 "src/parser.re"