70e4ba2ce1f55bf3b03eaefab17c55d82a9c91f0
1 /* Generated by re2c 1.1.1 on Tue Oct 30 13:23:48 2018 */
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 #include <Zend/zend_smart_str.h>
41 # define YYMAXFILL 256
44 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
47 P
= malloc(sizeof(*P
));
49 memset(P
, 0, sizeof(*P
));
51 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
53 P
->preproc
= psi_cpp_init(P
);
55 psi_cpp_load_defaults(P
->preproc
);
60 struct psi_parser_input
*psi_parser_open_file(struct psi_parser
*P
, const char *filename
, bool report_errors
)
64 struct psi_parser_input
*fb
;
66 if (stat(filename
, &sb
)) {
68 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
69 "Could not stat '%s': %s",
70 filename
, strerror(errno
));
75 if (!(fb
= malloc(sizeof(*fb
) + sb
.st_size
+ YYMAXFILL
))) {
77 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
78 "Could not allocate %zu bytes for reading '%s': %s",
79 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
84 if (!(fp
= fopen(filename
, "r"))) {
87 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
88 "Could not open '%s' for reading: %s",
89 filename
, strerror(errno
));
94 if (sb
.st_size
!= fread(fb
->buffer
, 1, sb
.st_size
, fp
)) {
98 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
99 "Could not read %zu bytes from '%s': %s",
100 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
105 fb
->length
= sb
.st_size
;
106 fb
->file
= zend_string_init(filename
, strlen(filename
), 1);
111 struct psi_parser_input
*psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
113 struct psi_parser_input
*sb
;
115 if (!(sb
= malloc(sizeof(*sb
) + length
+ YYMAXFILL
))) {
116 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
117 "Could not allocate %zu bytes: %s",
118 length
+ YYMAXFILL
, strerror(errno
));
122 memcpy(sb
->buffer
, string
, length
);
123 memset(sb
->buffer
+ length
, 0, YYMAXFILL
);
126 sb
->file
= zend_string_init("<stdin>", strlen("<stdin>"), 1);
131 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
133 if (psi_cpp_process(P
->preproc
, tokens
)) {
139 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
141 if (psi_plist_count(tokens
)) {
142 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
147 void psi_parser_postprocess(struct psi_parser
*P
)
151 struct psi_validate_scope scope
= {0};
153 psi_validate_scope_ctor(&scope
);
154 scope
.defs
= &P
->preproc
->defs
;
157 P
->flags
|= PSI_SILENT
;
159 /* register const macros */
160 ZEND_HASH_FOREACH_STR_KEY_PTR(&P
->preproc
->defs
, name
, scope
.macro
)
162 if (scope
.macro
->sig
) {
163 } else if (scope
.macro
->exp
) {
164 if (psi_num_exp_validate(PSI_DATA(P
), scope
.macro
->exp
, &scope
)) {
165 struct psi_impl_type
*type
;
166 struct psi_impl_def_val
*def
;
167 struct psi_const
*cnst
;
168 struct psi_num_exp
*num
;
169 smart_str ns_name
= {0};
170 zend_string
*name_str
;
172 smart_str_appendl_ex(&ns_name
, ZEND_STRL("psi\\"), 1);
173 smart_str_append_ex(&ns_name
, name
, 1);
174 name_str
= smart_str_extract(&ns_name
);
176 num
= psi_num_exp_copy(scope
.macro
->exp
);
177 def
= psi_impl_def_val_init(PSI_T_NUMBER
, num
);
178 type
= psi_impl_type_init(PSI_T_NUMBER
,
179 zend_string_init(ZEND_STRL("<eval number>"), 1));
180 cnst
= psi_const_init(type
, name_str
, def
);
181 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
182 zend_string_release(name_str
);
185 if (psi_plist_count(scope
.macro
->tokens
) == 1) {
188 if (psi_plist_get(scope
.macro
->tokens
, 0, &t
)) {
189 if (t
->type
== PSI_T_QUOTED_STRING
) {
190 struct psi_impl_type
*type
;
191 struct psi_impl_def_val
*def
;
192 struct psi_const
*cnst
;
193 smart_str ns_name
= {0};
194 zend_string
*name_str
;
196 smart_str_appendl_ex(&ns_name
, ZEND_STRL("psi\\"), 1);
197 smart_str_append_ex(&ns_name
, name
, 1);
198 name_str
= smart_str_extract(&ns_name
);
200 type
= psi_impl_type_init(PSI_T_STRING
,
201 zend_string_init(ZEND_STRL("string"), 1));
202 def
= psi_impl_def_val_init(PSI_T_QUOTED_STRING
, t
->text
);
203 cnst
= psi_const_init(type
, name_str
, def
);
204 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
205 zend_string_release(name_str
);
211 ZEND_HASH_FOREACH_END();
215 psi_validate_scope_dtor(&scope
);
218 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
220 struct psi_plist
*scanned
, *preproc
;
221 size_t processed
= 0;
223 if (!(scanned
= psi_parser_scan(P
, I
))) {
227 if (!(preproc
= psi_parser_preprocess(P
, &scanned
))) {
228 psi_plist_free(scanned
);
232 if (!psi_parser_process(P
, preproc
, &processed
)) {
233 psi_plist_free(preproc
);
237 psi_parser_postprocess(P
);
239 psi_plist_free(preproc
);
243 void psi_parser_dtor(struct psi_parser
*P
)
245 psi_cpp_free(&P
->preproc
);
246 psi_data_dtor(PSI_DATA(P
));
248 memset(P
, 0, sizeof(*P
));
251 void psi_parser_free(struct psi_parser
**P
)
264 #define NEWTOKEN(t) \
265 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
266 tokens = psi_plist_add(tokens, &token); \
267 if (P->flags & PSI_DEBUG) { \
268 fprintf(stderr, "PSI< "); \
269 psi_token_dump(2, token); \
277 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
279 struct psi_plist
*tokens
;
280 struct psi_token
*token
;
281 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
286 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
->val
);
288 tok
= mrk
= eol
= cur
= I
->buffer
;
289 lim
= I
->buffer
+ I
->length
;
291 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
301 #line 302 "src/parser.c"
304 unsigned int yyaccept
= 0;
305 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
350 case '\'': goto yy20
;
401 case '\\': goto yy77
;
419 case '}': goto yy100
;
420 case '~': goto yy102
;
426 #line 467 "src/parser.re"
427 { NEWTOKEN(-2); goto error
; }
428 #line 429 "src/parser.c"
431 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
440 #line 466 "src/parser.re"
441 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
442 #line 443 "src/parser.c"
445 #line 465 "src/parser.re"
446 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
447 #line 448 "src/parser.c"
451 case '=': goto yy104
;
455 #line 368 "src/parser.re"
456 { NEWTOKEN(PSI_T_NOT
); goto start
; }
457 #line 458 "src/parser.c"
460 #line 341 "src/parser.re"
461 { escaped
= false; tok
+= 1; goto string
; }
462 #line 463 "src/parser.c"
466 case '#': goto yy106
;
470 #line 351 "src/parser.re"
471 { NEWTOKEN(PSI_T_HASH
); goto start
; }
472 #line 473 "src/parser.c"
545 #line 369 "src/parser.re"
546 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
547 #line 548 "src/parser.c"
551 case '&': goto yy111
;
555 #line 370 "src/parser.re"
556 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
557 #line 558 "src/parser.c"
560 #line 340 "src/parser.re"
561 { escaped
= false; tok
+= 1; goto character
; }
562 #line 563 "src/parser.c"
565 #line 352 "src/parser.re"
566 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
567 #line 568 "src/parser.c"
570 #line 353 "src/parser.re"
571 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
572 #line 573 "src/parser.c"
575 #line 366 "src/parser.re"
576 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
577 #line 578 "src/parser.c"
580 yych
= *(mrk
= ++cur
);
582 case '.': goto yy113
;
596 #line 371 "src/parser.re"
597 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
598 #line 599 "src/parser.c"
601 #line 355 "src/parser.re"
602 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
603 #line 604 "src/parser.c"
606 yych
= *(mrk
= ++cur
);
608 case '.': goto yy113
;
622 #line 372 "src/parser.re"
623 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
624 #line 625 "src/parser.c"
627 yych
= *(mrk
= ++cur
);
629 case '.': goto yy115
;
639 case '9': goto yy116
;
643 #line 383 "src/parser.re"
644 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
645 #line 646 "src/parser.c"
649 case '*': goto yy119
;
650 case '/': goto yy121
;
654 #line 373 "src/parser.re"
655 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
656 #line 657 "src/parser.c"
659 yych
= *(mrk
= ++cur
);
661 case '.': goto yy123
;
663 case 'e': goto yy127
;
665 case 'x': goto yy132
;
669 #line 327 "src/parser.re"
670 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
671 #line 672 "src/parser.c"
675 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
678 case '.': goto yy123
;
690 case 'e': goto yy127
;
692 case 'l': goto yy128
;
694 case 'u': goto yy130
;
699 #line 356 "src/parser.re"
700 { NEWTOKEN(PSI_T_COLON
); goto start
; }
701 #line 702 "src/parser.c"
704 #line 354 "src/parser.re"
705 { NEWTOKEN(PSI_T_EOS
); goto start
; }
706 #line 707 "src/parser.c"
709 yych
= *(mrk
= ++cur
);
776 case 'z': goto yy133
;
777 case '<': goto yy135
;
778 case '=': goto yy137
;
782 #line 381 "src/parser.re"
783 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
784 #line 785 "src/parser.c"
788 case '=': goto yy139
;
792 #line 365 "src/parser.re"
793 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
794 #line 795 "src/parser.c"
798 case '=': goto yy141
;
799 case '>': goto yy143
;
803 #line 382 "src/parser.re"
804 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
805 #line 806 "src/parser.c"
808 #line 385 "src/parser.re"
809 { NEWTOKEN(PSI_T_IIF
); goto start
; }
810 #line 811 "src/parser.c"
813 yych
= *(mrk
= ++cur
);
816 case 'r': goto yy145
;
818 case 's': goto yy146
;
822 #line 460 "src/parser.re"
823 { NEWTOKEN(PSI_T_NAME
); goto start
; }
824 #line 825 "src/parser.c"
827 yych
= *(mrk
= ++cur
);
830 case 'o': goto yy149
;
835 yych
= *(mrk
= ++cur
);
838 case 'a': goto yy150
;
840 case 'o': goto yy151
;
845 yych
= *(mrk
= ++cur
);
848 case 'e': goto yy152
;
853 yych
= *(mrk
= ++cur
);
856 case 'l': goto yy153
;
858 case 'n': goto yy154
;
860 case 'r': goto yy155
;
865 yych
= *(mrk
= ++cur
);
868 case 'a': goto yy156
;
870 case 'l': goto yy157
;
872 case 'r': goto yy158
;
874 case 'u': goto yy159
;
880 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
947 case 0x7F: goto yy55
;
948 case '\\': goto yy148
;
953 yych
= *(mrk
= ++cur
);
956 case 'f': goto yy160
;
958 case 'n': goto yy162
;
963 yych
= *(mrk
= ++cur
);
966 case '\'': goto yy163
;
968 case 'e': goto yy165
;
970 case 'i': goto yy166
;
975 yych
= *(mrk
= ++cur
);
978 case 'i': goto yy167
;
983 yych
= *(mrk
= ++cur
);
986 case 'u': goto yy168
;
991 yych
= *(mrk
= ++cur
);
994 case 'b': goto yy169
;
999 yych
= *(mrk
= ++cur
);
1002 case 'a': goto yy170
;
1004 case 'o': goto yy171
;
1006 case 'r': goto yy172
;
1011 yych
= *(mrk
= ++cur
);
1014 case 'e': goto yy173
;
1019 yych
= *(mrk
= ++cur
);
1022 case 'e': goto yy174
;
1024 case 't': goto yy175
;
1029 yych
= *(mrk
= ++cur
);
1032 case 'e': goto yy176
;
1034 case 'o': goto yy177
;
1036 case 'r': goto yy178
;
1041 yych
= *(mrk
= ++cur
);
1044 case '\'': goto yy179
;
1046 case 'n': goto yy181
;
1051 yych
= *(mrk
= ++cur
);
1054 case 'a': goto yy182
;
1059 yych
= *(mrk
= ++cur
);
1062 case 'v': goto yy183
;
1067 #line 359 "src/parser.re"
1068 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1069 #line 1070 "src/parser.c"
1147 case 0x7F: goto yy78
;
1148 default: goto yy184
;
1151 #line 374 "src/parser.re"
1152 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1153 #line 1154 "src/parser.c"
1156 #line 360 "src/parser.re"
1157 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1158 #line 1159 "src/parser.c"
1161 #line 376 "src/parser.re"
1162 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1163 #line 1164 "src/parser.c"
1166 yych
= *(mrk
= ++cur
);
1168 case '_': goto yy187
;
1173 yych
= *(mrk
= ++cur
);
1175 case 'O': goto yy149
;
1176 case 'o': goto yy188
;
1181 yych
= *(mrk
= ++cur
);
1184 case 'a': goto yy150
;
1185 case 'O': goto yy151
;
1186 case 'h': goto yy189
;
1187 case 'o': goto yy190
;
1192 yych
= *(mrk
= ++cur
);
1195 case 'e': goto yy152
;
1196 case 'o': goto yy191
;
1201 yych
= *(mrk
= ++cur
);
1204 case 'l': goto yy153
;
1205 case 'N': goto yy154
;
1207 case 'r': goto yy155
;
1208 case 'n': goto yy192
;
1213 yych
= *(mrk
= ++cur
);
1216 case 'a': goto yy156
;
1217 case 'L': goto yy157
;
1219 case 'r': goto yy158
;
1221 case 'u': goto yy159
;
1222 case 'l': goto yy193
;
1227 yych
= *(mrk
= ++cur
);
1230 case 'f': goto yy160
;
1231 case 'N': goto yy162
;
1232 case 'n': goto yy194
;
1237 yych
= *(mrk
= ++cur
);
1240 case 'e': goto yy165
;
1241 case 'I': goto yy166
;
1242 case 'i': goto yy195
;
1243 case 'o': goto yy196
;
1248 yych
= *(mrk
= ++cur
);
1251 case 'a': goto yy170
;
1253 case 'o': goto yy171
;
1254 case 'R': goto yy172
;
1255 case 'r': goto yy197
;
1260 yych
= *(mrk
= ++cur
);
1263 case 'e': goto yy174
;
1264 case 'T': goto yy175
;
1265 case 'h': goto yy198
;
1266 case 'i': goto yy199
;
1267 case 't': goto yy200
;
1272 yych
= *(mrk
= ++cur
);
1275 case 'e': goto yy176
;
1277 case 'o': goto yy177
;
1279 case 'r': goto yy178
;
1280 case 'y': goto yy201
;
1285 yych
= *(mrk
= ++cur
);
1288 case '\'': goto yy202
;
1289 case '8': goto yy204
;
1290 case 'N': goto yy181
;
1291 case 'n': goto yy205
;
1296 yych
= *(mrk
= ++cur
);
1298 case 'o': goto yy206
;
1303 #line 357 "src/parser.re"
1304 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1305 #line 1306 "src/parser.c"
1309 case '|': goto yy207
;
1313 #line 375 "src/parser.re"
1314 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1315 #line 1316 "src/parser.c"
1318 #line 358 "src/parser.re"
1319 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1320 #line 1321 "src/parser.c"
1323 #line 367 "src/parser.re"
1324 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1325 #line 1326 "src/parser.c"
1328 #line 361 "src/parser.re"
1329 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1330 #line 1331 "src/parser.c"
1333 #line 350 "src/parser.re"
1334 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1335 #line 1336 "src/parser.c"
1338 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1405 case 0x7F: goto yy110
;
1406 default: goto yy108
;
1409 #line 462 "src/parser.re"
1410 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1411 #line 1412 "src/parser.c"
1414 #line 363 "src/parser.re"
1415 { NEWTOKEN(PSI_T_AND
); goto start
; }
1416 #line 1417 "src/parser.c"
1429 case '9': goto yy116
;
1430 default: goto yy114
;
1445 case 10: goto yy186
;
1446 case 11: goto yy242
;
1447 case 12: goto yy244
;
1448 case 13: goto yy253
;
1449 case 14: goto yy273
;
1450 case 15: goto yy305
;
1451 case 16: goto yy307
;
1452 case 17: goto yy313
;
1453 case 18: goto yy321
;
1454 case 19: goto yy333
;
1455 case 20: goto yy341
;
1456 case 21: goto yy345
;
1457 case 22: goto yy352
;
1458 case 23: goto yy354
;
1459 case 24: goto yy358
;
1460 case 25: goto yy361
;
1461 case 26: goto yy363
;
1462 case 27: goto yy373
;
1463 case 28: goto yy376
;
1464 case 29: goto yy383
;
1465 case 30: goto yy386
;
1466 case 31: goto yy388
;
1467 case 32: goto yy390
;
1468 case 33: goto yy394
;
1469 case 34: goto yy399
;
1470 case 35: goto yy417
;
1471 case 36: goto yy425
;
1472 case 37: goto yy428
;
1473 case 38: goto yy431
;
1474 case 39: goto yy437
;
1475 case 40: goto yy441
;
1476 case 41: goto yy446
;
1477 case 42: goto yy448
;
1478 case 43: goto yy452
;
1479 case 44: goto yy455
;
1480 case 45: goto yy457
;
1481 case 46: goto yy459
;
1482 case 47: goto yy464
;
1483 case 48: goto yy466
;
1484 case 49: goto yy468
;
1485 case 50: goto yy470
;
1486 case 51: goto yy472
;
1487 case 52: goto yy477
;
1488 case 53: goto yy487
;
1489 case 54: goto yy489
;
1490 case 55: goto yy491
;
1491 case 56: goto yy493
;
1492 case 57: goto yy495
;
1493 case 58: goto yy500
;
1494 case 59: goto yy504
;
1495 case 60: goto yy508
;
1496 case 61: goto yy510
;
1497 case 62: goto yy515
;
1498 case 63: goto yy520
;
1499 case 64: goto yy522
;
1500 case 65: goto yy530
;
1501 case 66: goto yy534
;
1502 case 67: goto yy536
;
1503 case 68: goto yy538
;
1504 case 69: goto yy540
;
1505 case 70: goto yy545
;
1506 case 71: goto yy547
;
1507 case 72: goto yy553
;
1508 case 73: goto yy558
;
1509 case 74: goto yy560
;
1510 case 75: goto yy565
;
1511 case 76: goto yy567
;
1512 case 77: goto yy575
;
1513 case 78: goto yy579
;
1514 case 79: goto yy583
;
1515 case 80: goto yy587
;
1516 case 81: goto yy589
;
1517 default: goto yy594
;
1522 case '.': goto yy209
;
1523 default: goto yy114
;
1528 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1540 case '9': goto yy116
;
1542 case 'd': goto yy211
;
1544 case 'f': goto yy212
;
1546 case 'l': goto yy214
;
1547 default: goto yy118
;
1550 #line 333 "src/parser.re"
1551 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1552 #line 1553 "src/parser.c"
1555 #line 347 "src/parser.re"
1557 #line 1558 "src/parser.c"
1560 #line 348 "src/parser.re"
1561 { goto comment_sl
; }
1562 #line 1563 "src/parser.c"
1566 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1578 case '9': goto yy123
;
1580 case 'd': goto yy211
;
1582 case 'e': goto yy127
;
1584 case 'f': goto yy212
;
1586 case 'l': goto yy214
;
1587 default: goto yy118
;
1591 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1602 case '7': goto yy125
;
1604 case 'l': goto yy128
;
1606 case 'u': goto yy130
;
1613 case '-': goto yy113
;
1623 case '9': goto yy116
;
1624 default: goto yy114
;
1628 yych
= *(mrk
= ++cur
);
1631 case 'l': goto yy216
;
1633 case 'u': goto yy217
;
1634 default: goto yy129
;
1638 #line 329 "src/parser.re"
1639 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1640 #line 1641 "src/parser.c"
1645 case 'l': goto yy219
;
1646 default: goto yy131
;
1650 #line 328 "src/parser.re"
1651 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1652 #line 1653 "src/parser.c"
1677 case 'f': goto yy220
;
1678 default: goto yy114
;
1682 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1750 case 'z': goto yy133
;
1751 case '>': goto yy222
;
1752 default: goto yy114
;
1756 #line 377 "src/parser.re"
1757 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1758 #line 1759 "src/parser.c"
1761 #line 379 "src/parser.re"
1762 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1763 #line 1764 "src/parser.c"
1766 #line 362 "src/parser.re"
1767 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1768 #line 1769 "src/parser.c"
1771 #line 380 "src/parser.re"
1772 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1773 #line 1774 "src/parser.c"
1776 #line 378 "src/parser.re"
1777 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1778 #line 1779 "src/parser.c"
1781 yych
= *(mrk
= ++cur
);
1784 case 'r': goto yy224
;
1789 yych
= *(mrk
= ++cur
);
1854 case 0x7F: goto yy147
;
1855 case '\\': goto yy148
;
1859 #line 440 "src/parser.re"
1860 { NEWTOKEN(PSI_T_AS
); goto start
; }
1861 #line 1862 "src/parser.c"
1864 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1941 case 0x7F: goto yy114
;
1942 default: goto yy184
;
1946 yych
= *(mrk
= ++cur
);
1949 case 'o': goto yy225
;
1954 yych
= *(mrk
= ++cur
);
1957 case 'l': goto yy226
;
1962 yych
= *(mrk
= ++cur
);
1965 case 'u': goto yy227
;
1970 yych
= *(mrk
= ++cur
);
1973 case 'f': goto yy228
;
1978 yych
= *(mrk
= ++cur
);
1981 case 'i': goto yy229
;
1983 case 's': goto yy230
;
1988 yych
= *(mrk
= ++cur
);
1991 case 'd': goto yy231
;
1996 yych
= *(mrk
= ++cur
);
1999 case 'r': goto yy232
;
2004 yych
= *(mrk
= ++cur
);
2007 case 'l': goto yy233
;
2012 yych
= *(mrk
= ++cur
);
2015 case 'o': goto yy234
;
2020 yych
= *(mrk
= ++cur
);
2023 case 'e': goto yy235
;
2028 yych
= *(mrk
= ++cur
);
2031 case 'n': goto yy236
;
2036 yych
= *(mrk
= ++cur
);
2101 case 0x7F: goto yy161
;
2103 case 'd': goto yy237
;
2105 case 'n': goto yy238
;
2106 case '\\': goto yy148
;
2110 #line 410 "src/parser.re"
2111 { NEWTOKEN(PSI_T_IF
); goto start
; }
2112 #line 2113 "src/parser.c"
2115 yych
= *(mrk
= ++cur
);
2118 case 'c': goto yy239
;
2120 case 't': goto yy240
;
2126 #line 345 "src/parser.re"
2127 { char_width
= sizeof(wchar_t)/8; }
2128 #line 2129 "src/parser.c"
2131 yych
= *(mrk
= ++cur
);
2134 case 't': goto yy241
;
2139 yych
= *(mrk
= ++cur
);
2142 case 'b': goto yy243
;
2147 yych
= *(mrk
= ++cur
);
2150 case 'x': goto yy245
;
2155 yych
= *(mrk
= ++cur
);
2158 case 'l': goto yy246
;
2163 yych
= *(mrk
= ++cur
);
2166 case 'j': goto yy247
;
2171 yych
= *(mrk
= ++cur
);
2174 case 't': goto yy248
;
2179 yych
= *(mrk
= ++cur
);
2182 case 's': goto yy249
;
2187 yych
= *(mrk
= ++cur
);
2190 case 'e': goto yy250
;
2195 yych
= *(mrk
= ++cur
);
2198 case 't': goto yy251
;
2203 yych
= *(mrk
= ++cur
);
2206 case 't': goto yy252
;
2211 yych
= *(mrk
= ++cur
);
2214 case 'a': goto yy254
;
2216 case 'r': goto yy255
;
2221 yych
= *(mrk
= ++cur
);
2224 case 'm': goto yy256
;
2229 yych
= *(mrk
= ++cur
);
2231 case '_': goto yy257
;
2236 yych
= *(mrk
= ++cur
);
2239 case 'u': goto yy258
;
2245 #line 344 "src/parser.re"
2247 #line 2248 "src/parser.c"
2250 yych
= *(mrk
= ++cur
);
2253 case 'd': goto yy259
;
2258 yych
= *(mrk
= ++cur
);
2261 case 'r': goto yy260
;
2266 yych
= *(mrk
= ++cur
);
2269 case 'a': goto yy261
;
2275 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2341 case 0x7F: goto yy186
;
2342 case '\\': goto yy148
;
2343 default: goto yy184
;
2346 #line 461 "src/parser.re"
2347 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2348 #line 2349 "src/parser.c"
2351 yych
= *(mrk
= ++cur
);
2353 case 'a': goto yy262
;
2354 case 'e': goto yy263
;
2355 case 'i': goto yy264
;
2356 case 'r': goto yy265
;
2361 yych
= *(mrk
= ++cur
);
2363 case 'O': goto yy225
;
2364 case 'o': goto yy266
;
2369 yych
= *(mrk
= ++cur
);
2371 case 'a': goto yy267
;
2376 yych
= *(mrk
= ++cur
);
2379 case 'u': goto yy227
;
2380 case 'n': goto yy268
;
2385 yych
= *(mrk
= ++cur
);
2387 case 'u': goto yy269
;
2392 yych
= *(mrk
= ++cur
);
2395 case 'd': goto yy231
;
2396 case 'u': goto yy270
;
2401 yych
= *(mrk
= ++cur
);
2403 case 'O': goto yy234
;
2404 case 'o': goto yy271
;
2409 yych
= *(mrk
= ++cur
);
2412 case 'c': goto yy239
;
2413 case 'T': goto yy240
;
2414 case 't': goto yy272
;
2419 yych
= *(mrk
= ++cur
);
2422 case 'b': goto yy243
;
2423 case 'n': goto yy274
;
2428 yych
= *(mrk
= ++cur
);
2430 case 'n': goto yy275
;
2435 yych
= *(mrk
= ++cur
);
2438 case 'e': goto yy250
;
2439 case 'a': goto yy276
;
2444 yych
= *(mrk
= ++cur
);
2446 case 'o': goto yy277
;
2451 yych
= *(mrk
= ++cur
);
2453 case 'g': goto yy278
;
2454 case 'z': goto yy279
;
2459 yych
= *(mrk
= ++cur
);
2462 case 'a': goto yy254
;
2463 case 'R': goto yy255
;
2464 case 'r': goto yy280
;
2469 yych
= *(mrk
= ++cur
);
2471 case 'p': goto yy281
;
2477 #line 343 "src/parser.re"
2479 #line 2480 "src/parser.c"
2482 yych
= *(mrk
= ++cur
);
2484 case '"': goto yy282
;
2489 yych
= *(mrk
= ++cur
);
2492 case 'd': goto yy259
;
2493 case 'i': goto yy284
;
2494 case 's': goto yy285
;
2499 yych
= *(mrk
= ++cur
);
2501 case 'i': goto yy286
;
2502 case 'l': goto yy287
;
2507 #line 364 "src/parser.re"
2508 { NEWTOKEN(PSI_T_OR
); goto start
; }
2509 #line 2510 "src/parser.c"
2512 #line 384 "src/parser.re"
2513 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2514 #line 2515 "src/parser.c"
2519 case 'd': goto yy288
;
2521 case 'f': goto yy290
;
2523 case 'l': goto yy292
;
2524 default: goto yy114
;
2529 #line 334 "src/parser.re"
2530 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2531 #line 2532 "src/parser.c"
2535 #line 335 "src/parser.re"
2536 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2537 #line 2538 "src/parser.c"
2542 case 'u': goto yy294
;
2543 default: goto yy114
;
2549 #line 330 "src/parser.re"
2550 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2551 #line 2552 "src/parser.c"
2556 case 'l': goto yy294
;
2557 default: goto yy218
;
2562 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2565 case '.': goto yy296
;
2587 case 'f': goto yy220
;
2589 case 'l': goto yy128
;
2591 case 'p': goto yy127
;
2593 case 'u': goto yy130
;
2598 #line 463 "src/parser.re"
2599 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2600 #line 2601 "src/parser.c"
2603 yych
= *(mrk
= ++cur
);
2606 case 'a': goto yy298
;
2608 case 'v': goto yy299
;
2613 yych
= *(mrk
= ++cur
);
2616 case 'l': goto yy300
;
2621 yych
= *(mrk
= ++cur
);
2624 case 'l': goto yy301
;
2629 yych
= *(mrk
= ++cur
);
2632 case 'n': goto yy302
;
2637 yych
= *(mrk
= ++cur
);
2640 case 'i': goto yy303
;
2645 yych
= *(mrk
= ++cur
);
2648 case 'f': goto yy304
;
2653 yych
= *(mrk
= ++cur
);
2656 case 'e': goto yy306
;
2661 yych
= *(mrk
= ++cur
);
2664 case 'i': goto yy308
;
2669 yych
= *(mrk
= ++cur
);
2672 case 'o': goto yy309
;
2677 yych
= *(mrk
= ++cur
);
2680 case 's': goto yy310
;
2685 yych
= *(mrk
= ++cur
);
2688 case 'a': goto yy311
;
2693 yych
= *(mrk
= ++cur
);
2696 case 'e': goto yy312
;
2701 yych
= *(mrk
= ++cur
);
2704 case 'c': goto yy314
;
2709 yych
= *(mrk
= ++cur
);
2712 case 'e': goto yy315
;
2717 yych
= *(mrk
= ++cur
);
2720 case 'd': goto yy316
;
2725 yych
= *(mrk
= ++cur
);
2728 case 'l': goto yy317
;
2733 yych
= *(mrk
= ++cur
);
2736 case 'v': goto yy318
;
2741 yych
= *(mrk
= ++cur
);
2806 case 0x7F: goto yy242
;
2807 case '\\': goto yy148
;
2811 #line 435 "src/parser.re"
2812 { NEWTOKEN(PSI_T_LET
); goto start
; }
2813 #line 2814 "src/parser.c"
2816 yych
= *(mrk
= ++cur
);
2881 case 0x7F: goto yy244
;
2882 case '\\': goto yy148
;
2886 #line 434 "src/parser.re"
2887 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2888 #line 2889 "src/parser.c"
2891 yych
= *(mrk
= ++cur
);
2894 case 'e': goto yy319
;
2899 yych
= *(mrk
= ++cur
);
2902 case 'l': goto yy320
;
2907 yych
= *(mrk
= ++cur
);
2910 case 'e': goto yy322
;
2912 case 'v': goto yy323
;
2917 yych
= *(mrk
= ++cur
);
2920 case 'h': goto yy324
;
2925 yych
= *(mrk
= ++cur
);
2928 case 't': goto yy325
;
2933 yych
= *(mrk
= ++cur
);
2935 case '_': goto yy326
;
2940 yych
= *(mrk
= ++cur
);
2943 case 'u': goto yy327
;
2948 yych
= *(mrk
= ++cur
);
3013 case 0x7F: goto yy253
;
3014 case '\\': goto yy148
;
3018 #line 436 "src/parser.re"
3019 { NEWTOKEN(PSI_T_SET
); goto start
; }
3020 #line 3021 "src/parser.c"
3023 yych
= *(mrk
= ++cur
);
3026 case 't': goto yy328
;
3031 yych
= *(mrk
= ++cur
);
3034 case 'i': goto yy329
;
3036 case 'l': goto yy330
;
3038 case 'v': goto yy331
;
3043 yych
= *(mrk
= ++cur
);
3046 case 'p': goto yy332
;
3051 yych
= *(mrk
= ++cur
);
3054 case 'a': goto yy334
;
3056 case 'b': goto yy335
;
3058 case 'f': goto yy336
;
3060 case 'i': goto yy337
;
3062 case 'o': goto yy338
;
3064 case 's': goto yy339
;
3069 yych
= *(mrk
= ++cur
);
3072 case 'e': goto yy340
;
3077 yych
= *(mrk
= ++cur
);
3080 case 'e': goto yy342
;
3085 yych
= *(mrk
= ++cur
);
3088 case 'n': goto yy343
;
3093 yych
= *(mrk
= ++cur
);
3096 case 'l': goto yy344
;
3101 yych
= *(mrk
= ++cur
);
3103 case 's': goto yy346
;
3104 case 't': goto yy347
;
3109 yych
= *(mrk
= ++cur
);
3111 case 'x': goto yy348
;
3116 yych
= *(mrk
= ++cur
);
3118 case 'n': goto yy349
;
3123 yych
= *(mrk
= ++cur
);
3125 case 'e': goto yy350
;
3130 yych
= *(mrk
= ++cur
);
3132 case 'L': goto yy300
;
3133 case 'l': goto yy351
;
3138 yych
= *(mrk
= ++cur
);
3140 case 'r': goto yy353
;
3145 yych
= *(mrk
= ++cur
);
3147 case 's': goto yy355
;
3152 yych
= *(mrk
= ++cur
);
3154 case 'b': goto yy356
;
3159 yych
= *(mrk
= ++cur
);
3161 case 'm': goto yy357
;
3166 yych
= *(mrk
= ++cur
);
3168 case 'A': goto yy311
;
3169 case 'a': goto yy359
;
3174 yych
= *(mrk
= ++cur
);
3239 case 0x7F: goto yy273
;
3241 case 'v': goto yy318
;
3242 case '\\': goto yy148
;
3246 #line 404 "src/parser.re"
3247 { NEWTOKEN(PSI_T_INT
); goto start
; }
3248 #line 3249 "src/parser.c"
3251 yych
= *(mrk
= ++cur
);
3253 case 'e': goto yy360
;
3258 yych
= *(mrk
= ++cur
);
3260 case 'g': goto yy362
;
3265 yych
= *(mrk
= ++cur
);
3267 case 'g': goto yy364
;
3272 yych
= *(mrk
= ++cur
);
3274 case 'r': goto yy365
;
3279 yych
= *(mrk
= ++cur
);
3281 case 'n': goto yy366
;
3286 yych
= *(mrk
= ++cur
);
3288 case 'e': goto yy367
;
3293 yych
= *(mrk
= ++cur
);
3296 case 'i': goto yy329
;
3298 case 'l': goto yy330
;
3300 case 'v': goto yy331
;
3301 case 'u': goto yy368
;
3306 yych
= *(mrk
= ++cur
);
3308 case 'e': goto yy369
;
3314 #line 342 "src/parser.re"
3316 #line 3317 "src/parser.c"
3319 yych
= *(mrk
= ++cur
);
3321 case 'o': goto yy370
;
3326 yych
= *(mrk
= ++cur
);
3328 case 'i': goto yy371
;
3333 yych
= *(mrk
= ++cur
);
3335 case 'd': goto yy372
;
3340 yych
= *(mrk
= ++cur
);
3342 case 'a': goto yy374
;
3348 #line 337 "src/parser.re"
3349 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3350 #line 3351 "src/parser.c"
3354 #line 336 "src/parser.re"
3355 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3356 #line 3357 "src/parser.c"
3360 #line 338 "src/parser.re"
3361 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3362 #line 3363 "src/parser.c"
3366 #line 331 "src/parser.re"
3367 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3368 #line 3369 "src/parser.c"
3371 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3395 case 'f': goto yy296
;
3397 case 'p': goto yy127
;
3398 default: goto yy114
;
3402 yych
= *(mrk
= ++cur
);
3405 case 'y': goto yy375
;
3410 yych
= *(mrk
= ++cur
);
3413 case 'a': goto yy377
;
3418 yych
= *(mrk
= ++cur
);
3421 case 'v': goto yy378
;
3426 yych
= *(mrk
= ++cur
);
3429 case 'a': goto yy379
;
3431 case 'b': goto yy380
;
3433 case 'o': goto yy381
;
3438 yych
= *(mrk
= ++cur
);
3441 case 't': goto yy382
;
3446 yych
= *(mrk
= ++cur
);
3449 case 'n': goto yy384
;
3454 yych
= *(mrk
= ++cur
);
3519 case 0x7F: goto yy305
;
3520 case '\\': goto yy148
;
3524 #line 414 "src/parser.re"
3525 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3526 #line 3527 "src/parser.c"
3529 yych
= *(mrk
= ++cur
);
3594 case 0x7F: goto yy307
;
3595 case '\\': goto yy148
;
3599 #line 413 "src/parser.re"
3600 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3601 #line 3602 "src/parser.c"
3604 yych
= *(mrk
= ++cur
);
3607 case 'f': goto yy385
;
3612 yych
= *(mrk
= ++cur
);
3615 case 'r': goto yy387
;
3620 yych
= *(mrk
= ++cur
);
3623 case 'e': goto yy389
;
3628 yych
= *(mrk
= ++cur
);
3631 case 't': goto yy391
;
3636 yych
= *(mrk
= ++cur
);
3701 case 0x7F: goto yy313
;
3702 case '\\': goto yy148
;
3706 #line 441 "src/parser.re"
3707 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3708 #line 3709 "src/parser.c"
3711 yych
= *(mrk
= ++cur
);
3714 case 't': goto yy392
;
3719 yych
= *(mrk
= ++cur
);
3722 case 'f': goto yy393
;
3727 yych
= *(mrk
= ++cur
);
3730 case 'e': goto yy395
;
3735 yych
= *(mrk
= ++cur
);
3738 case 'u': goto yy396
;
3743 yych
= *(mrk
= ++cur
);
3746 case 'a': goto yy397
;
3751 yych
= *(mrk
= ++cur
);
3754 case 'd': goto yy398
;
3759 yych
= *(mrk
= ++cur
);
3824 case 0x7F: goto yy321
;
3825 case '\\': goto yy148
;
3829 #line 425 "src/parser.re"
3830 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3831 #line 3832 "src/parser.c"
3834 yych
= *(mrk
= ++cur
);
3837 case 'c': goto yy400
;
3842 yych
= *(mrk
= ++cur
);
3845 case 'a': goto yy401
;
3850 yych
= *(mrk
= ++cur
);
3853 case 'v': goto yy402
;
3858 yych
= *(mrk
= ++cur
);
3860 case '_': goto yy403
;
3865 yych
= *(mrk
= ++cur
);
3868 case 'a': goto yy404
;
3873 yych
= *(mrk
= ++cur
);
3876 case 'r': goto yy405
;
3881 yych
= *(mrk
= ++cur
);
3884 case 'i': goto yy406
;
3889 yych
= *(mrk
= ++cur
);
3892 case 'n': goto yy407
;
3897 yych
= *(mrk
= ++cur
);
3900 case 'e': goto yy408
;
3905 yych
= *(mrk
= ++cur
);
3908 case 'a': goto yy409
;
3913 yych
= *(mrk
= ++cur
);
3978 case 0x7F: goto yy333
;
3979 case '\\': goto yy148
;
3983 #line 442 "src/parser.re"
3984 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3985 #line 3986 "src/parser.c"
3988 yych
= *(mrk
= ++cur
);
3991 case 'r': goto yy410
;
3996 yych
= *(mrk
= ++cur
);
3999 case 'o': goto yy411
;
4004 yych
= *(mrk
= ++cur
);
4007 case 'l': goto yy412
;
4012 yych
= *(mrk
= ++cur
);
4015 case 'n': goto yy413
;
4020 yych
= *(mrk
= ++cur
);
4023 case 'b': goto yy414
;
4028 yych
= *(mrk
= ++cur
);
4031 case 't': goto yy415
;
4036 yych
= *(mrk
= ++cur
);
4101 case 0x7F: goto yy341
;
4102 case '\\': goto yy148
;
4106 #line 423 "src/parser.re"
4107 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4108 #line 4109 "src/parser.c"
4111 yych
= *(mrk
= ++cur
);
4114 case 'f': goto yy416
;
4119 yych
= *(mrk
= ++cur
);
4122 case 'i': goto yy418
;
4127 yych
= *(mrk
= ++cur
);
4192 case 0x7F: goto yy345
;
4193 case '\\': goto yy148
;
4197 #line 451 "src/parser.re"
4198 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4199 #line 4200 "src/parser.c"
4202 yych
= *(mrk
= ++cur
);
4204 case 'm': goto yy419
;
4209 yych
= *(mrk
= ++cur
);
4211 case 't': goto yy420
;
4216 yych
= *(mrk
= ++cur
);
4218 case 't': goto yy421
;
4223 yych
= *(mrk
= ++cur
);
4225 case 'l': goto yy422
;
4230 yych
= *(mrk
= ++cur
);
4232 case 's': goto yy423
;
4237 yych
= *(mrk
= ++cur
);
4302 case 0x7F: goto yy352
;
4304 case 'v': goto yy378
;
4305 case '\\': goto yy148
;
4309 #line 401 "src/parser.re"
4310 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4311 #line 4312 "src/parser.c"
4314 yych
= *(mrk
= ++cur
);
4379 case 0x7F: goto yy354
;
4380 case '\\': goto yy148
;
4384 #line 402 "src/parser.re"
4385 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4386 #line 4387 "src/parser.c"
4389 yych
= *(mrk
= ++cur
);
4391 case 't': goto yy424
;
4396 yych
= *(mrk
= ++cur
);
4398 case 'l': goto yy426
;
4403 yych
= *(mrk
= ++cur
);
4468 case 0x7F: goto yy358
;
4469 case '\\': goto yy148
;
4473 #line 398 "src/parser.re"
4474 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4475 #line 4476 "src/parser.c"
4478 yych
= *(mrk
= ++cur
);
4480 case 'T': goto yy391
;
4481 case 't': goto yy427
;
4486 yych
= *(mrk
= ++cur
);
4551 case 0x7F: goto yy361
;
4552 case '\\': goto yy148
;
4556 #line 394 "src/parser.re"
4557 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4558 #line 4559 "src/parser.c"
4561 yych
= *(mrk
= ++cur
);
4626 case 0x7F: goto yy363
;
4627 case '\\': goto yy148
;
4631 #line 405 "src/parser.re"
4632 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4633 #line 4634 "src/parser.c"
4636 yych
= *(mrk
= ++cur
);
4638 case 'm': goto yy429
;
4643 yych
= *(mrk
= ++cur
);
4645 case 't': goto yy430
;
4650 yych
= *(mrk
= ++cur
);
4652 case 'e': goto yy432
;
4657 yych
= *(mrk
= ++cur
);
4659 case 'o': goto yy433
;
4664 yych
= *(mrk
= ++cur
);
4666 case 'c': goto yy434
;
4671 yych
= *(mrk
= ++cur
);
4673 case 'd': goto yy435
;
4678 yych
= *(mrk
= ++cur
);
4680 case 'n': goto yy436
;
4685 yych
= *(mrk
= ++cur
);
4687 case 'g': goto yy438
;
4692 yych
= *(mrk
= ++cur
);
4757 case 0x7F: goto yy373
;
4758 case '\\': goto yy148
;
4762 #line 400 "src/parser.re"
4763 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4764 #line 4765 "src/parser.c"
4767 yych
= *(mrk
= ++cur
);
4769 case 't': goto yy439
;
4774 yych
= *(mrk
= ++cur
);
4839 case 0x7F: goto yy376
;
4840 case '\\': goto yy148
;
4844 #line 429 "src/parser.re"
4845 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4846 #line 4847 "src/parser.c"
4849 yych
= *(mrk
= ++cur
);
4852 case 'l': goto yy440
;
4857 yych
= *(mrk
= ++cur
);
4860 case 'a': goto yy442
;
4865 yych
= *(mrk
= ++cur
);
4868 case 'b': goto yy443
;
4873 yych
= *(mrk
= ++cur
);
4876 case 'a': goto yy444
;
4881 yych
= *(mrk
= ++cur
);
4884 case 'c': goto yy445
;
4889 yych
= *(mrk
= ++cur
);
4954 case 0x7F: goto yy383
;
4955 case '\\': goto yy148
;
4959 #line 452 "src/parser.re"
4960 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4961 #line 4962 "src/parser.c"
4964 yych
= *(mrk
= ++cur
);
4967 case 'e': goto yy447
;
4972 yych
= *(mrk
= ++cur
);
5037 case 0x7F: goto yy386
;
5038 case '\\': goto yy148
;
5042 #line 415 "src/parser.re"
5043 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5044 #line 5045 "src/parser.c"
5047 yych
= *(mrk
= ++cur
);
5112 case 0x7F: goto yy388
;
5113 case '\\': goto yy148
;
5117 #line 420 "src/parser.re"
5118 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5119 #line 5120 "src/parser.c"
5122 yych
= *(mrk
= ++cur
);
5187 case 0x7F: goto yy390
;
5188 case '\\': goto yy148
;
5192 #line 424 "src/parser.re"
5193 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5194 #line 5195 "src/parser.c"
5197 yych
= *(mrk
= ++cur
);
5200 case 'v': goto yy449
;
5205 yych
= *(mrk
= ++cur
);
5208 case 'i': goto yy450
;
5213 yych
= *(mrk
= ++cur
);
5278 case 0x7F: goto yy394
;
5279 case '\\': goto yy148
;
5283 #line 411 "src/parser.re"
5284 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5285 #line 5286 "src/parser.c"
5288 yych
= *(mrk
= ++cur
);
5291 case 'f': goto yy451
;
5296 yych
= *(mrk
= ++cur
);
5299 case 'd': goto yy453
;
5304 yych
= *(mrk
= ++cur
);
5307 case 'l': goto yy454
;
5312 yych
= *(mrk
= ++cur
);
5377 case 0x7F: goto yy399
;
5378 case '\\': goto yy148
;
5382 #line 426 "src/parser.re"
5383 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5384 #line 5385 "src/parser.c"
5387 yych
= *(mrk
= ++cur
);
5390 case 't': goto yy456
;
5395 yych
= *(mrk
= ++cur
);
5398 case 'l': goto yy458
;
5403 yych
= *(mrk
= ++cur
);
5406 case 'a': goto yy460
;
5411 yych
= *(mrk
= ++cur
);
5414 case 'a': goto yy461
;
5419 yych
= *(mrk
= ++cur
);
5422 case 's': goto yy462
;
5427 yych
= *(mrk
= ++cur
);
5430 case 'n': goto yy463
;
5435 yych
= *(mrk
= ++cur
);
5438 case 'c': goto yy465
;
5443 yych
= *(mrk
= ++cur
);
5446 case 'g': goto yy467
;
5451 yych
= *(mrk
= ++cur
);
5454 case 'n': goto yy469
;
5459 yych
= *(mrk
= ++cur
);
5462 case 'l': goto yy471
;
5467 yych
= *(mrk
= ++cur
);
5470 case 'r': goto yy473
;
5475 yych
= *(mrk
= ++cur
);
5478 case 'o': goto yy474
;
5483 yych
= *(mrk
= ++cur
);
5486 case 'o': goto yy475
;
5491 yych
= *(mrk
= ++cur
);
5494 case 't': goto yy476
;
5499 yych
= *(mrk
= ++cur
);
5502 case 'j': goto yy478
;
5507 yych
= *(mrk
= ++cur
);
5510 case 'r': goto yy479
;
5515 yych
= *(mrk
= ++cur
);
5580 case 0x7F: goto yy417
;
5581 case '\\': goto yy148
;
5585 #line 418 "src/parser.re"
5586 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5587 #line 5588 "src/parser.c"
5590 yych
= *(mrk
= ++cur
);
5593 case 'n': goto yy480
;
5598 yych
= *(mrk
= ++cur
);
5600 case '_': goto yy481
;
5605 yych
= *(mrk
= ++cur
);
5607 case 'r': goto yy482
;
5612 yych
= *(mrk
= ++cur
);
5614 case 'e': goto yy483
;
5619 yych
= *(mrk
= ++cur
);
5621 case 'i': goto yy484
;
5626 yych
= *(mrk
= ++cur
);
5628 case 't': goto yy485
;
5633 yych
= *(mrk
= ++cur
);
5698 case 0x7F: goto yy425
;
5699 case '\\': goto yy148
;
5703 #line 399 "src/parser.re"
5704 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5705 #line 5706 "src/parser.c"
5708 yych
= *(mrk
= ++cur
);
5710 case 'e': goto yy486
;
5715 yych
= *(mrk
= ++cur
);
5780 case 0x7F: goto yy428
;
5782 case 'v': goto yy449
;
5783 case '\\': goto yy148
;
5787 #line 406 "src/parser.re"
5788 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5789 #line 5790 "src/parser.c"
5792 yych
= *(mrk
= ++cur
);
5794 case 'a': goto yy488
;
5799 yych
= *(mrk
= ++cur
);
5864 case 0x7F: goto yy431
;
5865 case '\\': goto yy148
;
5869 #line 403 "src/parser.re"
5870 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5871 #line 5872 "src/parser.c"
5874 yych
= *(mrk
= ++cur
);
5876 case 'd': goto yy490
;
5881 yych
= *(mrk
= ++cur
);
5883 case 'f': goto yy492
;
5888 yych
= *(mrk
= ++cur
);
5890 case 't': goto yy494
;
5895 yych
= *(mrk
= ++cur
);
5897 case 'e': goto yy496
;
5902 yych
= *(mrk
= ++cur
);
5967 case 0x7F: goto yy437
;
5968 case '\\': goto yy148
;
5972 #line 397 "src/parser.re"
5973 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5974 #line 5975 "src/parser.c"
5977 yych
= *(mrk
= ++cur
);
5979 case 'n': goto yy497
;
5984 yych
= *(mrk
= ++cur
);
5986 case 'i': goto yy498
;
5991 yych
= *(mrk
= ++cur
);
6056 case 0x7F: goto yy441
;
6057 case '\\': goto yy148
;
6061 #line 449 "src/parser.re"
6062 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6063 #line 6064 "src/parser.c"
6066 yych
= *(mrk
= ++cur
);
6069 case 'l': goto yy499
;
6074 yych
= *(mrk
= ++cur
);
6077 case 'l': goto yy501
;
6082 yych
= *(mrk
= ++cur
);
6085 case 'c': goto yy502
;
6090 yych
= *(mrk
= ++cur
);
6155 case 0x7F: goto yy446
;
6156 case '\\': goto yy148
;
6160 #line 453 "src/parser.re"
6161 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6162 #line 6163 "src/parser.c"
6165 yych
= *(mrk
= ++cur
);
6230 case 0x7F: goto yy448
;
6232 case 'd': goto yy503
;
6233 case '\\': goto yy148
;
6237 #line 416 "src/parser.re"
6238 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6239 #line 6240 "src/parser.c"
6242 yych
= *(mrk
= ++cur
);
6245 case 'a': goto yy505
;
6250 yych
= *(mrk
= ++cur
);
6253 case 'o': goto yy506
;
6258 yych
= *(mrk
= ++cur
);
6323 case 0x7F: goto yy452
;
6324 case '\\': goto yy148
;
6328 #line 412 "src/parser.re"
6329 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6330 #line 6331 "src/parser.c"
6333 yych
= *(mrk
= ++cur
);
6336 case 'e': goto yy507
;
6341 yych
= *(mrk
= ++cur
);
6406 case 0x7F: goto yy455
;
6407 case '\\': goto yy148
;
6411 #line 446 "src/parser.re"
6412 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6413 #line 6414 "src/parser.c"
6416 yych
= *(mrk
= ++cur
);
6481 case 0x7F: goto yy457
;
6482 case '\\': goto yy148
;
6486 #line 430 "src/parser.re"
6487 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6488 #line 6489 "src/parser.c"
6491 yych
= *(mrk
= ++cur
);
6556 case 0x7F: goto yy459
;
6557 case '\\': goto yy148
;
6561 #line 450 "src/parser.re"
6562 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6563 #line 6564 "src/parser.c"
6566 yych
= *(mrk
= ++cur
);
6569 case 'l': goto yy509
;
6574 yych
= *(mrk
= ++cur
);
6577 case 's': goto yy511
;
6582 yych
= *(mrk
= ++cur
);
6585 case 's': goto yy512
;
6590 yych
= *(mrk
= ++cur
);
6655 case 0x7F: goto yy464
;
6656 case '\\': goto yy148
;
6660 #line 439 "src/parser.re"
6661 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6662 #line 6663 "src/parser.c"
6665 yych
= *(mrk
= ++cur
);
6730 case 0x7F: goto yy466
;
6731 case '\\': goto yy148
;
6735 #line 432 "src/parser.re"
6736 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6737 #line 6738 "src/parser.c"
6740 yych
= *(mrk
= ++cur
);
6805 case 0x7F: goto yy468
;
6806 case '\\': goto yy148
;
6810 #line 428 "src/parser.re"
6811 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6812 #line 6813 "src/parser.c"
6815 yych
= *(mrk
= ++cur
);
6880 case 0x7F: goto yy470
;
6881 case '\\': goto yy148
;
6885 #line 443 "src/parser.re"
6886 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6887 #line 6888 "src/parser.c"
6890 yych
= *(mrk
= ++cur
);
6955 case 0x7F: goto yy472
;
6956 case '\\': goto yy148
;
6960 #line 444 "src/parser.re"
6961 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6962 #line 6963 "src/parser.c"
6965 yych
= *(mrk
= ++cur
);
6968 case 'a': goto yy513
;
6973 yych
= *(mrk
= ++cur
);
6976 case 'l': goto yy514
;
6981 yych
= *(mrk
= ++cur
);
6984 case 'a': goto yy516
;
6989 yych
= *(mrk
= ++cur
);
7054 case 0x7F: goto yy477
;
7055 case '\\': goto yy148
;
7059 #line 457 "src/parser.re"
7060 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7061 #line 7062 "src/parser.c"
7064 yych
= *(mrk
= ++cur
);
7067 case 'e': goto yy517
;
7072 yych
= *(mrk
= ++cur
);
7075 case 'i': goto yy518
;
7080 yych
= *(mrk
= ++cur
);
7083 case 'g': goto yy519
;
7088 yych
= *(mrk
= ++cur
);
7090 case '_': goto yy521
;
7095 yych
= *(mrk
= ++cur
);
7097 case 'i': goto yy523
;
7102 yych
= *(mrk
= ++cur
);
7104 case 'n': goto yy524
;
7109 yych
= *(mrk
= ++cur
);
7111 case 'n': goto yy525
;
7116 yych
= *(mrk
= ++cur
);
7118 case 'r': goto yy526
;
7123 yych
= *(mrk
= ++cur
);
7188 case 0x7F: goto yy487
;
7189 case '\\': goto yy148
;
7193 #line 407 "src/parser.re"
7194 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7195 #line 7196 "src/parser.c"
7198 yych
= *(mrk
= ++cur
);
7263 case 0x7F: goto yy489
;
7264 case '\\': goto yy148
;
7265 default: goto yy527
;
7268 #line 386 "src/parser.re"
7269 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7270 #line 7271 "src/parser.c"
7273 yych
= *(mrk
= ++cur
);
7338 case 0x7F: goto yy491
;
7339 case '\\': goto yy148
;
7343 #line 409 "src/parser.re"
7344 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7345 #line 7346 "src/parser.c"
7348 yych
= *(mrk
= ++cur
);
7413 case 0x7F: goto yy493
;
7414 case '\\': goto yy148
;
7418 #line 393 "src/parser.re"
7419 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7420 #line 7421 "src/parser.c"
7423 yych
= *(mrk
= ++cur
);
7488 case 0x7F: goto yy495
;
7489 case '\\': goto yy148
;
7493 #line 396 "src/parser.re"
7494 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7495 #line 7496 "src/parser.c"
7498 yych
= *(mrk
= ++cur
);
7500 case 'f': goto yy529
;
7505 yych
= *(mrk
= ++cur
);
7507 case 'e': goto yy531
;
7512 yych
= *(mrk
= ++cur
);
7514 case 'l': goto yy532
;
7519 yych
= *(mrk
= ++cur
);
7584 case 0x7F: goto yy500
;
7585 case '\\': goto yy148
;
7589 #line 448 "src/parser.re"
7590 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7591 #line 7592 "src/parser.c"
7594 yych
= *(mrk
= ++cur
);
7597 case 'e': goto yy533
;
7602 yych
= *(mrk
= ++cur
);
7605 case 'k': goto yy535
;
7610 yych
= *(mrk
= ++cur
);
7675 case 0x7F: goto yy504
;
7676 case '\\': goto yy148
;
7680 #line 417 "src/parser.re"
7681 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7682 #line 7683 "src/parser.c"
7685 yych
= *(mrk
= ++cur
);
7688 case 'l': goto yy537
;
7693 yych
= *(mrk
= ++cur
);
7696 case 'n': goto yy539
;
7701 yych
= *(mrk
= ++cur
);
7766 case 0x7F: goto yy508
;
7767 case '\\': goto yy148
;
7768 case '_': goto yy541
;
7772 #line 421 "src/parser.re"
7773 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7774 #line 7775 "src/parser.c"
7777 yych
= *(mrk
= ++cur
);
7842 case 0x7F: goto yy510
;
7843 case '\\': goto yy148
;
7847 #line 445 "src/parser.re"
7848 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7849 #line 7850 "src/parser.c"
7852 yych
= *(mrk
= ++cur
);
7855 case 's': goto yy542
;
7860 yych
= *(mrk
= ++cur
);
7863 case 'e': goto yy543
;
7868 yych
= *(mrk
= ++cur
);
7871 case 'y': goto yy544
;
7876 yych
= *(mrk
= ++cur
);
7941 case 0x7F: goto yy515
;
7942 case '\\': goto yy148
;
7946 #line 459 "src/parser.re"
7947 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7948 #line 7949 "src/parser.c"
7951 yych
= *(mrk
= ++cur
);
7954 case 't': goto yy546
;
7959 yych
= *(mrk
= ++cur
);
7962 case 'c': goto yy548
;
7967 yych
= *(mrk
= ++cur
);
7970 case 'n': goto yy549
;
7975 yych
= *(mrk
= ++cur
);
8040 case 0x7F: goto yy520
;
8041 case '\\': goto yy148
;
8045 #line 419 "src/parser.re"
8046 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8047 #line 8048 "src/parser.c"
8050 yych
= *(mrk
= ++cur
);
8115 case 0x7F: goto yy522
;
8116 case '\\': goto yy148
;
8120 #line 391 "src/parser.re"
8121 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8122 #line 8123 "src/parser.c"
8125 yych
= *(mrk
= ++cur
);
8127 case 'b': goto yy550
;
8132 yych
= *(mrk
= ++cur
);
8134 case 's': goto yy551
;
8139 yych
= *(mrk
= ++cur
);
8141 case 'e': goto yy552
;
8146 yych
= *(mrk
= ++cur
);
8148 case 'i': goto yy554
;
8154 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8220 case 0x7F: goto yy55
;
8221 case '\\': goto yy148
;
8222 case 'o': goto yy555
;
8223 default: goto yy527
;
8227 yych
= *(mrk
= ++cur
);
8292 case 0x7F: goto yy530
;
8293 case '\\': goto yy148
;
8297 #line 395 "src/parser.re"
8298 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8299 #line 8300 "src/parser.c"
8302 yych
= *(mrk
= ++cur
);
8304 case 'd': goto yy557
;
8309 yych
= *(mrk
= ++cur
);
8311 case 'e': goto yy559
;
8316 yych
= *(mrk
= ++cur
);
8381 case 0x7F: goto yy534
;
8382 case '\\': goto yy148
;
8386 #line 427 "src/parser.re"
8387 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8388 #line 8389 "src/parser.c"
8391 yych
= *(mrk
= ++cur
);
8456 case 0x7F: goto yy536
;
8457 case '\\': goto yy148
;
8461 #line 431 "src/parser.re"
8462 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8463 #line 8464 "src/parser.c"
8466 yych
= *(mrk
= ++cur
);
8531 case 0x7F: goto yy538
;
8532 case '\\': goto yy148
;
8536 #line 447 "src/parser.re"
8537 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8538 #line 8539 "src/parser.c"
8541 yych
= *(mrk
= ++cur
);
8606 case 0x7F: goto yy540
;
8607 case '\\': goto yy148
;
8611 #line 433 "src/parser.re"
8612 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8613 #line 8614 "src/parser.c"
8616 yych
= *(mrk
= ++cur
);
8619 case 'n': goto yy561
;
8624 yych
= *(mrk
= ++cur
);
8627 case 'e': goto yy562
;
8632 yych
= *(mrk
= ++cur
);
8635 case 'r': goto yy563
;
8640 yych
= *(mrk
= ++cur
);
8705 case 0x7F: goto yy545
;
8706 case '\\': goto yy148
;
8710 #line 455 "src/parser.re"
8711 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8712 #line 8713 "src/parser.c"
8715 yych
= *(mrk
= ++cur
);
8780 case 0x7F: goto yy547
;
8781 case '\\': goto yy148
;
8785 #line 458 "src/parser.re"
8786 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8787 #line 8788 "src/parser.c"
8790 yych
= *(mrk
= ++cur
);
8793 case 't': goto yy564
;
8798 yych
= *(mrk
= ++cur
);
8801 case 'g': goto yy566
;
8806 yych
= *(mrk
= ++cur
);
8808 case 'u': goto yy568
;
8813 yych
= *(mrk
= ++cur
);
8815 case 'i': goto yy569
;
8820 yych
= *(mrk
= ++cur
);
8885 case 0x7F: goto yy553
;
8886 case '\\': goto yy148
;
8890 #line 388 "src/parser.re"
8891 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8892 #line 8893 "src/parser.c"
8895 yych
= *(mrk
= ++cur
);
8897 case 'c': goto yy570
;
8903 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8969 case 0x7F: goto yy55
;
8970 case '\\': goto yy148
;
8971 case 'n': goto yy571
;
8972 case 'o': goto yy555
;
8973 default: goto yy527
;
8977 yych
= *(mrk
= ++cur
);
9042 case 0x7F: goto yy558
;
9043 case '\\': goto yy148
;
9047 #line 408 "src/parser.re"
9048 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9049 #line 9050 "src/parser.c"
9052 yych
= *(mrk
= ++cur
);
9117 case 0x7F: goto yy560
;
9118 case '\\': goto yy148
;
9122 #line 392 "src/parser.re"
9123 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9124 #line 9125 "src/parser.c"
9127 yych
= *(mrk
= ++cur
);
9130 case 'e': goto yy572
;
9135 yych
= *(mrk
= ++cur
);
9138 case 'r': goto yy573
;
9143 yych
= *(mrk
= ++cur
);
9146 case 't': goto yy574
;
9151 yych
= *(mrk
= ++cur
);
9216 case 0x7F: goto yy565
;
9217 case '\\': goto yy148
;
9221 #line 454 "src/parser.re"
9222 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9223 #line 9224 "src/parser.c"
9226 yych
= *(mrk
= ++cur
);
9291 case 0x7F: goto yy567
;
9292 case '\\': goto yy148
;
9296 #line 456 "src/parser.re"
9297 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9298 #line 9299 "src/parser.c"
9301 yych
= *(mrk
= ++cur
);
9303 case 't': goto yy576
;
9308 yych
= *(mrk
= ++cur
);
9310 case 'o': goto yy577
;
9315 yych
= *(mrk
= ++cur
);
9317 case 't': goto yy578
;
9323 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9389 case 0x7F: goto yy55
;
9390 case '\\': goto yy148
;
9391 case 'c': goto yy580
;
9392 case 'o': goto yy555
;
9393 default: goto yy527
;
9397 yych
= *(mrk
= ++cur
);
9400 case 'x': goto yy581
;
9405 yych
= *(mrk
= ++cur
);
9408 case 't': goto yy582
;
9413 yych
= *(mrk
= ++cur
);
9478 case 0x7F: goto yy575
;
9479 case '\\': goto yy148
;
9483 #line 437 "src/parser.re"
9484 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9485 #line 9486 "src/parser.c"
9488 yych
= *(mrk
= ++cur
);
9490 case 'e': goto yy584
;
9495 yych
= *(mrk
= ++cur
);
9497 case 'n': goto yy585
;
9502 yych
= *(mrk
= ++cur
);
9567 case 0x7F: goto yy579
;
9568 case '\\': goto yy148
;
9572 #line 389 "src/parser.re"
9573 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9574 #line 9575 "src/parser.c"
9578 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9644 case 0x7F: goto yy55
;
9645 case '\\': goto yy148
;
9646 case 'e': goto yy586
;
9647 case 'o': goto yy555
;
9648 default: goto yy527
;
9652 yych
= *(mrk
= ++cur
);
9655 case 't': goto yy588
;
9660 yych
= *(mrk
= ++cur
);
9725 case 0x7F: goto yy583
;
9726 case '\\': goto yy148
;
9730 #line 438 "src/parser.re"
9731 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9732 #line 9733 "src/parser.c"
9735 yych
= *(mrk
= ++cur
);
9737 case '_': goto yy590
;
9742 yych
= *(mrk
= ++cur
);
9744 case '_': goto yy591
;
9750 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9816 case 0x7F: goto yy587
;
9817 case '\\': goto yy148
;
9818 case 'o': goto yy555
;
9819 default: goto yy527
;
9822 #line 387 "src/parser.re"
9823 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9824 #line 9825 "src/parser.c"
9827 yych
= *(mrk
= ++cur
);
9892 case 0x7F: goto yy589
;
9893 case '\\': goto yy148
;
9897 #line 422 "src/parser.re"
9898 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9899 #line 9900 "src/parser.c"
9902 yych
= *(mrk
= ++cur
);
9904 case '_': goto yy592
;
9909 yych
= *(mrk
= ++cur
);
9911 case '_': goto yy593
;
9916 yych
= *(mrk
= ++cur
);
9920 case ' ': goto yy595
;
9921 case '(': goto yy597
;
9926 yych
= *(mrk
= ++cur
);
9991 case 0x7F: goto yy594
;
9992 case '\\': goto yy148
;
9996 #line 390 "src/parser.re"
9997 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
9998 #line 9999 "src/parser.c"
10001 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10006 case ' ': goto yy595
;
10007 case '(': goto yy597
;
10008 default: goto yy114
;
10013 case '(': goto yy598
;
10014 default: goto yy114
;
10018 #line 464 "src/parser.re"
10019 { parens
= 2; goto cpp_attribute
; }
10020 #line 10021 "src/parser.c"
10022 #line 470 "src/parser.re"
10027 #line 10028 "src/parser.c"
10029 unsigned char yych
;
10030 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10034 case '\r': goto yy604
;
10035 case '\'': goto yy606
;
10036 case '\\': goto yy608
;
10037 default: goto yy602
;
10041 #line 488 "src/parser.re"
10042 { escaped
= false; goto character
; }
10043 #line 10044 "src/parser.c"
10046 #line 475 "src/parser.re"
10047 { NEWLINE(); goto character
; }
10048 #line 10049 "src/parser.c"
10051 #line 477 "src/parser.re"
10058 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10060 token
->flags
= char_width
;
10063 #line 10064 "src/parser.c"
10066 #line 476 "src/parser.re"
10067 { escaped
= !escaped
; goto character
; }
10068 #line 10069 "src/parser.c"
10070 #line 490 "src/parser.re"
10075 #line 10076 "src/parser.c"
10077 unsigned char yych
;
10078 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10082 case '\r': goto yy614
;
10083 case '"': goto yy616
;
10084 case '\\': goto yy618
;
10085 default: goto yy612
;
10089 #line 508 "src/parser.re"
10090 { escaped
= false; goto string
; }
10091 #line 10092 "src/parser.c"
10094 #line 495 "src/parser.re"
10095 { NEWLINE(); goto string
; }
10096 #line 10097 "src/parser.c"
10099 #line 497 "src/parser.re"
10106 NEWTOKEN(PSI_T_QUOTED_STRING
);
10108 token
->flags
= char_width
;
10111 #line 10112 "src/parser.c"
10114 #line 496 "src/parser.re"
10115 { escaped
= !escaped
; goto string
; }
10116 #line 10117 "src/parser.c"
10118 #line 510 "src/parser.re"
10123 #line 10124 "src/parser.c"
10125 unsigned char yych
;
10126 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10130 case '\r': goto yy624
;
10131 case '*': goto yy626
;
10132 default: goto yy622
;
10137 #line 517 "src/parser.re"
10139 #line 10140 "src/parser.c"
10142 #line 515 "src/parser.re"
10143 { NEWLINE(); goto comment
; }
10144 #line 10145 "src/parser.c"
10148 case '/': goto yy627
;
10149 default: goto yy623
;
10153 #line 516 "src/parser.re"
10154 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10155 #line 10156 "src/parser.c"
10157 #line 519 "src/parser.re"
10162 #line 10163 "src/parser.c"
10164 unsigned char yych
;
10165 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10169 case '\r': goto yy633
;
10170 default: goto yy631
;
10174 #line 525 "src/parser.re"
10175 { goto comment_sl
; }
10176 #line 10177 "src/parser.c"
10179 #line 524 "src/parser.re"
10180 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10181 #line 10182 "src/parser.c"
10183 #line 527 "src/parser.re"
10189 #line 10190 "src/parser.c"
10191 unsigned char yych
;
10192 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10196 case '\r': goto yy639
;
10197 case '(': goto yy641
;
10198 case ')': goto yy643
;
10199 default: goto yy637
;
10203 #line 536 "src/parser.re"
10204 { goto cpp_attribute
; }
10205 #line 10206 "src/parser.c"
10208 #line 535 "src/parser.re"
10209 { NEWLINE(); goto cpp_attribute
; }
10210 #line 10211 "src/parser.c"
10213 #line 533 "src/parser.re"
10214 { ++parens
; goto cpp_attribute
; }
10215 #line 10216 "src/parser.c"
10218 #line 534 "src/parser.re"
10219 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10220 #line 10221 "src/parser.c"
10222 #line 538 "src/parser.re"
10226 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10227 token
->type
, token
->text
->len
, token
->text
->val
, tok
- eol
+ 1);
10228 psi_plist_free(tokens
);
10233 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);