50bfa31d022e6ee8b4edf8c9b168f7278dbf99c6
1 /* Generated by re2c 1.1.1 on Fri Nov 2 10:19:25 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
= pemalloc(sizeof(*P
), 1);
49 memset(P
, 0, sizeof(*P
));
51 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
53 P
->preproc
= psi_cpp_init(P
);
58 struct psi_parser_input
*psi_parser_open_file(struct psi_parser
*P
, const char *filename
, bool report_errors
)
62 struct psi_parser_input
*fb
;
64 if (stat(filename
, &sb
)) {
66 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
67 "Could not stat '%s': %s",
68 filename
, strerror(errno
));
73 if (!(fb
= pemalloc(sizeof(*fb
) + sb
.st_size
+ YYMAXFILL
, 1))) {
75 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
76 "Could not allocate %zu bytes for reading '%s': %s",
77 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
82 if (!(fp
= fopen(filename
, "r"))) {
85 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
86 "Could not open '%s' for reading: %s",
87 filename
, strerror(errno
));
92 if (sb
.st_size
!= fread(fb
->buffer
, 1, sb
.st_size
, fp
)) {
96 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
97 "Could not read %zu bytes from '%s': %s",
98 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
103 fb
->length
= sb
.st_size
;
104 fb
->file
= zend_string_init_interned(filename
, strlen(filename
), 1);
109 struct psi_parser_input
*psi_parser_open_string(struct psi_parser
*P
, const char *string
, size_t length
)
111 struct psi_parser_input
*sb
;
113 if (!(sb
= pemalloc(sizeof(*sb
) + length
+ YYMAXFILL
, 1))) {
114 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
115 "Could not allocate %zu bytes: %s",
116 length
+ YYMAXFILL
, strerror(errno
));
120 memcpy(sb
->buffer
, string
, length
);
121 memset(sb
->buffer
+ length
, 0, YYMAXFILL
);
124 sb
->file
= zend_string_init_interned("<stdin>", strlen("<stdin>"), 1);
129 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
131 if (psi_cpp_process(P
->preproc
, tokens
)) {
137 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
139 if (psi_plist_count(tokens
)) {
140 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
145 void psi_parser_postprocess(struct psi_parser
*P
)
149 struct psi_validate_scope scope
= {0};
151 psi_validate_scope_ctor(&scope
);
152 scope
.defs
= &P
->preproc
->defs
;
155 P
->flags
|= PSI_SILENT
;
157 /* register const macros */
158 ZEND_HASH_FOREACH_STR_KEY_PTR(&P
->preproc
->defs
, name
, scope
.macro
)
160 if (scope
.macro
->sig
) {
161 } else if (scope
.macro
->exp
) {
162 if (psi_num_exp_validate(PSI_DATA(P
), scope
.macro
->exp
, &scope
)) {
163 struct psi_impl_type
*type
;
164 struct psi_impl_def_val
*def
;
165 struct psi_const
*cnst
;
166 struct psi_num_exp
*num
;
167 smart_str ns_name
= {0};
168 zend_string
*name_str
, *type_str
;
170 smart_str_appendl_ex(&ns_name
, ZEND_STRL("psi\\"), 1);
171 smart_str_append_ex(&ns_name
, name
, 1);
172 name_str
= smart_str_extract(&ns_name
);
173 type_str
= zend_string_init_interned(ZEND_STRL("<eval number>"), 1);
175 num
= psi_num_exp_copy(scope
.macro
->exp
);
176 def
= psi_impl_def_val_init(PSI_T_NUMBER
, num
);
177 type
= psi_impl_type_init(PSI_T_NUMBER
, type_str
);
178 cnst
= psi_const_init(type
, name_str
, def
);
179 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
180 zend_string_release(name_str
);
181 zend_string_release(type_str
);
184 if (psi_plist_count(scope
.macro
->tokens
) == 1) {
187 if (psi_plist_get(scope
.macro
->tokens
, 0, &t
)) {
188 if (t
->type
== PSI_T_QUOTED_STRING
) {
189 struct psi_impl_type
*type
;
190 struct psi_impl_def_val
*def
;
191 struct psi_const
*cnst
;
192 smart_str ns_name
= {0};
193 zend_string
*name_str
, *type_str
;
195 smart_str_appendl_ex(&ns_name
, ZEND_STRL("psi\\"), 1);
196 smart_str_append_ex(&ns_name
, name
, 1);
197 name_str
= smart_str_extract(&ns_name
);
198 type_str
= zend_string_init_interned(ZEND_STRL("string"), 1);
200 type
= psi_impl_type_init(PSI_T_STRING
, type_str
);
201 def
= psi_impl_def_val_init(PSI_T_QUOTED_STRING
, t
->text
);
202 cnst
= psi_const_init(type
, name_str
, def
);
203 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
204 zend_string_release(name_str
);
205 zend_string_release(type_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 if (t == PSI_T_COMMENT || t == PSI_T_WHITESPACE) { \
266 token = psi_token_init(t, "", 0, tok - eol + 1, I->lines, I->file); \
268 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
270 tokens = psi_plist_add(tokens, &token); \
271 if (P->flags & PSI_DEBUG) { \
272 fprintf(stderr, "PSI< "); \
273 psi_token_dump(2, token); \
279 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
281 struct psi_plist
*tokens
;
282 struct psi_token
*token
;
283 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
288 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
->val
);
290 tok
= mrk
= eol
= cur
= I
->buffer
;
291 lim
= I
->buffer
+ I
->length
;
293 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
303 #line 304 "src/parser.c"
306 unsigned int yyaccept
= 0;
307 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
352 case '\'': goto yy20
;
403 case '\\': goto yy77
;
421 case '}': goto yy100
;
422 case '~': goto yy102
;
428 #line 469 "src/parser.re"
429 { NEWTOKEN(-2); goto error
; }
430 #line 431 "src/parser.c"
433 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
442 #line 468 "src/parser.re"
443 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
444 #line 445 "src/parser.c"
447 #line 467 "src/parser.re"
448 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
449 #line 450 "src/parser.c"
453 case '=': goto yy104
;
457 #line 370 "src/parser.re"
458 { NEWTOKEN(PSI_T_NOT
); goto start
; }
459 #line 460 "src/parser.c"
462 #line 343 "src/parser.re"
463 { escaped
= false; tok
+= 1; goto string
; }
464 #line 465 "src/parser.c"
468 case '#': goto yy106
;
472 #line 353 "src/parser.re"
473 { NEWTOKEN(PSI_T_HASH
); goto start
; }
474 #line 475 "src/parser.c"
547 #line 371 "src/parser.re"
548 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
549 #line 550 "src/parser.c"
553 case '&': goto yy111
;
557 #line 372 "src/parser.re"
558 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
559 #line 560 "src/parser.c"
562 #line 342 "src/parser.re"
563 { escaped
= false; tok
+= 1; goto character
; }
564 #line 565 "src/parser.c"
567 #line 354 "src/parser.re"
568 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
569 #line 570 "src/parser.c"
572 #line 355 "src/parser.re"
573 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
574 #line 575 "src/parser.c"
577 #line 368 "src/parser.re"
578 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
579 #line 580 "src/parser.c"
582 yych
= *(mrk
= ++cur
);
584 case '.': goto yy113
;
598 #line 373 "src/parser.re"
599 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
600 #line 601 "src/parser.c"
603 #line 357 "src/parser.re"
604 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
605 #line 606 "src/parser.c"
608 yych
= *(mrk
= ++cur
);
610 case '.': goto yy113
;
624 #line 374 "src/parser.re"
625 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
626 #line 627 "src/parser.c"
629 yych
= *(mrk
= ++cur
);
631 case '.': goto yy115
;
641 case '9': goto yy116
;
645 #line 385 "src/parser.re"
646 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
647 #line 648 "src/parser.c"
651 case '*': goto yy119
;
652 case '/': goto yy121
;
656 #line 375 "src/parser.re"
657 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
658 #line 659 "src/parser.c"
661 yych
= *(mrk
= ++cur
);
663 case '.': goto yy123
;
665 case 'e': goto yy127
;
667 case 'x': goto yy132
;
671 #line 329 "src/parser.re"
672 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
673 #line 674 "src/parser.c"
677 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
680 case '.': goto yy123
;
692 case 'e': goto yy127
;
694 case 'l': goto yy128
;
696 case 'u': goto yy130
;
701 #line 358 "src/parser.re"
702 { NEWTOKEN(PSI_T_COLON
); goto start
; }
703 #line 704 "src/parser.c"
706 #line 356 "src/parser.re"
707 { NEWTOKEN(PSI_T_EOS
); goto start
; }
708 #line 709 "src/parser.c"
711 yych
= *(mrk
= ++cur
);
778 case 'z': goto yy133
;
779 case '<': goto yy135
;
780 case '=': goto yy137
;
784 #line 383 "src/parser.re"
785 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
786 #line 787 "src/parser.c"
790 case '=': goto yy139
;
794 #line 367 "src/parser.re"
795 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
796 #line 797 "src/parser.c"
800 case '=': goto yy141
;
801 case '>': goto yy143
;
805 #line 384 "src/parser.re"
806 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
807 #line 808 "src/parser.c"
810 #line 387 "src/parser.re"
811 { NEWTOKEN(PSI_T_IIF
); goto start
; }
812 #line 813 "src/parser.c"
815 yych
= *(mrk
= ++cur
);
818 case 'r': goto yy145
;
820 case 's': goto yy146
;
824 #line 462 "src/parser.re"
825 { NEWTOKEN(PSI_T_NAME
); goto start
; }
826 #line 827 "src/parser.c"
829 yych
= *(mrk
= ++cur
);
832 case 'o': goto yy149
;
837 yych
= *(mrk
= ++cur
);
840 case 'a': goto yy150
;
842 case 'o': goto yy151
;
847 yych
= *(mrk
= ++cur
);
850 case 'e': goto yy152
;
855 yych
= *(mrk
= ++cur
);
858 case 'l': goto yy153
;
860 case 'n': goto yy154
;
862 case 'r': goto yy155
;
867 yych
= *(mrk
= ++cur
);
870 case 'a': goto yy156
;
872 case 'l': goto yy157
;
874 case 'r': goto yy158
;
876 case 'u': goto yy159
;
882 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
949 case 0x7F: goto yy55
;
950 case '\\': goto yy148
;
955 yych
= *(mrk
= ++cur
);
958 case 'f': goto yy160
;
960 case 'n': goto yy162
;
965 yych
= *(mrk
= ++cur
);
968 case '\'': goto yy163
;
970 case 'e': goto yy165
;
972 case 'i': goto yy166
;
977 yych
= *(mrk
= ++cur
);
980 case 'i': goto yy167
;
985 yych
= *(mrk
= ++cur
);
988 case 'u': goto yy168
;
993 yych
= *(mrk
= ++cur
);
996 case 'b': goto yy169
;
1001 yych
= *(mrk
= ++cur
);
1004 case 'a': goto yy170
;
1006 case 'o': goto yy171
;
1008 case 'r': goto yy172
;
1013 yych
= *(mrk
= ++cur
);
1016 case 'e': goto yy173
;
1021 yych
= *(mrk
= ++cur
);
1024 case 'e': goto yy174
;
1026 case 't': goto yy175
;
1031 yych
= *(mrk
= ++cur
);
1034 case 'e': goto yy176
;
1036 case 'o': goto yy177
;
1038 case 'r': goto yy178
;
1043 yych
= *(mrk
= ++cur
);
1046 case '\'': goto yy179
;
1048 case 'n': goto yy181
;
1053 yych
= *(mrk
= ++cur
);
1056 case 'a': goto yy182
;
1061 yych
= *(mrk
= ++cur
);
1064 case 'v': goto yy183
;
1069 #line 361 "src/parser.re"
1070 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1071 #line 1072 "src/parser.c"
1149 case 0x7F: goto yy78
;
1150 default: goto yy184
;
1153 #line 376 "src/parser.re"
1154 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1155 #line 1156 "src/parser.c"
1158 #line 362 "src/parser.re"
1159 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1160 #line 1161 "src/parser.c"
1163 #line 378 "src/parser.re"
1164 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1165 #line 1166 "src/parser.c"
1168 yych
= *(mrk
= ++cur
);
1170 case '_': goto yy187
;
1175 yych
= *(mrk
= ++cur
);
1177 case 'O': goto yy149
;
1178 case 'o': goto yy188
;
1183 yych
= *(mrk
= ++cur
);
1186 case 'a': goto yy150
;
1187 case 'O': goto yy151
;
1188 case 'h': goto yy189
;
1189 case 'o': goto yy190
;
1194 yych
= *(mrk
= ++cur
);
1197 case 'e': goto yy152
;
1198 case 'o': goto yy191
;
1203 yych
= *(mrk
= ++cur
);
1206 case 'l': goto yy153
;
1207 case 'N': goto yy154
;
1209 case 'r': goto yy155
;
1210 case 'n': goto yy192
;
1215 yych
= *(mrk
= ++cur
);
1218 case 'a': goto yy156
;
1219 case 'L': goto yy157
;
1221 case 'r': goto yy158
;
1223 case 'u': goto yy159
;
1224 case 'l': goto yy193
;
1229 yych
= *(mrk
= ++cur
);
1232 case 'f': goto yy160
;
1233 case 'N': goto yy162
;
1234 case 'n': goto yy194
;
1239 yych
= *(mrk
= ++cur
);
1242 case 'e': goto yy165
;
1243 case 'I': goto yy166
;
1244 case 'i': goto yy195
;
1245 case 'o': goto yy196
;
1250 yych
= *(mrk
= ++cur
);
1253 case 'a': goto yy170
;
1255 case 'o': goto yy171
;
1256 case 'R': goto yy172
;
1257 case 'r': goto yy197
;
1262 yych
= *(mrk
= ++cur
);
1265 case 'e': goto yy174
;
1266 case 'T': goto yy175
;
1267 case 'h': goto yy198
;
1268 case 'i': goto yy199
;
1269 case 't': goto yy200
;
1274 yych
= *(mrk
= ++cur
);
1277 case 'e': goto yy176
;
1279 case 'o': goto yy177
;
1281 case 'r': goto yy178
;
1282 case 'y': goto yy201
;
1287 yych
= *(mrk
= ++cur
);
1290 case '\'': goto yy202
;
1291 case '8': goto yy204
;
1292 case 'N': goto yy181
;
1293 case 'n': goto yy205
;
1298 yych
= *(mrk
= ++cur
);
1300 case 'o': goto yy206
;
1305 #line 359 "src/parser.re"
1306 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1307 #line 1308 "src/parser.c"
1311 case '|': goto yy207
;
1315 #line 377 "src/parser.re"
1316 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1317 #line 1318 "src/parser.c"
1320 #line 360 "src/parser.re"
1321 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1322 #line 1323 "src/parser.c"
1325 #line 369 "src/parser.re"
1326 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1327 #line 1328 "src/parser.c"
1330 #line 363 "src/parser.re"
1331 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1332 #line 1333 "src/parser.c"
1335 #line 352 "src/parser.re"
1336 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1337 #line 1338 "src/parser.c"
1340 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1407 case 0x7F: goto yy110
;
1408 default: goto yy108
;
1411 #line 464 "src/parser.re"
1412 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1413 #line 1414 "src/parser.c"
1416 #line 365 "src/parser.re"
1417 { NEWTOKEN(PSI_T_AND
); goto start
; }
1418 #line 1419 "src/parser.c"
1431 case '9': goto yy116
;
1432 default: goto yy114
;
1447 case 10: goto yy186
;
1448 case 11: goto yy242
;
1449 case 12: goto yy244
;
1450 case 13: goto yy253
;
1451 case 14: goto yy273
;
1452 case 15: goto yy305
;
1453 case 16: goto yy307
;
1454 case 17: goto yy313
;
1455 case 18: goto yy321
;
1456 case 19: goto yy333
;
1457 case 20: goto yy341
;
1458 case 21: goto yy345
;
1459 case 22: goto yy352
;
1460 case 23: goto yy354
;
1461 case 24: goto yy358
;
1462 case 25: goto yy361
;
1463 case 26: goto yy363
;
1464 case 27: goto yy373
;
1465 case 28: goto yy376
;
1466 case 29: goto yy383
;
1467 case 30: goto yy386
;
1468 case 31: goto yy388
;
1469 case 32: goto yy390
;
1470 case 33: goto yy394
;
1471 case 34: goto yy399
;
1472 case 35: goto yy417
;
1473 case 36: goto yy425
;
1474 case 37: goto yy428
;
1475 case 38: goto yy431
;
1476 case 39: goto yy437
;
1477 case 40: goto yy441
;
1478 case 41: goto yy446
;
1479 case 42: goto yy448
;
1480 case 43: goto yy452
;
1481 case 44: goto yy455
;
1482 case 45: goto yy457
;
1483 case 46: goto yy459
;
1484 case 47: goto yy464
;
1485 case 48: goto yy466
;
1486 case 49: goto yy468
;
1487 case 50: goto yy470
;
1488 case 51: goto yy472
;
1489 case 52: goto yy477
;
1490 case 53: goto yy487
;
1491 case 54: goto yy489
;
1492 case 55: goto yy491
;
1493 case 56: goto yy493
;
1494 case 57: goto yy495
;
1495 case 58: goto yy500
;
1496 case 59: goto yy504
;
1497 case 60: goto yy508
;
1498 case 61: goto yy510
;
1499 case 62: goto yy515
;
1500 case 63: goto yy520
;
1501 case 64: goto yy522
;
1502 case 65: goto yy530
;
1503 case 66: goto yy534
;
1504 case 67: goto yy536
;
1505 case 68: goto yy538
;
1506 case 69: goto yy540
;
1507 case 70: goto yy545
;
1508 case 71: goto yy547
;
1509 case 72: goto yy553
;
1510 case 73: goto yy558
;
1511 case 74: goto yy560
;
1512 case 75: goto yy565
;
1513 case 76: goto yy567
;
1514 case 77: goto yy575
;
1515 case 78: goto yy579
;
1516 case 79: goto yy583
;
1517 case 80: goto yy587
;
1518 case 81: goto yy589
;
1519 default: goto yy594
;
1524 case '.': goto yy209
;
1525 default: goto yy114
;
1530 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1542 case '9': goto yy116
;
1544 case 'd': goto yy211
;
1546 case 'f': goto yy212
;
1548 case 'l': goto yy214
;
1549 default: goto yy118
;
1552 #line 335 "src/parser.re"
1553 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1554 #line 1555 "src/parser.c"
1557 #line 349 "src/parser.re"
1559 #line 1560 "src/parser.c"
1562 #line 350 "src/parser.re"
1563 { goto comment_sl
; }
1564 #line 1565 "src/parser.c"
1568 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1580 case '9': goto yy123
;
1582 case 'd': goto yy211
;
1584 case 'e': goto yy127
;
1586 case 'f': goto yy212
;
1588 case 'l': goto yy214
;
1589 default: goto yy118
;
1593 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1604 case '7': goto yy125
;
1606 case 'l': goto yy128
;
1608 case 'u': goto yy130
;
1615 case '-': goto yy113
;
1625 case '9': goto yy116
;
1626 default: goto yy114
;
1630 yych
= *(mrk
= ++cur
);
1633 case 'l': goto yy216
;
1635 case 'u': goto yy217
;
1636 default: goto yy129
;
1640 #line 331 "src/parser.re"
1641 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1642 #line 1643 "src/parser.c"
1647 case 'l': goto yy219
;
1648 default: goto yy131
;
1652 #line 330 "src/parser.re"
1653 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1654 #line 1655 "src/parser.c"
1679 case 'f': goto yy220
;
1680 default: goto yy114
;
1684 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1752 case 'z': goto yy133
;
1753 case '>': goto yy222
;
1754 default: goto yy114
;
1758 #line 379 "src/parser.re"
1759 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1760 #line 1761 "src/parser.c"
1763 #line 381 "src/parser.re"
1764 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1765 #line 1766 "src/parser.c"
1768 #line 364 "src/parser.re"
1769 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1770 #line 1771 "src/parser.c"
1773 #line 382 "src/parser.re"
1774 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1775 #line 1776 "src/parser.c"
1778 #line 380 "src/parser.re"
1779 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1780 #line 1781 "src/parser.c"
1783 yych
= *(mrk
= ++cur
);
1786 case 'r': goto yy224
;
1791 yych
= *(mrk
= ++cur
);
1856 case 0x7F: goto yy147
;
1857 case '\\': goto yy148
;
1861 #line 442 "src/parser.re"
1862 { NEWTOKEN(PSI_T_AS
); goto start
; }
1863 #line 1864 "src/parser.c"
1866 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1943 case 0x7F: goto yy114
;
1944 default: goto yy184
;
1948 yych
= *(mrk
= ++cur
);
1951 case 'o': goto yy225
;
1956 yych
= *(mrk
= ++cur
);
1959 case 'l': goto yy226
;
1964 yych
= *(mrk
= ++cur
);
1967 case 'u': goto yy227
;
1972 yych
= *(mrk
= ++cur
);
1975 case 'f': goto yy228
;
1980 yych
= *(mrk
= ++cur
);
1983 case 'i': goto yy229
;
1985 case 's': goto yy230
;
1990 yych
= *(mrk
= ++cur
);
1993 case 'd': goto yy231
;
1998 yych
= *(mrk
= ++cur
);
2001 case 'r': goto yy232
;
2006 yych
= *(mrk
= ++cur
);
2009 case 'l': goto yy233
;
2014 yych
= *(mrk
= ++cur
);
2017 case 'o': goto yy234
;
2022 yych
= *(mrk
= ++cur
);
2025 case 'e': goto yy235
;
2030 yych
= *(mrk
= ++cur
);
2033 case 'n': goto yy236
;
2038 yych
= *(mrk
= ++cur
);
2103 case 0x7F: goto yy161
;
2105 case 'd': goto yy237
;
2107 case 'n': goto yy238
;
2108 case '\\': goto yy148
;
2112 #line 412 "src/parser.re"
2113 { NEWTOKEN(PSI_T_IF
); goto start
; }
2114 #line 2115 "src/parser.c"
2117 yych
= *(mrk
= ++cur
);
2120 case 'c': goto yy239
;
2122 case 't': goto yy240
;
2128 #line 347 "src/parser.re"
2129 { char_width
= sizeof(wchar_t)/8; }
2130 #line 2131 "src/parser.c"
2133 yych
= *(mrk
= ++cur
);
2136 case 't': goto yy241
;
2141 yych
= *(mrk
= ++cur
);
2144 case 'b': goto yy243
;
2149 yych
= *(mrk
= ++cur
);
2152 case 'x': goto yy245
;
2157 yych
= *(mrk
= ++cur
);
2160 case 'l': goto yy246
;
2165 yych
= *(mrk
= ++cur
);
2168 case 'j': goto yy247
;
2173 yych
= *(mrk
= ++cur
);
2176 case 't': goto yy248
;
2181 yych
= *(mrk
= ++cur
);
2184 case 's': goto yy249
;
2189 yych
= *(mrk
= ++cur
);
2192 case 'e': goto yy250
;
2197 yych
= *(mrk
= ++cur
);
2200 case 't': goto yy251
;
2205 yych
= *(mrk
= ++cur
);
2208 case 't': goto yy252
;
2213 yych
= *(mrk
= ++cur
);
2216 case 'a': goto yy254
;
2218 case 'r': goto yy255
;
2223 yych
= *(mrk
= ++cur
);
2226 case 'm': goto yy256
;
2231 yych
= *(mrk
= ++cur
);
2233 case '_': goto yy257
;
2238 yych
= *(mrk
= ++cur
);
2241 case 'u': goto yy258
;
2247 #line 346 "src/parser.re"
2249 #line 2250 "src/parser.c"
2252 yych
= *(mrk
= ++cur
);
2255 case 'd': goto yy259
;
2260 yych
= *(mrk
= ++cur
);
2263 case 'r': goto yy260
;
2268 yych
= *(mrk
= ++cur
);
2271 case 'a': goto yy261
;
2277 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2343 case 0x7F: goto yy186
;
2344 case '\\': goto yy148
;
2345 default: goto yy184
;
2348 #line 463 "src/parser.re"
2349 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2350 #line 2351 "src/parser.c"
2353 yych
= *(mrk
= ++cur
);
2355 case 'a': goto yy262
;
2356 case 'e': goto yy263
;
2357 case 'i': goto yy264
;
2358 case 'r': goto yy265
;
2363 yych
= *(mrk
= ++cur
);
2365 case 'O': goto yy225
;
2366 case 'o': goto yy266
;
2371 yych
= *(mrk
= ++cur
);
2373 case 'a': goto yy267
;
2378 yych
= *(mrk
= ++cur
);
2381 case 'u': goto yy227
;
2382 case 'n': goto yy268
;
2387 yych
= *(mrk
= ++cur
);
2389 case 'u': goto yy269
;
2394 yych
= *(mrk
= ++cur
);
2397 case 'd': goto yy231
;
2398 case 'u': goto yy270
;
2403 yych
= *(mrk
= ++cur
);
2405 case 'O': goto yy234
;
2406 case 'o': goto yy271
;
2411 yych
= *(mrk
= ++cur
);
2414 case 'c': goto yy239
;
2415 case 'T': goto yy240
;
2416 case 't': goto yy272
;
2421 yych
= *(mrk
= ++cur
);
2424 case 'b': goto yy243
;
2425 case 'n': goto yy274
;
2430 yych
= *(mrk
= ++cur
);
2432 case 'n': goto yy275
;
2437 yych
= *(mrk
= ++cur
);
2440 case 'e': goto yy250
;
2441 case 'a': goto yy276
;
2446 yych
= *(mrk
= ++cur
);
2448 case 'o': goto yy277
;
2453 yych
= *(mrk
= ++cur
);
2455 case 'g': goto yy278
;
2456 case 'z': goto yy279
;
2461 yych
= *(mrk
= ++cur
);
2464 case 'a': goto yy254
;
2465 case 'R': goto yy255
;
2466 case 'r': goto yy280
;
2471 yych
= *(mrk
= ++cur
);
2473 case 'p': goto yy281
;
2479 #line 345 "src/parser.re"
2481 #line 2482 "src/parser.c"
2484 yych
= *(mrk
= ++cur
);
2486 case '"': goto yy282
;
2491 yych
= *(mrk
= ++cur
);
2494 case 'd': goto yy259
;
2495 case 'i': goto yy284
;
2496 case 's': goto yy285
;
2501 yych
= *(mrk
= ++cur
);
2503 case 'i': goto yy286
;
2504 case 'l': goto yy287
;
2509 #line 366 "src/parser.re"
2510 { NEWTOKEN(PSI_T_OR
); goto start
; }
2511 #line 2512 "src/parser.c"
2514 #line 386 "src/parser.re"
2515 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2516 #line 2517 "src/parser.c"
2521 case 'd': goto yy288
;
2523 case 'f': goto yy290
;
2525 case 'l': goto yy292
;
2526 default: goto yy114
;
2531 #line 336 "src/parser.re"
2532 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2533 #line 2534 "src/parser.c"
2537 #line 337 "src/parser.re"
2538 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2539 #line 2540 "src/parser.c"
2544 case 'u': goto yy294
;
2545 default: goto yy114
;
2551 #line 332 "src/parser.re"
2552 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2553 #line 2554 "src/parser.c"
2558 case 'l': goto yy294
;
2559 default: goto yy218
;
2564 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2567 case '.': goto yy296
;
2589 case 'f': goto yy220
;
2591 case 'l': goto yy128
;
2593 case 'p': goto yy127
;
2595 case 'u': goto yy130
;
2600 #line 465 "src/parser.re"
2601 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2602 #line 2603 "src/parser.c"
2605 yych
= *(mrk
= ++cur
);
2608 case 'a': goto yy298
;
2610 case 'v': goto yy299
;
2615 yych
= *(mrk
= ++cur
);
2618 case 'l': goto yy300
;
2623 yych
= *(mrk
= ++cur
);
2626 case 'l': goto yy301
;
2631 yych
= *(mrk
= ++cur
);
2634 case 'n': goto yy302
;
2639 yych
= *(mrk
= ++cur
);
2642 case 'i': goto yy303
;
2647 yych
= *(mrk
= ++cur
);
2650 case 'f': goto yy304
;
2655 yych
= *(mrk
= ++cur
);
2658 case 'e': goto yy306
;
2663 yych
= *(mrk
= ++cur
);
2666 case 'i': goto yy308
;
2671 yych
= *(mrk
= ++cur
);
2674 case 'o': goto yy309
;
2679 yych
= *(mrk
= ++cur
);
2682 case 's': goto yy310
;
2687 yych
= *(mrk
= ++cur
);
2690 case 'a': goto yy311
;
2695 yych
= *(mrk
= ++cur
);
2698 case 'e': goto yy312
;
2703 yych
= *(mrk
= ++cur
);
2706 case 'c': goto yy314
;
2711 yych
= *(mrk
= ++cur
);
2714 case 'e': goto yy315
;
2719 yych
= *(mrk
= ++cur
);
2722 case 'd': goto yy316
;
2727 yych
= *(mrk
= ++cur
);
2730 case 'l': goto yy317
;
2735 yych
= *(mrk
= ++cur
);
2738 case 'v': goto yy318
;
2743 yych
= *(mrk
= ++cur
);
2808 case 0x7F: goto yy242
;
2809 case '\\': goto yy148
;
2813 #line 437 "src/parser.re"
2814 { NEWTOKEN(PSI_T_LET
); goto start
; }
2815 #line 2816 "src/parser.c"
2818 yych
= *(mrk
= ++cur
);
2883 case 0x7F: goto yy244
;
2884 case '\\': goto yy148
;
2888 #line 436 "src/parser.re"
2889 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2890 #line 2891 "src/parser.c"
2893 yych
= *(mrk
= ++cur
);
2896 case 'e': goto yy319
;
2901 yych
= *(mrk
= ++cur
);
2904 case 'l': goto yy320
;
2909 yych
= *(mrk
= ++cur
);
2912 case 'e': goto yy322
;
2914 case 'v': goto yy323
;
2919 yych
= *(mrk
= ++cur
);
2922 case 'h': goto yy324
;
2927 yych
= *(mrk
= ++cur
);
2930 case 't': goto yy325
;
2935 yych
= *(mrk
= ++cur
);
2937 case '_': goto yy326
;
2942 yych
= *(mrk
= ++cur
);
2945 case 'u': goto yy327
;
2950 yych
= *(mrk
= ++cur
);
3015 case 0x7F: goto yy253
;
3016 case '\\': goto yy148
;
3020 #line 438 "src/parser.re"
3021 { NEWTOKEN(PSI_T_SET
); goto start
; }
3022 #line 3023 "src/parser.c"
3025 yych
= *(mrk
= ++cur
);
3028 case 't': goto yy328
;
3033 yych
= *(mrk
= ++cur
);
3036 case 'i': goto yy329
;
3038 case 'l': goto yy330
;
3040 case 'v': goto yy331
;
3045 yych
= *(mrk
= ++cur
);
3048 case 'p': goto yy332
;
3053 yych
= *(mrk
= ++cur
);
3056 case 'a': goto yy334
;
3058 case 'b': goto yy335
;
3060 case 'f': goto yy336
;
3062 case 'i': goto yy337
;
3064 case 'o': goto yy338
;
3066 case 's': goto yy339
;
3071 yych
= *(mrk
= ++cur
);
3074 case 'e': goto yy340
;
3079 yych
= *(mrk
= ++cur
);
3082 case 'e': goto yy342
;
3087 yych
= *(mrk
= ++cur
);
3090 case 'n': goto yy343
;
3095 yych
= *(mrk
= ++cur
);
3098 case 'l': goto yy344
;
3103 yych
= *(mrk
= ++cur
);
3105 case 's': goto yy346
;
3106 case 't': goto yy347
;
3111 yych
= *(mrk
= ++cur
);
3113 case 'x': goto yy348
;
3118 yych
= *(mrk
= ++cur
);
3120 case 'n': goto yy349
;
3125 yych
= *(mrk
= ++cur
);
3127 case 'e': goto yy350
;
3132 yych
= *(mrk
= ++cur
);
3134 case 'L': goto yy300
;
3135 case 'l': goto yy351
;
3140 yych
= *(mrk
= ++cur
);
3142 case 'r': goto yy353
;
3147 yych
= *(mrk
= ++cur
);
3149 case 's': goto yy355
;
3154 yych
= *(mrk
= ++cur
);
3156 case 'b': goto yy356
;
3161 yych
= *(mrk
= ++cur
);
3163 case 'm': goto yy357
;
3168 yych
= *(mrk
= ++cur
);
3170 case 'A': goto yy311
;
3171 case 'a': goto yy359
;
3176 yych
= *(mrk
= ++cur
);
3241 case 0x7F: goto yy273
;
3243 case 'v': goto yy318
;
3244 case '\\': goto yy148
;
3248 #line 406 "src/parser.re"
3249 { NEWTOKEN(PSI_T_INT
); goto start
; }
3250 #line 3251 "src/parser.c"
3253 yych
= *(mrk
= ++cur
);
3255 case 'e': goto yy360
;
3260 yych
= *(mrk
= ++cur
);
3262 case 'g': goto yy362
;
3267 yych
= *(mrk
= ++cur
);
3269 case 'g': goto yy364
;
3274 yych
= *(mrk
= ++cur
);
3276 case 'r': goto yy365
;
3281 yych
= *(mrk
= ++cur
);
3283 case 'n': goto yy366
;
3288 yych
= *(mrk
= ++cur
);
3290 case 'e': goto yy367
;
3295 yych
= *(mrk
= ++cur
);
3298 case 'i': goto yy329
;
3300 case 'l': goto yy330
;
3302 case 'v': goto yy331
;
3303 case 'u': goto yy368
;
3308 yych
= *(mrk
= ++cur
);
3310 case 'e': goto yy369
;
3316 #line 344 "src/parser.re"
3318 #line 3319 "src/parser.c"
3321 yych
= *(mrk
= ++cur
);
3323 case 'o': goto yy370
;
3328 yych
= *(mrk
= ++cur
);
3330 case 'i': goto yy371
;
3335 yych
= *(mrk
= ++cur
);
3337 case 'd': goto yy372
;
3342 yych
= *(mrk
= ++cur
);
3344 case 'a': goto yy374
;
3350 #line 339 "src/parser.re"
3351 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3352 #line 3353 "src/parser.c"
3356 #line 338 "src/parser.re"
3357 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3358 #line 3359 "src/parser.c"
3362 #line 340 "src/parser.re"
3363 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3364 #line 3365 "src/parser.c"
3368 #line 333 "src/parser.re"
3369 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3370 #line 3371 "src/parser.c"
3373 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3397 case 'f': goto yy296
;
3399 case 'p': goto yy127
;
3400 default: goto yy114
;
3404 yych
= *(mrk
= ++cur
);
3407 case 'y': goto yy375
;
3412 yych
= *(mrk
= ++cur
);
3415 case 'a': goto yy377
;
3420 yych
= *(mrk
= ++cur
);
3423 case 'v': goto yy378
;
3428 yych
= *(mrk
= ++cur
);
3431 case 'a': goto yy379
;
3433 case 'b': goto yy380
;
3435 case 'o': goto yy381
;
3440 yych
= *(mrk
= ++cur
);
3443 case 't': goto yy382
;
3448 yych
= *(mrk
= ++cur
);
3451 case 'n': goto yy384
;
3456 yych
= *(mrk
= ++cur
);
3521 case 0x7F: goto yy305
;
3522 case '\\': goto yy148
;
3526 #line 416 "src/parser.re"
3527 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3528 #line 3529 "src/parser.c"
3531 yych
= *(mrk
= ++cur
);
3596 case 0x7F: goto yy307
;
3597 case '\\': goto yy148
;
3601 #line 415 "src/parser.re"
3602 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3603 #line 3604 "src/parser.c"
3606 yych
= *(mrk
= ++cur
);
3609 case 'f': goto yy385
;
3614 yych
= *(mrk
= ++cur
);
3617 case 'r': goto yy387
;
3622 yych
= *(mrk
= ++cur
);
3625 case 'e': goto yy389
;
3630 yych
= *(mrk
= ++cur
);
3633 case 't': goto yy391
;
3638 yych
= *(mrk
= ++cur
);
3703 case 0x7F: goto yy313
;
3704 case '\\': goto yy148
;
3708 #line 443 "src/parser.re"
3709 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3710 #line 3711 "src/parser.c"
3713 yych
= *(mrk
= ++cur
);
3716 case 't': goto yy392
;
3721 yych
= *(mrk
= ++cur
);
3724 case 'f': goto yy393
;
3729 yych
= *(mrk
= ++cur
);
3732 case 'e': goto yy395
;
3737 yych
= *(mrk
= ++cur
);
3740 case 'u': goto yy396
;
3745 yych
= *(mrk
= ++cur
);
3748 case 'a': goto yy397
;
3753 yych
= *(mrk
= ++cur
);
3756 case 'd': goto yy398
;
3761 yych
= *(mrk
= ++cur
);
3826 case 0x7F: goto yy321
;
3827 case '\\': goto yy148
;
3831 #line 427 "src/parser.re"
3832 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3833 #line 3834 "src/parser.c"
3836 yych
= *(mrk
= ++cur
);
3839 case 'c': goto yy400
;
3844 yych
= *(mrk
= ++cur
);
3847 case 'a': goto yy401
;
3852 yych
= *(mrk
= ++cur
);
3855 case 'v': goto yy402
;
3860 yych
= *(mrk
= ++cur
);
3862 case '_': goto yy403
;
3867 yych
= *(mrk
= ++cur
);
3870 case 'a': goto yy404
;
3875 yych
= *(mrk
= ++cur
);
3878 case 'r': goto yy405
;
3883 yych
= *(mrk
= ++cur
);
3886 case 'i': goto yy406
;
3891 yych
= *(mrk
= ++cur
);
3894 case 'n': goto yy407
;
3899 yych
= *(mrk
= ++cur
);
3902 case 'e': goto yy408
;
3907 yych
= *(mrk
= ++cur
);
3910 case 'a': goto yy409
;
3915 yych
= *(mrk
= ++cur
);
3980 case 0x7F: goto yy333
;
3981 case '\\': goto yy148
;
3985 #line 444 "src/parser.re"
3986 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
3987 #line 3988 "src/parser.c"
3990 yych
= *(mrk
= ++cur
);
3993 case 'r': goto yy410
;
3998 yych
= *(mrk
= ++cur
);
4001 case 'o': goto yy411
;
4006 yych
= *(mrk
= ++cur
);
4009 case 'l': goto yy412
;
4014 yych
= *(mrk
= ++cur
);
4017 case 'n': goto yy413
;
4022 yych
= *(mrk
= ++cur
);
4025 case 'b': goto yy414
;
4030 yych
= *(mrk
= ++cur
);
4033 case 't': goto yy415
;
4038 yych
= *(mrk
= ++cur
);
4103 case 0x7F: goto yy341
;
4104 case '\\': goto yy148
;
4108 #line 425 "src/parser.re"
4109 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4110 #line 4111 "src/parser.c"
4113 yych
= *(mrk
= ++cur
);
4116 case 'f': goto yy416
;
4121 yych
= *(mrk
= ++cur
);
4124 case 'i': goto yy418
;
4129 yych
= *(mrk
= ++cur
);
4194 case 0x7F: goto yy345
;
4195 case '\\': goto yy148
;
4199 #line 453 "src/parser.re"
4200 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4201 #line 4202 "src/parser.c"
4204 yych
= *(mrk
= ++cur
);
4206 case 'm': goto yy419
;
4211 yych
= *(mrk
= ++cur
);
4213 case 't': goto yy420
;
4218 yych
= *(mrk
= ++cur
);
4220 case 't': goto yy421
;
4225 yych
= *(mrk
= ++cur
);
4227 case 'l': goto yy422
;
4232 yych
= *(mrk
= ++cur
);
4234 case 's': goto yy423
;
4239 yych
= *(mrk
= ++cur
);
4304 case 0x7F: goto yy352
;
4306 case 'v': goto yy378
;
4307 case '\\': goto yy148
;
4311 #line 403 "src/parser.re"
4312 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4313 #line 4314 "src/parser.c"
4316 yych
= *(mrk
= ++cur
);
4381 case 0x7F: goto yy354
;
4382 case '\\': goto yy148
;
4386 #line 404 "src/parser.re"
4387 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4388 #line 4389 "src/parser.c"
4391 yych
= *(mrk
= ++cur
);
4393 case 't': goto yy424
;
4398 yych
= *(mrk
= ++cur
);
4400 case 'l': goto yy426
;
4405 yych
= *(mrk
= ++cur
);
4470 case 0x7F: goto yy358
;
4471 case '\\': goto yy148
;
4475 #line 400 "src/parser.re"
4476 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4477 #line 4478 "src/parser.c"
4480 yych
= *(mrk
= ++cur
);
4482 case 'T': goto yy391
;
4483 case 't': goto yy427
;
4488 yych
= *(mrk
= ++cur
);
4553 case 0x7F: goto yy361
;
4554 case '\\': goto yy148
;
4558 #line 396 "src/parser.re"
4559 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4560 #line 4561 "src/parser.c"
4563 yych
= *(mrk
= ++cur
);
4628 case 0x7F: goto yy363
;
4629 case '\\': goto yy148
;
4633 #line 407 "src/parser.re"
4634 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4635 #line 4636 "src/parser.c"
4638 yych
= *(mrk
= ++cur
);
4640 case 'm': goto yy429
;
4645 yych
= *(mrk
= ++cur
);
4647 case 't': goto yy430
;
4652 yych
= *(mrk
= ++cur
);
4654 case 'e': goto yy432
;
4659 yych
= *(mrk
= ++cur
);
4661 case 'o': goto yy433
;
4666 yych
= *(mrk
= ++cur
);
4668 case 'c': goto yy434
;
4673 yych
= *(mrk
= ++cur
);
4675 case 'd': goto yy435
;
4680 yych
= *(mrk
= ++cur
);
4682 case 'n': goto yy436
;
4687 yych
= *(mrk
= ++cur
);
4689 case 'g': goto yy438
;
4694 yych
= *(mrk
= ++cur
);
4759 case 0x7F: goto yy373
;
4760 case '\\': goto yy148
;
4764 #line 402 "src/parser.re"
4765 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4766 #line 4767 "src/parser.c"
4769 yych
= *(mrk
= ++cur
);
4771 case 't': goto yy439
;
4776 yych
= *(mrk
= ++cur
);
4841 case 0x7F: goto yy376
;
4842 case '\\': goto yy148
;
4846 #line 431 "src/parser.re"
4847 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4848 #line 4849 "src/parser.c"
4851 yych
= *(mrk
= ++cur
);
4854 case 'l': goto yy440
;
4859 yych
= *(mrk
= ++cur
);
4862 case 'a': goto yy442
;
4867 yych
= *(mrk
= ++cur
);
4870 case 'b': goto yy443
;
4875 yych
= *(mrk
= ++cur
);
4878 case 'a': goto yy444
;
4883 yych
= *(mrk
= ++cur
);
4886 case 'c': goto yy445
;
4891 yych
= *(mrk
= ++cur
);
4956 case 0x7F: goto yy383
;
4957 case '\\': goto yy148
;
4961 #line 454 "src/parser.re"
4962 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4963 #line 4964 "src/parser.c"
4966 yych
= *(mrk
= ++cur
);
4969 case 'e': goto yy447
;
4974 yych
= *(mrk
= ++cur
);
5039 case 0x7F: goto yy386
;
5040 case '\\': goto yy148
;
5044 #line 417 "src/parser.re"
5045 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5046 #line 5047 "src/parser.c"
5049 yych
= *(mrk
= ++cur
);
5114 case 0x7F: goto yy388
;
5115 case '\\': goto yy148
;
5119 #line 422 "src/parser.re"
5120 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5121 #line 5122 "src/parser.c"
5124 yych
= *(mrk
= ++cur
);
5189 case 0x7F: goto yy390
;
5190 case '\\': goto yy148
;
5194 #line 426 "src/parser.re"
5195 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5196 #line 5197 "src/parser.c"
5199 yych
= *(mrk
= ++cur
);
5202 case 'v': goto yy449
;
5207 yych
= *(mrk
= ++cur
);
5210 case 'i': goto yy450
;
5215 yych
= *(mrk
= ++cur
);
5280 case 0x7F: goto yy394
;
5281 case '\\': goto yy148
;
5285 #line 413 "src/parser.re"
5286 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5287 #line 5288 "src/parser.c"
5290 yych
= *(mrk
= ++cur
);
5293 case 'f': goto yy451
;
5298 yych
= *(mrk
= ++cur
);
5301 case 'd': goto yy453
;
5306 yych
= *(mrk
= ++cur
);
5309 case 'l': goto yy454
;
5314 yych
= *(mrk
= ++cur
);
5379 case 0x7F: goto yy399
;
5380 case '\\': goto yy148
;
5384 #line 428 "src/parser.re"
5385 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5386 #line 5387 "src/parser.c"
5389 yych
= *(mrk
= ++cur
);
5392 case 't': goto yy456
;
5397 yych
= *(mrk
= ++cur
);
5400 case 'l': goto yy458
;
5405 yych
= *(mrk
= ++cur
);
5408 case 'a': goto yy460
;
5413 yych
= *(mrk
= ++cur
);
5416 case 'a': goto yy461
;
5421 yych
= *(mrk
= ++cur
);
5424 case 's': goto yy462
;
5429 yych
= *(mrk
= ++cur
);
5432 case 'n': goto yy463
;
5437 yych
= *(mrk
= ++cur
);
5440 case 'c': goto yy465
;
5445 yych
= *(mrk
= ++cur
);
5448 case 'g': goto yy467
;
5453 yych
= *(mrk
= ++cur
);
5456 case 'n': goto yy469
;
5461 yych
= *(mrk
= ++cur
);
5464 case 'l': goto yy471
;
5469 yych
= *(mrk
= ++cur
);
5472 case 'r': goto yy473
;
5477 yych
= *(mrk
= ++cur
);
5480 case 'o': goto yy474
;
5485 yych
= *(mrk
= ++cur
);
5488 case 'o': goto yy475
;
5493 yych
= *(mrk
= ++cur
);
5496 case 't': goto yy476
;
5501 yych
= *(mrk
= ++cur
);
5504 case 'j': goto yy478
;
5509 yych
= *(mrk
= ++cur
);
5512 case 'r': goto yy479
;
5517 yych
= *(mrk
= ++cur
);
5582 case 0x7F: goto yy417
;
5583 case '\\': goto yy148
;
5587 #line 420 "src/parser.re"
5588 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5589 #line 5590 "src/parser.c"
5592 yych
= *(mrk
= ++cur
);
5595 case 'n': goto yy480
;
5600 yych
= *(mrk
= ++cur
);
5602 case '_': goto yy481
;
5607 yych
= *(mrk
= ++cur
);
5609 case 'r': goto yy482
;
5614 yych
= *(mrk
= ++cur
);
5616 case 'e': goto yy483
;
5621 yych
= *(mrk
= ++cur
);
5623 case 'i': goto yy484
;
5628 yych
= *(mrk
= ++cur
);
5630 case 't': goto yy485
;
5635 yych
= *(mrk
= ++cur
);
5700 case 0x7F: goto yy425
;
5701 case '\\': goto yy148
;
5705 #line 401 "src/parser.re"
5706 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5707 #line 5708 "src/parser.c"
5710 yych
= *(mrk
= ++cur
);
5712 case 'e': goto yy486
;
5717 yych
= *(mrk
= ++cur
);
5782 case 0x7F: goto yy428
;
5784 case 'v': goto yy449
;
5785 case '\\': goto yy148
;
5789 #line 408 "src/parser.re"
5790 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5791 #line 5792 "src/parser.c"
5794 yych
= *(mrk
= ++cur
);
5796 case 'a': goto yy488
;
5801 yych
= *(mrk
= ++cur
);
5866 case 0x7F: goto yy431
;
5867 case '\\': goto yy148
;
5871 #line 405 "src/parser.re"
5872 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5873 #line 5874 "src/parser.c"
5876 yych
= *(mrk
= ++cur
);
5878 case 'd': goto yy490
;
5883 yych
= *(mrk
= ++cur
);
5885 case 'f': goto yy492
;
5890 yych
= *(mrk
= ++cur
);
5892 case 't': goto yy494
;
5897 yych
= *(mrk
= ++cur
);
5899 case 'e': goto yy496
;
5904 yych
= *(mrk
= ++cur
);
5969 case 0x7F: goto yy437
;
5970 case '\\': goto yy148
;
5974 #line 399 "src/parser.re"
5975 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5976 #line 5977 "src/parser.c"
5979 yych
= *(mrk
= ++cur
);
5981 case 'n': goto yy497
;
5986 yych
= *(mrk
= ++cur
);
5988 case 'i': goto yy498
;
5993 yych
= *(mrk
= ++cur
);
6058 case 0x7F: goto yy441
;
6059 case '\\': goto yy148
;
6063 #line 451 "src/parser.re"
6064 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6065 #line 6066 "src/parser.c"
6068 yych
= *(mrk
= ++cur
);
6071 case 'l': goto yy499
;
6076 yych
= *(mrk
= ++cur
);
6079 case 'l': goto yy501
;
6084 yych
= *(mrk
= ++cur
);
6087 case 'c': goto yy502
;
6092 yych
= *(mrk
= ++cur
);
6157 case 0x7F: goto yy446
;
6158 case '\\': goto yy148
;
6162 #line 455 "src/parser.re"
6163 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6164 #line 6165 "src/parser.c"
6167 yych
= *(mrk
= ++cur
);
6232 case 0x7F: goto yy448
;
6234 case 'd': goto yy503
;
6235 case '\\': goto yy148
;
6239 #line 418 "src/parser.re"
6240 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6241 #line 6242 "src/parser.c"
6244 yych
= *(mrk
= ++cur
);
6247 case 'a': goto yy505
;
6252 yych
= *(mrk
= ++cur
);
6255 case 'o': goto yy506
;
6260 yych
= *(mrk
= ++cur
);
6325 case 0x7F: goto yy452
;
6326 case '\\': goto yy148
;
6330 #line 414 "src/parser.re"
6331 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6332 #line 6333 "src/parser.c"
6335 yych
= *(mrk
= ++cur
);
6338 case 'e': goto yy507
;
6343 yych
= *(mrk
= ++cur
);
6408 case 0x7F: goto yy455
;
6409 case '\\': goto yy148
;
6413 #line 448 "src/parser.re"
6414 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6415 #line 6416 "src/parser.c"
6418 yych
= *(mrk
= ++cur
);
6483 case 0x7F: goto yy457
;
6484 case '\\': goto yy148
;
6488 #line 432 "src/parser.re"
6489 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6490 #line 6491 "src/parser.c"
6493 yych
= *(mrk
= ++cur
);
6558 case 0x7F: goto yy459
;
6559 case '\\': goto yy148
;
6563 #line 452 "src/parser.re"
6564 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6565 #line 6566 "src/parser.c"
6568 yych
= *(mrk
= ++cur
);
6571 case 'l': goto yy509
;
6576 yych
= *(mrk
= ++cur
);
6579 case 's': goto yy511
;
6584 yych
= *(mrk
= ++cur
);
6587 case 's': goto yy512
;
6592 yych
= *(mrk
= ++cur
);
6657 case 0x7F: goto yy464
;
6658 case '\\': goto yy148
;
6662 #line 441 "src/parser.re"
6663 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6664 #line 6665 "src/parser.c"
6667 yych
= *(mrk
= ++cur
);
6732 case 0x7F: goto yy466
;
6733 case '\\': goto yy148
;
6737 #line 434 "src/parser.re"
6738 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6739 #line 6740 "src/parser.c"
6742 yych
= *(mrk
= ++cur
);
6807 case 0x7F: goto yy468
;
6808 case '\\': goto yy148
;
6812 #line 430 "src/parser.re"
6813 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6814 #line 6815 "src/parser.c"
6817 yych
= *(mrk
= ++cur
);
6882 case 0x7F: goto yy470
;
6883 case '\\': goto yy148
;
6887 #line 445 "src/parser.re"
6888 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6889 #line 6890 "src/parser.c"
6892 yych
= *(mrk
= ++cur
);
6957 case 0x7F: goto yy472
;
6958 case '\\': goto yy148
;
6962 #line 446 "src/parser.re"
6963 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
6964 #line 6965 "src/parser.c"
6967 yych
= *(mrk
= ++cur
);
6970 case 'a': goto yy513
;
6975 yych
= *(mrk
= ++cur
);
6978 case 'l': goto yy514
;
6983 yych
= *(mrk
= ++cur
);
6986 case 'a': goto yy516
;
6991 yych
= *(mrk
= ++cur
);
7056 case 0x7F: goto yy477
;
7057 case '\\': goto yy148
;
7061 #line 459 "src/parser.re"
7062 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7063 #line 7064 "src/parser.c"
7066 yych
= *(mrk
= ++cur
);
7069 case 'e': goto yy517
;
7074 yych
= *(mrk
= ++cur
);
7077 case 'i': goto yy518
;
7082 yych
= *(mrk
= ++cur
);
7085 case 'g': goto yy519
;
7090 yych
= *(mrk
= ++cur
);
7092 case '_': goto yy521
;
7097 yych
= *(mrk
= ++cur
);
7099 case 'i': goto yy523
;
7104 yych
= *(mrk
= ++cur
);
7106 case 'n': goto yy524
;
7111 yych
= *(mrk
= ++cur
);
7113 case 'n': goto yy525
;
7118 yych
= *(mrk
= ++cur
);
7120 case 'r': goto yy526
;
7125 yych
= *(mrk
= ++cur
);
7190 case 0x7F: goto yy487
;
7191 case '\\': goto yy148
;
7195 #line 409 "src/parser.re"
7196 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7197 #line 7198 "src/parser.c"
7200 yych
= *(mrk
= ++cur
);
7265 case 0x7F: goto yy489
;
7266 case '\\': goto yy148
;
7267 default: goto yy527
;
7270 #line 388 "src/parser.re"
7271 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7272 #line 7273 "src/parser.c"
7275 yych
= *(mrk
= ++cur
);
7340 case 0x7F: goto yy491
;
7341 case '\\': goto yy148
;
7345 #line 411 "src/parser.re"
7346 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7347 #line 7348 "src/parser.c"
7350 yych
= *(mrk
= ++cur
);
7415 case 0x7F: goto yy493
;
7416 case '\\': goto yy148
;
7420 #line 395 "src/parser.re"
7421 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7422 #line 7423 "src/parser.c"
7425 yych
= *(mrk
= ++cur
);
7490 case 0x7F: goto yy495
;
7491 case '\\': goto yy148
;
7495 #line 398 "src/parser.re"
7496 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7497 #line 7498 "src/parser.c"
7500 yych
= *(mrk
= ++cur
);
7502 case 'f': goto yy529
;
7507 yych
= *(mrk
= ++cur
);
7509 case 'e': goto yy531
;
7514 yych
= *(mrk
= ++cur
);
7516 case 'l': goto yy532
;
7521 yych
= *(mrk
= ++cur
);
7586 case 0x7F: goto yy500
;
7587 case '\\': goto yy148
;
7591 #line 450 "src/parser.re"
7592 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7593 #line 7594 "src/parser.c"
7596 yych
= *(mrk
= ++cur
);
7599 case 'e': goto yy533
;
7604 yych
= *(mrk
= ++cur
);
7607 case 'k': goto yy535
;
7612 yych
= *(mrk
= ++cur
);
7677 case 0x7F: goto yy504
;
7678 case '\\': goto yy148
;
7682 #line 419 "src/parser.re"
7683 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7684 #line 7685 "src/parser.c"
7687 yych
= *(mrk
= ++cur
);
7690 case 'l': goto yy537
;
7695 yych
= *(mrk
= ++cur
);
7698 case 'n': goto yy539
;
7703 yych
= *(mrk
= ++cur
);
7768 case 0x7F: goto yy508
;
7769 case '\\': goto yy148
;
7770 case '_': goto yy541
;
7774 #line 423 "src/parser.re"
7775 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7776 #line 7777 "src/parser.c"
7779 yych
= *(mrk
= ++cur
);
7844 case 0x7F: goto yy510
;
7845 case '\\': goto yy148
;
7849 #line 447 "src/parser.re"
7850 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7851 #line 7852 "src/parser.c"
7854 yych
= *(mrk
= ++cur
);
7857 case 's': goto yy542
;
7862 yych
= *(mrk
= ++cur
);
7865 case 'e': goto yy543
;
7870 yych
= *(mrk
= ++cur
);
7873 case 'y': goto yy544
;
7878 yych
= *(mrk
= ++cur
);
7943 case 0x7F: goto yy515
;
7944 case '\\': goto yy148
;
7948 #line 461 "src/parser.re"
7949 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7950 #line 7951 "src/parser.c"
7953 yych
= *(mrk
= ++cur
);
7956 case 't': goto yy546
;
7961 yych
= *(mrk
= ++cur
);
7964 case 'c': goto yy548
;
7969 yych
= *(mrk
= ++cur
);
7972 case 'n': goto yy549
;
7977 yych
= *(mrk
= ++cur
);
8042 case 0x7F: goto yy520
;
8043 case '\\': goto yy148
;
8047 #line 421 "src/parser.re"
8048 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8049 #line 8050 "src/parser.c"
8052 yych
= *(mrk
= ++cur
);
8117 case 0x7F: goto yy522
;
8118 case '\\': goto yy148
;
8122 #line 393 "src/parser.re"
8123 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8124 #line 8125 "src/parser.c"
8127 yych
= *(mrk
= ++cur
);
8129 case 'b': goto yy550
;
8134 yych
= *(mrk
= ++cur
);
8136 case 's': goto yy551
;
8141 yych
= *(mrk
= ++cur
);
8143 case 'e': goto yy552
;
8148 yych
= *(mrk
= ++cur
);
8150 case 'i': goto yy554
;
8156 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8222 case 0x7F: goto yy55
;
8223 case '\\': goto yy148
;
8224 case 'o': goto yy555
;
8225 default: goto yy527
;
8229 yych
= *(mrk
= ++cur
);
8294 case 0x7F: goto yy530
;
8295 case '\\': goto yy148
;
8299 #line 397 "src/parser.re"
8300 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8301 #line 8302 "src/parser.c"
8304 yych
= *(mrk
= ++cur
);
8306 case 'd': goto yy557
;
8311 yych
= *(mrk
= ++cur
);
8313 case 'e': goto yy559
;
8318 yych
= *(mrk
= ++cur
);
8383 case 0x7F: goto yy534
;
8384 case '\\': goto yy148
;
8388 #line 429 "src/parser.re"
8389 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8390 #line 8391 "src/parser.c"
8393 yych
= *(mrk
= ++cur
);
8458 case 0x7F: goto yy536
;
8459 case '\\': goto yy148
;
8463 #line 433 "src/parser.re"
8464 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8465 #line 8466 "src/parser.c"
8468 yych
= *(mrk
= ++cur
);
8533 case 0x7F: goto yy538
;
8534 case '\\': goto yy148
;
8538 #line 449 "src/parser.re"
8539 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8540 #line 8541 "src/parser.c"
8543 yych
= *(mrk
= ++cur
);
8608 case 0x7F: goto yy540
;
8609 case '\\': goto yy148
;
8613 #line 435 "src/parser.re"
8614 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8615 #line 8616 "src/parser.c"
8618 yych
= *(mrk
= ++cur
);
8621 case 'n': goto yy561
;
8626 yych
= *(mrk
= ++cur
);
8629 case 'e': goto yy562
;
8634 yych
= *(mrk
= ++cur
);
8637 case 'r': goto yy563
;
8642 yych
= *(mrk
= ++cur
);
8707 case 0x7F: goto yy545
;
8708 case '\\': goto yy148
;
8712 #line 457 "src/parser.re"
8713 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8714 #line 8715 "src/parser.c"
8717 yych
= *(mrk
= ++cur
);
8782 case 0x7F: goto yy547
;
8783 case '\\': goto yy148
;
8787 #line 460 "src/parser.re"
8788 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8789 #line 8790 "src/parser.c"
8792 yych
= *(mrk
= ++cur
);
8795 case 't': goto yy564
;
8800 yych
= *(mrk
= ++cur
);
8803 case 'g': goto yy566
;
8808 yych
= *(mrk
= ++cur
);
8810 case 'u': goto yy568
;
8815 yych
= *(mrk
= ++cur
);
8817 case 'i': goto yy569
;
8822 yych
= *(mrk
= ++cur
);
8887 case 0x7F: goto yy553
;
8888 case '\\': goto yy148
;
8892 #line 390 "src/parser.re"
8893 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8894 #line 8895 "src/parser.c"
8897 yych
= *(mrk
= ++cur
);
8899 case 'c': goto yy570
;
8905 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8971 case 0x7F: goto yy55
;
8972 case '\\': goto yy148
;
8973 case 'n': goto yy571
;
8974 case 'o': goto yy555
;
8975 default: goto yy527
;
8979 yych
= *(mrk
= ++cur
);
9044 case 0x7F: goto yy558
;
9045 case '\\': goto yy148
;
9049 #line 410 "src/parser.re"
9050 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9051 #line 9052 "src/parser.c"
9054 yych
= *(mrk
= ++cur
);
9119 case 0x7F: goto yy560
;
9120 case '\\': goto yy148
;
9124 #line 394 "src/parser.re"
9125 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9126 #line 9127 "src/parser.c"
9129 yych
= *(mrk
= ++cur
);
9132 case 'e': goto yy572
;
9137 yych
= *(mrk
= ++cur
);
9140 case 'r': goto yy573
;
9145 yych
= *(mrk
= ++cur
);
9148 case 't': goto yy574
;
9153 yych
= *(mrk
= ++cur
);
9218 case 0x7F: goto yy565
;
9219 case '\\': goto yy148
;
9223 #line 456 "src/parser.re"
9224 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9225 #line 9226 "src/parser.c"
9228 yych
= *(mrk
= ++cur
);
9293 case 0x7F: goto yy567
;
9294 case '\\': goto yy148
;
9298 #line 458 "src/parser.re"
9299 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9300 #line 9301 "src/parser.c"
9303 yych
= *(mrk
= ++cur
);
9305 case 't': goto yy576
;
9310 yych
= *(mrk
= ++cur
);
9312 case 'o': goto yy577
;
9317 yych
= *(mrk
= ++cur
);
9319 case 't': goto yy578
;
9325 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9391 case 0x7F: goto yy55
;
9392 case '\\': goto yy148
;
9393 case 'c': goto yy580
;
9394 case 'o': goto yy555
;
9395 default: goto yy527
;
9399 yych
= *(mrk
= ++cur
);
9402 case 'x': goto yy581
;
9407 yych
= *(mrk
= ++cur
);
9410 case 't': goto yy582
;
9415 yych
= *(mrk
= ++cur
);
9480 case 0x7F: goto yy575
;
9481 case '\\': goto yy148
;
9485 #line 439 "src/parser.re"
9486 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9487 #line 9488 "src/parser.c"
9490 yych
= *(mrk
= ++cur
);
9492 case 'e': goto yy584
;
9497 yych
= *(mrk
= ++cur
);
9499 case 'n': goto yy585
;
9504 yych
= *(mrk
= ++cur
);
9569 case 0x7F: goto yy579
;
9570 case '\\': goto yy148
;
9574 #line 391 "src/parser.re"
9575 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9576 #line 9577 "src/parser.c"
9580 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9646 case 0x7F: goto yy55
;
9647 case '\\': goto yy148
;
9648 case 'e': goto yy586
;
9649 case 'o': goto yy555
;
9650 default: goto yy527
;
9654 yych
= *(mrk
= ++cur
);
9657 case 't': goto yy588
;
9662 yych
= *(mrk
= ++cur
);
9727 case 0x7F: goto yy583
;
9728 case '\\': goto yy148
;
9732 #line 440 "src/parser.re"
9733 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9734 #line 9735 "src/parser.c"
9737 yych
= *(mrk
= ++cur
);
9739 case '_': goto yy590
;
9744 yych
= *(mrk
= ++cur
);
9746 case '_': goto yy591
;
9752 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9818 case 0x7F: goto yy587
;
9819 case '\\': goto yy148
;
9820 case 'o': goto yy555
;
9821 default: goto yy527
;
9824 #line 389 "src/parser.re"
9825 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9826 #line 9827 "src/parser.c"
9829 yych
= *(mrk
= ++cur
);
9894 case 0x7F: goto yy589
;
9895 case '\\': goto yy148
;
9899 #line 424 "src/parser.re"
9900 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9901 #line 9902 "src/parser.c"
9904 yych
= *(mrk
= ++cur
);
9906 case '_': goto yy592
;
9911 yych
= *(mrk
= ++cur
);
9913 case '_': goto yy593
;
9918 yych
= *(mrk
= ++cur
);
9922 case ' ': goto yy595
;
9923 case '(': goto yy597
;
9928 yych
= *(mrk
= ++cur
);
9993 case 0x7F: goto yy594
;
9994 case '\\': goto yy148
;
9998 #line 392 "src/parser.re"
9999 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10000 #line 10001 "src/parser.c"
10003 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10008 case ' ': goto yy595
;
10009 case '(': goto yy597
;
10010 default: goto yy114
;
10015 case '(': goto yy598
;
10016 default: goto yy114
;
10020 #line 466 "src/parser.re"
10021 { parens
= 2; goto cpp_attribute
; }
10022 #line 10023 "src/parser.c"
10024 #line 472 "src/parser.re"
10029 #line 10030 "src/parser.c"
10031 unsigned char yych
;
10032 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10036 case '\r': goto yy604
;
10037 case '\'': goto yy606
;
10038 case '\\': goto yy608
;
10039 default: goto yy602
;
10043 #line 490 "src/parser.re"
10044 { escaped
= false; goto character
; }
10045 #line 10046 "src/parser.c"
10048 #line 477 "src/parser.re"
10049 { NEWLINE(); goto character
; }
10050 #line 10051 "src/parser.c"
10053 #line 479 "src/parser.re"
10060 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10062 token
->flags
= char_width
;
10065 #line 10066 "src/parser.c"
10068 #line 478 "src/parser.re"
10069 { escaped
= !escaped
; goto character
; }
10070 #line 10071 "src/parser.c"
10072 #line 492 "src/parser.re"
10077 #line 10078 "src/parser.c"
10079 unsigned char yych
;
10080 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10084 case '\r': goto yy614
;
10085 case '"': goto yy616
;
10086 case '\\': goto yy618
;
10087 default: goto yy612
;
10091 #line 510 "src/parser.re"
10092 { escaped
= false; goto string
; }
10093 #line 10094 "src/parser.c"
10096 #line 497 "src/parser.re"
10097 { NEWLINE(); goto string
; }
10098 #line 10099 "src/parser.c"
10101 #line 499 "src/parser.re"
10108 NEWTOKEN(PSI_T_QUOTED_STRING
);
10110 token
->flags
= char_width
;
10113 #line 10114 "src/parser.c"
10116 #line 498 "src/parser.re"
10117 { escaped
= !escaped
; goto string
; }
10118 #line 10119 "src/parser.c"
10120 #line 512 "src/parser.re"
10125 #line 10126 "src/parser.c"
10127 unsigned char yych
;
10128 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10132 case '\r': goto yy624
;
10133 case '*': goto yy626
;
10134 default: goto yy622
;
10139 #line 519 "src/parser.re"
10141 #line 10142 "src/parser.c"
10144 #line 517 "src/parser.re"
10145 { NEWLINE(); goto comment
; }
10146 #line 10147 "src/parser.c"
10150 case '/': goto yy627
;
10151 default: goto yy623
;
10155 #line 518 "src/parser.re"
10156 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10157 #line 10158 "src/parser.c"
10159 #line 521 "src/parser.re"
10164 #line 10165 "src/parser.c"
10166 unsigned char yych
;
10167 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10171 case '\r': goto yy633
;
10172 default: goto yy631
;
10176 #line 527 "src/parser.re"
10177 { goto comment_sl
; }
10178 #line 10179 "src/parser.c"
10181 #line 526 "src/parser.re"
10182 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10183 #line 10184 "src/parser.c"
10185 #line 529 "src/parser.re"
10191 #line 10192 "src/parser.c"
10193 unsigned char yych
;
10194 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10198 case '\r': goto yy639
;
10199 case '(': goto yy641
;
10200 case ')': goto yy643
;
10201 default: goto yy637
;
10205 #line 538 "src/parser.re"
10206 { goto cpp_attribute
; }
10207 #line 10208 "src/parser.c"
10210 #line 537 "src/parser.re"
10211 { NEWLINE(); goto cpp_attribute
; }
10212 #line 10213 "src/parser.c"
10215 #line 535 "src/parser.re"
10216 { ++parens
; goto cpp_attribute
; }
10217 #line 10218 "src/parser.c"
10220 #line 536 "src/parser.re"
10221 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10222 #line 10223 "src/parser.c"
10224 #line 540 "src/parser.re"
10228 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10229 token
->type
, token
->text
->len
, token
->text
->val
, tok
- eol
+ 1);
10230 psi_plist_free(tokens
);
10235 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);