07e3dfc1a6f0ebd27f6fe7f9c869531a8f37a708
1 /* Generated by re2c 1.0.3 on Wed Apr 18 08:03:43 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"
39 # define YYMAXFILL 256
42 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
45 P
= malloc(sizeof(*P
));
47 memset(P
, 0, sizeof(*P
));
49 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
51 P
->preproc
= psi_cpp_init(P
);
53 psi_cpp_load_defaults(P
->preproc
);
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
= malloc(sizeof(*fb
) + strlen(filename
) + 1 + sb
.st_size
+ YYMAXFILL
))) {
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 memset(fb
->buffer
+ sb
.st_size
, 0, YYMAXFILL
);
104 fb
->length
= sb
.st_size
;
105 fb
->file
= &fb
->buffer
[sb
.st_size
+ YYMAXFILL
];
106 memcpy(fb
->file
, 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
) + sizeof("<stdin>") + 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
= &sb
->buffer
[length
+ YYMAXFILL
];
127 memcpy(sb
->file
, "<stdin>", sizeof("<stdin>"));
133 static void psi_parser_register_constants(struct psi_parser
*P
)
138 ZEND_HASH_FOREACH_STR_KEY_VAL(&P
->cpp
.defs
, key
, val
)
140 struct psi_impl_def_val
*iv
;
141 struct psi_const_type
*ct
;
149 switch (Z_TYPE_P(val
)) {
154 tmp
.zend
.bval
= Z_TYPE_P(val
) == IS_TRUE
;
159 tmp
.zend
.lval
= Z_LVAL_P(val
);
164 tmp
.dval
= Z_DVAL_P(val
);
169 str
= zval_get_string(val
);
170 tmp
.zend
.str
= zend_string_dup(str
, 1);
171 zend_string_release(str
);
175 iv
= psi_impl_def_val_init(ctt
, NULL
);
177 ct
= psi_const_type_init(ctt
, ctn
);
178 c
= psi_const_init(ct
, key
->val
, iv
);
180 P
->consts
= psi_plist_init((psi_plist_dtor
) psi_const_free
);
182 P
->consts
= psi_plist_add(P
->consts
, &c
);
184 ZEND_HASH_FOREACH_END();
188 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
190 if (psi_cpp_process(P
->preproc
, tokens
)) {
196 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
198 if (psi_plist_count(tokens
)) {
199 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
204 void psi_parser_postprocess(struct psi_parser
*P
)
208 struct psi_validate_scope scope
= {0};
210 psi_validate_scope_ctor(&scope
);
211 scope
.defs
= &P
->preproc
->defs
;
214 P
->flags
|= PSI_SILENT
;
216 /* register const macros */
217 ZEND_HASH_FOREACH_STR_KEY_PTR(&P
->preproc
->defs
, name
, scope
.macro
)
219 if (scope
.macro
->sig
) {
220 } else if (scope
.macro
->exp
) {
221 if (psi_num_exp_validate(PSI_DATA(P
), scope
.macro
->exp
, &scope
)) {
222 struct psi_impl_type
*type
;
223 struct psi_impl_def_val
*def
;
224 struct psi_const
*cnst
;
225 struct psi_num_exp
*num
;
226 char *name_str
= malloc(name
->len
+ sizeof("psi\\"));
228 strcat(strcpy(name_str
, "psi\\"), name
->val
);
229 num
= psi_num_exp_copy(scope
.macro
->exp
);
230 def
= psi_impl_def_val_init(PSI_T_NUMBER
, num
);
231 type
= psi_impl_type_init(PSI_T_NUMBER
, "<eval number>");
232 cnst
= psi_const_init(type
, name_str
, def
);
233 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
237 if (psi_plist_count(scope
.macro
->tokens
) == 1) {
240 if (psi_plist_get(scope
.macro
->tokens
, 0, &t
)) {
241 if (t
->type
== PSI_T_QUOTED_STRING
) {
242 struct psi_impl_type
*type
;
243 struct psi_impl_def_val
*def
;
244 struct psi_const
*cnst
;
245 char *name_str
= malloc(name
->len
+ sizeof("psi\\"));
247 strcat(strcpy(name_str
, "psi\\"), name
->val
);
248 type
= psi_impl_type_init(PSI_T_STRING
, "string");
249 def
= psi_impl_def_val_init(PSI_T_QUOTED_STRING
, t
->text
);
250 cnst
= psi_const_init(type
, name_str
, def
);
251 P
->consts
= psi_plist_add(P
->consts
, &cnst
);
258 ZEND_HASH_FOREACH_END();
262 psi_validate_scope_dtor(&scope
);
265 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
267 struct psi_plist
*scanned
, *preproc
;
268 size_t processed
= 0;
270 if (!(scanned
= psi_parser_scan(P
, I
))) {
274 if (!(preproc
= psi_parser_preprocess(P
, &scanned
))) {
275 psi_plist_free(scanned
);
279 if (!psi_parser_process(P
, preproc
, &processed
)) {
280 psi_plist_free(preproc
);
284 psi_parser_postprocess(P
);
286 psi_plist_free(preproc
);
290 void psi_parser_dtor(struct psi_parser
*P
)
292 psi_cpp_free(&P
->preproc
);
293 psi_data_dtor(PSI_DATA(P
));
295 memset(P
, 0, sizeof(*P
));
298 void psi_parser_free(struct psi_parser
**P
)
311 #define NEWTOKEN(t) \
312 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
313 tokens = psi_plist_add(tokens, &token); \
314 if (P->flags & PSI_DEBUG) { \
315 fprintf(stderr, "PSI< "); \
316 psi_token_dump(2, token); \
324 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
326 struct psi_plist
*tokens
;
327 struct psi_token
*token
;
328 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
333 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
);
335 tok
= mrk
= eol
= cur
= I
->buffer
;
336 lim
= I
->buffer
+ I
->length
;
338 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
348 #line 349 "src/parser.c"
351 unsigned int yyaccept
= 0;
352 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
397 case '\'': goto yy20
;
448 case '\\': goto yy77
;
466 case '}': goto yy100
;
467 case '~': goto yy102
;
473 #line 514 "src/parser.re"
474 { NEWTOKEN(-2); goto error
; }
475 #line 476 "src/parser.c"
478 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
487 #line 513 "src/parser.re"
488 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
489 #line 490 "src/parser.c"
492 #line 512 "src/parser.re"
493 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
494 #line 495 "src/parser.c"
498 case '=': goto yy104
;
502 #line 415 "src/parser.re"
503 { NEWTOKEN(PSI_T_NOT
); goto start
; }
504 #line 505 "src/parser.c"
507 #line 388 "src/parser.re"
508 { escaped
= false; tok
+= 1; goto string
; }
509 #line 510 "src/parser.c"
513 case '#': goto yy106
;
517 #line 398 "src/parser.re"
518 { NEWTOKEN(PSI_T_HASH
); goto start
; }
519 #line 520 "src/parser.c"
592 #line 416 "src/parser.re"
593 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
594 #line 595 "src/parser.c"
598 case '&': goto yy111
;
602 #line 417 "src/parser.re"
603 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
604 #line 605 "src/parser.c"
607 #line 387 "src/parser.re"
608 { escaped
= false; tok
+= 1; goto character
; }
609 #line 610 "src/parser.c"
612 #line 399 "src/parser.re"
613 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
614 #line 615 "src/parser.c"
617 #line 400 "src/parser.re"
618 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
619 #line 620 "src/parser.c"
622 #line 413 "src/parser.re"
623 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
624 #line 625 "src/parser.c"
627 yych
= *(mrk
= ++cur
);
629 case '.': goto yy113
;
643 #line 418 "src/parser.re"
644 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
645 #line 646 "src/parser.c"
648 #line 402 "src/parser.re"
649 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
650 #line 651 "src/parser.c"
653 yych
= *(mrk
= ++cur
);
655 case '.': goto yy113
;
669 #line 419 "src/parser.re"
670 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
671 #line 672 "src/parser.c"
674 yych
= *(mrk
= ++cur
);
676 case '.': goto yy115
;
686 case '9': goto yy116
;
690 #line 430 "src/parser.re"
691 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
692 #line 693 "src/parser.c"
696 case '*': goto yy119
;
697 case '/': goto yy121
;
701 #line 420 "src/parser.re"
702 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
703 #line 704 "src/parser.c"
706 yych
= *(mrk
= ++cur
);
708 case '.': goto yy123
;
710 case 'e': goto yy127
;
712 case 'x': goto yy132
;
716 #line 374 "src/parser.re"
717 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
718 #line 719 "src/parser.c"
722 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
725 case '.': goto yy123
;
737 case 'e': goto yy127
;
739 case 'l': goto yy128
;
741 case 'u': goto yy130
;
746 #line 403 "src/parser.re"
747 { NEWTOKEN(PSI_T_COLON
); goto start
; }
748 #line 749 "src/parser.c"
751 #line 401 "src/parser.re"
752 { NEWTOKEN(PSI_T_EOS
); goto start
; }
753 #line 754 "src/parser.c"
756 yych
= *(mrk
= ++cur
);
823 case 'z': goto yy133
;
824 case '<': goto yy135
;
825 case '=': goto yy137
;
829 #line 428 "src/parser.re"
830 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
831 #line 832 "src/parser.c"
835 case '=': goto yy139
;
839 #line 412 "src/parser.re"
840 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
841 #line 842 "src/parser.c"
845 case '=': goto yy141
;
846 case '>': goto yy143
;
850 #line 429 "src/parser.re"
851 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
852 #line 853 "src/parser.c"
855 #line 432 "src/parser.re"
856 { NEWTOKEN(PSI_T_IIF
); goto start
; }
857 #line 858 "src/parser.c"
860 yych
= *(mrk
= ++cur
);
863 case 'r': goto yy145
;
865 case 's': goto yy146
;
869 #line 507 "src/parser.re"
870 { NEWTOKEN(PSI_T_NAME
); goto start
; }
871 #line 872 "src/parser.c"
874 yych
= *(mrk
= ++cur
);
877 case 'o': goto yy149
;
882 yych
= *(mrk
= ++cur
);
885 case 'a': goto yy150
;
887 case 'o': goto yy151
;
892 yych
= *(mrk
= ++cur
);
895 case 'e': goto yy152
;
900 yych
= *(mrk
= ++cur
);
903 case 'l': goto yy153
;
905 case 'n': goto yy154
;
907 case 'r': goto yy155
;
912 yych
= *(mrk
= ++cur
);
915 case 'a': goto yy156
;
917 case 'l': goto yy157
;
919 case 'r': goto yy158
;
921 case 'u': goto yy159
;
927 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
994 case 0x7F: goto yy55
;
995 case '\\': goto yy148
;
1000 yych
= *(mrk
= ++cur
);
1003 case 'f': goto yy160
;
1005 case 'n': goto yy162
;
1010 yych
= *(mrk
= ++cur
);
1013 case '\'': goto yy163
;
1015 case 'e': goto yy165
;
1017 case 'i': goto yy166
;
1022 yych
= *(mrk
= ++cur
);
1025 case 'i': goto yy167
;
1030 yych
= *(mrk
= ++cur
);
1033 case 'u': goto yy168
;
1038 yych
= *(mrk
= ++cur
);
1041 case 'b': goto yy169
;
1046 yych
= *(mrk
= ++cur
);
1049 case 'a': goto yy170
;
1051 case 'o': goto yy171
;
1053 case 'r': goto yy172
;
1058 yych
= *(mrk
= ++cur
);
1061 case 'e': goto yy173
;
1066 yych
= *(mrk
= ++cur
);
1069 case 'e': goto yy174
;
1071 case 't': goto yy175
;
1076 yych
= *(mrk
= ++cur
);
1079 case 'e': goto yy176
;
1081 case 'o': goto yy177
;
1083 case 'r': goto yy178
;
1088 yych
= *(mrk
= ++cur
);
1091 case '\'': goto yy179
;
1093 case 'n': goto yy181
;
1098 yych
= *(mrk
= ++cur
);
1101 case 'a': goto yy182
;
1106 yych
= *(mrk
= ++cur
);
1109 case 'v': goto yy183
;
1114 #line 406 "src/parser.re"
1115 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1116 #line 1117 "src/parser.c"
1194 case 0x7F: goto yy78
;
1195 default: goto yy184
;
1198 #line 421 "src/parser.re"
1199 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1200 #line 1201 "src/parser.c"
1203 #line 407 "src/parser.re"
1204 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1205 #line 1206 "src/parser.c"
1208 #line 423 "src/parser.re"
1209 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1210 #line 1211 "src/parser.c"
1213 yych
= *(mrk
= ++cur
);
1215 case '_': goto yy187
;
1220 yych
= *(mrk
= ++cur
);
1222 case 'O': goto yy149
;
1223 case 'o': goto yy188
;
1228 yych
= *(mrk
= ++cur
);
1231 case 'a': goto yy150
;
1232 case 'O': goto yy151
;
1233 case 'h': goto yy189
;
1234 case 'o': goto yy190
;
1239 yych
= *(mrk
= ++cur
);
1242 case 'e': goto yy152
;
1243 case 'o': goto yy191
;
1248 yych
= *(mrk
= ++cur
);
1251 case 'l': goto yy153
;
1252 case 'N': goto yy154
;
1254 case 'r': goto yy155
;
1255 case 'n': goto yy192
;
1260 yych
= *(mrk
= ++cur
);
1263 case 'a': goto yy156
;
1264 case 'L': goto yy157
;
1266 case 'r': goto yy158
;
1268 case 'u': goto yy159
;
1269 case 'l': goto yy193
;
1274 yych
= *(mrk
= ++cur
);
1277 case 'f': goto yy160
;
1278 case 'N': goto yy162
;
1279 case 'n': goto yy194
;
1284 yych
= *(mrk
= ++cur
);
1287 case 'e': goto yy165
;
1288 case 'I': goto yy166
;
1289 case 'i': goto yy195
;
1290 case 'o': goto yy196
;
1295 yych
= *(mrk
= ++cur
);
1298 case 'a': goto yy170
;
1300 case 'o': goto yy171
;
1301 case 'R': goto yy172
;
1302 case 'r': goto yy197
;
1307 yych
= *(mrk
= ++cur
);
1310 case 'e': goto yy174
;
1311 case 'T': goto yy175
;
1312 case 'h': goto yy198
;
1313 case 'i': goto yy199
;
1314 case 't': goto yy200
;
1319 yych
= *(mrk
= ++cur
);
1322 case 'e': goto yy176
;
1324 case 'o': goto yy177
;
1326 case 'r': goto yy178
;
1327 case 'y': goto yy201
;
1332 yych
= *(mrk
= ++cur
);
1335 case '\'': goto yy202
;
1336 case '8': goto yy204
;
1337 case 'N': goto yy181
;
1338 case 'n': goto yy205
;
1343 yych
= *(mrk
= ++cur
);
1345 case 'o': goto yy206
;
1350 #line 404 "src/parser.re"
1351 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1352 #line 1353 "src/parser.c"
1356 case '|': goto yy207
;
1360 #line 422 "src/parser.re"
1361 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1362 #line 1363 "src/parser.c"
1365 #line 405 "src/parser.re"
1366 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1367 #line 1368 "src/parser.c"
1370 #line 414 "src/parser.re"
1371 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1372 #line 1373 "src/parser.c"
1375 #line 408 "src/parser.re"
1376 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1377 #line 1378 "src/parser.c"
1380 #line 397 "src/parser.re"
1381 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1382 #line 1383 "src/parser.c"
1385 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1452 case 0x7F: goto yy110
;
1453 default: goto yy108
;
1456 #line 509 "src/parser.re"
1457 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1458 #line 1459 "src/parser.c"
1461 #line 410 "src/parser.re"
1462 { NEWTOKEN(PSI_T_AND
); goto start
; }
1463 #line 1464 "src/parser.c"
1476 case '9': goto yy116
;
1477 default: goto yy114
;
1492 case 10: goto yy186
;
1493 case 11: goto yy242
;
1494 case 12: goto yy244
;
1495 case 13: goto yy253
;
1496 case 14: goto yy273
;
1497 case 15: goto yy305
;
1498 case 16: goto yy307
;
1499 case 17: goto yy313
;
1500 case 18: goto yy321
;
1501 case 19: goto yy333
;
1502 case 20: goto yy341
;
1503 case 21: goto yy345
;
1504 case 22: goto yy352
;
1505 case 23: goto yy354
;
1506 case 24: goto yy358
;
1507 case 25: goto yy361
;
1508 case 26: goto yy363
;
1509 case 27: goto yy373
;
1510 case 28: goto yy376
;
1511 case 29: goto yy383
;
1512 case 30: goto yy386
;
1513 case 31: goto yy388
;
1514 case 32: goto yy390
;
1515 case 33: goto yy394
;
1516 case 34: goto yy399
;
1517 case 35: goto yy417
;
1518 case 36: goto yy425
;
1519 case 37: goto yy428
;
1520 case 38: goto yy431
;
1521 case 39: goto yy437
;
1522 case 40: goto yy441
;
1523 case 41: goto yy446
;
1524 case 42: goto yy448
;
1525 case 43: goto yy452
;
1526 case 44: goto yy455
;
1527 case 45: goto yy457
;
1528 case 46: goto yy459
;
1529 case 47: goto yy464
;
1530 case 48: goto yy466
;
1531 case 49: goto yy468
;
1532 case 50: goto yy470
;
1533 case 51: goto yy472
;
1534 case 52: goto yy477
;
1535 case 53: goto yy487
;
1536 case 54: goto yy489
;
1537 case 55: goto yy491
;
1538 case 56: goto yy493
;
1539 case 57: goto yy495
;
1540 case 58: goto yy500
;
1541 case 59: goto yy504
;
1542 case 60: goto yy508
;
1543 case 61: goto yy510
;
1544 case 62: goto yy515
;
1545 case 63: goto yy520
;
1546 case 64: goto yy522
;
1547 case 65: goto yy530
;
1548 case 66: goto yy534
;
1549 case 67: goto yy536
;
1550 case 68: goto yy538
;
1551 case 69: goto yy540
;
1552 case 70: goto yy545
;
1553 case 71: goto yy547
;
1554 case 72: goto yy553
;
1555 case 73: goto yy558
;
1556 case 74: goto yy560
;
1557 case 75: goto yy565
;
1558 case 76: goto yy567
;
1559 case 77: goto yy575
;
1560 case 78: goto yy579
;
1561 case 79: goto yy583
;
1562 case 80: goto yy587
;
1563 case 81: goto yy589
;
1564 default: goto yy594
;
1569 case '.': goto yy209
;
1570 default: goto yy114
;
1575 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1587 case '9': goto yy116
;
1589 case 'd': goto yy211
;
1591 case 'f': goto yy212
;
1593 case 'l': goto yy214
;
1594 default: goto yy118
;
1597 #line 380 "src/parser.re"
1598 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1599 #line 1600 "src/parser.c"
1602 #line 394 "src/parser.re"
1604 #line 1605 "src/parser.c"
1607 #line 395 "src/parser.re"
1608 { goto comment_sl
; }
1609 #line 1610 "src/parser.c"
1613 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1625 case '9': goto yy123
;
1627 case 'd': goto yy211
;
1629 case 'e': goto yy127
;
1631 case 'f': goto yy212
;
1633 case 'l': goto yy214
;
1634 default: goto yy118
;
1638 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1649 case '7': goto yy125
;
1651 case 'l': goto yy128
;
1653 case 'u': goto yy130
;
1660 case '-': goto yy113
;
1670 case '9': goto yy116
;
1671 default: goto yy114
;
1675 yych
= *(mrk
= ++cur
);
1678 case 'l': goto yy216
;
1680 case 'u': goto yy217
;
1681 default: goto yy129
;
1685 #line 376 "src/parser.re"
1686 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1687 #line 1688 "src/parser.c"
1692 case 'l': goto yy219
;
1693 default: goto yy131
;
1697 #line 375 "src/parser.re"
1698 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1699 #line 1700 "src/parser.c"
1724 case 'f': goto yy220
;
1725 default: goto yy114
;
1729 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1797 case 'z': goto yy133
;
1798 case '>': goto yy222
;
1799 default: goto yy114
;
1803 #line 424 "src/parser.re"
1804 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1805 #line 1806 "src/parser.c"
1808 #line 426 "src/parser.re"
1809 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1810 #line 1811 "src/parser.c"
1813 #line 409 "src/parser.re"
1814 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1815 #line 1816 "src/parser.c"
1818 #line 427 "src/parser.re"
1819 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1820 #line 1821 "src/parser.c"
1823 #line 425 "src/parser.re"
1824 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1825 #line 1826 "src/parser.c"
1828 yych
= *(mrk
= ++cur
);
1831 case 'r': goto yy224
;
1836 yych
= *(mrk
= ++cur
);
1901 case 0x7F: goto yy147
;
1902 case '\\': goto yy148
;
1906 #line 487 "src/parser.re"
1907 { NEWTOKEN(PSI_T_AS
); goto start
; }
1908 #line 1909 "src/parser.c"
1911 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1988 case 0x7F: goto yy114
;
1989 default: goto yy184
;
1993 yych
= *(mrk
= ++cur
);
1996 case 'o': goto yy225
;
2001 yych
= *(mrk
= ++cur
);
2004 case 'l': goto yy226
;
2009 yych
= *(mrk
= ++cur
);
2012 case 'u': goto yy227
;
2017 yych
= *(mrk
= ++cur
);
2020 case 'f': goto yy228
;
2025 yych
= *(mrk
= ++cur
);
2028 case 'i': goto yy229
;
2030 case 's': goto yy230
;
2035 yych
= *(mrk
= ++cur
);
2038 case 'd': goto yy231
;
2043 yych
= *(mrk
= ++cur
);
2046 case 'r': goto yy232
;
2051 yych
= *(mrk
= ++cur
);
2054 case 'l': goto yy233
;
2059 yych
= *(mrk
= ++cur
);
2062 case 'o': goto yy234
;
2067 yych
= *(mrk
= ++cur
);
2070 case 'e': goto yy235
;
2075 yych
= *(mrk
= ++cur
);
2078 case 'n': goto yy236
;
2083 yych
= *(mrk
= ++cur
);
2148 case 0x7F: goto yy161
;
2150 case 'd': goto yy237
;
2152 case 'n': goto yy238
;
2153 case '\\': goto yy148
;
2157 #line 457 "src/parser.re"
2158 { NEWTOKEN(PSI_T_IF
); goto start
; }
2159 #line 2160 "src/parser.c"
2162 yych
= *(mrk
= ++cur
);
2165 case 'c': goto yy239
;
2167 case 't': goto yy240
;
2173 #line 392 "src/parser.re"
2174 { char_width
= sizeof(wchar_t)/8; }
2175 #line 2176 "src/parser.c"
2178 yych
= *(mrk
= ++cur
);
2181 case 't': goto yy241
;
2186 yych
= *(mrk
= ++cur
);
2189 case 'b': goto yy243
;
2194 yych
= *(mrk
= ++cur
);
2197 case 'x': goto yy245
;
2202 yych
= *(mrk
= ++cur
);
2205 case 'l': goto yy246
;
2210 yych
= *(mrk
= ++cur
);
2213 case 'j': goto yy247
;
2218 yych
= *(mrk
= ++cur
);
2221 case 't': goto yy248
;
2226 yych
= *(mrk
= ++cur
);
2229 case 's': goto yy249
;
2234 yych
= *(mrk
= ++cur
);
2237 case 'e': goto yy250
;
2242 yych
= *(mrk
= ++cur
);
2245 case 't': goto yy251
;
2250 yych
= *(mrk
= ++cur
);
2253 case 't': goto yy252
;
2258 yych
= *(mrk
= ++cur
);
2261 case 'a': goto yy254
;
2263 case 'r': goto yy255
;
2268 yych
= *(mrk
= ++cur
);
2271 case 'm': goto yy256
;
2276 yych
= *(mrk
= ++cur
);
2278 case '_': goto yy257
;
2283 yych
= *(mrk
= ++cur
);
2286 case 'u': goto yy258
;
2292 #line 391 "src/parser.re"
2294 #line 2295 "src/parser.c"
2297 yych
= *(mrk
= ++cur
);
2300 case 'd': goto yy259
;
2305 yych
= *(mrk
= ++cur
);
2308 case 'r': goto yy260
;
2313 yych
= *(mrk
= ++cur
);
2316 case 'a': goto yy261
;
2322 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2388 case 0x7F: goto yy186
;
2389 case '\\': goto yy148
;
2390 default: goto yy184
;
2393 #line 508 "src/parser.re"
2394 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2395 #line 2396 "src/parser.c"
2398 yych
= *(mrk
= ++cur
);
2400 case 'a': goto yy262
;
2401 case 'e': goto yy263
;
2402 case 'i': goto yy264
;
2403 case 'r': goto yy265
;
2408 yych
= *(mrk
= ++cur
);
2410 case 'O': goto yy225
;
2411 case 'o': goto yy266
;
2416 yych
= *(mrk
= ++cur
);
2418 case 'a': goto yy267
;
2423 yych
= *(mrk
= ++cur
);
2426 case 'u': goto yy227
;
2427 case 'n': goto yy268
;
2432 yych
= *(mrk
= ++cur
);
2434 case 'u': goto yy269
;
2439 yych
= *(mrk
= ++cur
);
2442 case 'd': goto yy231
;
2443 case 'u': goto yy270
;
2448 yych
= *(mrk
= ++cur
);
2450 case 'O': goto yy234
;
2451 case 'o': goto yy271
;
2456 yych
= *(mrk
= ++cur
);
2459 case 'c': goto yy239
;
2460 case 'T': goto yy240
;
2461 case 't': goto yy272
;
2466 yych
= *(mrk
= ++cur
);
2469 case 'b': goto yy243
;
2470 case 'n': goto yy274
;
2475 yych
= *(mrk
= ++cur
);
2477 case 'n': goto yy275
;
2482 yych
= *(mrk
= ++cur
);
2485 case 'e': goto yy250
;
2486 case 'a': goto yy276
;
2491 yych
= *(mrk
= ++cur
);
2493 case 'o': goto yy277
;
2498 yych
= *(mrk
= ++cur
);
2500 case 'g': goto yy278
;
2501 case 'z': goto yy279
;
2506 yych
= *(mrk
= ++cur
);
2509 case 'a': goto yy254
;
2510 case 'R': goto yy255
;
2511 case 'r': goto yy280
;
2516 yych
= *(mrk
= ++cur
);
2518 case 'p': goto yy281
;
2524 #line 390 "src/parser.re"
2526 #line 2527 "src/parser.c"
2529 yych
= *(mrk
= ++cur
);
2531 case '"': goto yy282
;
2536 yych
= *(mrk
= ++cur
);
2539 case 'd': goto yy259
;
2540 case 'i': goto yy284
;
2541 case 's': goto yy285
;
2546 yych
= *(mrk
= ++cur
);
2548 case 'i': goto yy286
;
2549 case 'l': goto yy287
;
2554 #line 411 "src/parser.re"
2555 { NEWTOKEN(PSI_T_OR
); goto start
; }
2556 #line 2557 "src/parser.c"
2559 #line 431 "src/parser.re"
2560 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2561 #line 2562 "src/parser.c"
2566 case 'd': goto yy288
;
2568 case 'f': goto yy290
;
2570 case 'l': goto yy292
;
2571 default: goto yy114
;
2576 #line 381 "src/parser.re"
2577 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2578 #line 2579 "src/parser.c"
2582 #line 382 "src/parser.re"
2583 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2584 #line 2585 "src/parser.c"
2589 case 'u': goto yy294
;
2590 default: goto yy114
;
2596 #line 377 "src/parser.re"
2597 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2598 #line 2599 "src/parser.c"
2603 case 'l': goto yy294
;
2604 default: goto yy218
;
2609 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2612 case '.': goto yy296
;
2634 case 'f': goto yy220
;
2636 case 'l': goto yy128
;
2638 case 'p': goto yy127
;
2640 case 'u': goto yy130
;
2645 #line 510 "src/parser.re"
2646 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2647 #line 2648 "src/parser.c"
2650 yych
= *(mrk
= ++cur
);
2653 case 'a': goto yy298
;
2655 case 'v': goto yy299
;
2660 yych
= *(mrk
= ++cur
);
2663 case 'l': goto yy300
;
2668 yych
= *(mrk
= ++cur
);
2671 case 'l': goto yy301
;
2676 yych
= *(mrk
= ++cur
);
2679 case 'n': goto yy302
;
2684 yych
= *(mrk
= ++cur
);
2687 case 'i': goto yy303
;
2692 yych
= *(mrk
= ++cur
);
2695 case 'f': goto yy304
;
2700 yych
= *(mrk
= ++cur
);
2703 case 'e': goto yy306
;
2708 yych
= *(mrk
= ++cur
);
2711 case 'i': goto yy308
;
2716 yych
= *(mrk
= ++cur
);
2719 case 'o': goto yy309
;
2724 yych
= *(mrk
= ++cur
);
2727 case 's': goto yy310
;
2732 yych
= *(mrk
= ++cur
);
2735 case 'a': goto yy311
;
2740 yych
= *(mrk
= ++cur
);
2743 case 'e': goto yy312
;
2748 yych
= *(mrk
= ++cur
);
2751 case 'c': goto yy314
;
2756 yych
= *(mrk
= ++cur
);
2759 case 'e': goto yy315
;
2764 yych
= *(mrk
= ++cur
);
2767 case 'd': goto yy316
;
2772 yych
= *(mrk
= ++cur
);
2775 case 'l': goto yy317
;
2780 yych
= *(mrk
= ++cur
);
2783 case 'v': goto yy318
;
2788 yych
= *(mrk
= ++cur
);
2853 case 0x7F: goto yy242
;
2854 case '\\': goto yy148
;
2858 #line 482 "src/parser.re"
2859 { NEWTOKEN(PSI_T_LET
); goto start
; }
2860 #line 2861 "src/parser.c"
2863 yych
= *(mrk
= ++cur
);
2928 case 0x7F: goto yy244
;
2929 case '\\': goto yy148
;
2933 #line 481 "src/parser.re"
2934 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2935 #line 2936 "src/parser.c"
2938 yych
= *(mrk
= ++cur
);
2941 case 'e': goto yy319
;
2946 yych
= *(mrk
= ++cur
);
2949 case 'l': goto yy320
;
2954 yych
= *(mrk
= ++cur
);
2957 case 'e': goto yy322
;
2959 case 'v': goto yy323
;
2964 yych
= *(mrk
= ++cur
);
2967 case 'h': goto yy324
;
2972 yych
= *(mrk
= ++cur
);
2975 case 't': goto yy325
;
2980 yych
= *(mrk
= ++cur
);
2982 case '_': goto yy326
;
2987 yych
= *(mrk
= ++cur
);
2990 case 'u': goto yy327
;
2995 yych
= *(mrk
= ++cur
);
3060 case 0x7F: goto yy253
;
3061 case '\\': goto yy148
;
3065 #line 483 "src/parser.re"
3066 { NEWTOKEN(PSI_T_SET
); goto start
; }
3067 #line 3068 "src/parser.c"
3070 yych
= *(mrk
= ++cur
);
3073 case 't': goto yy328
;
3078 yych
= *(mrk
= ++cur
);
3081 case 'i': goto yy329
;
3083 case 'l': goto yy330
;
3085 case 'v': goto yy331
;
3090 yych
= *(mrk
= ++cur
);
3093 case 'p': goto yy332
;
3098 yych
= *(mrk
= ++cur
);
3101 case 'a': goto yy334
;
3103 case 'b': goto yy335
;
3105 case 'f': goto yy336
;
3107 case 'i': goto yy337
;
3109 case 'o': goto yy338
;
3111 case 's': goto yy339
;
3116 yych
= *(mrk
= ++cur
);
3119 case 'e': goto yy340
;
3124 yych
= *(mrk
= ++cur
);
3127 case 'e': goto yy342
;
3132 yych
= *(mrk
= ++cur
);
3135 case 'n': goto yy343
;
3140 yych
= *(mrk
= ++cur
);
3143 case 'l': goto yy344
;
3148 yych
= *(mrk
= ++cur
);
3150 case 's': goto yy346
;
3151 case 't': goto yy347
;
3156 yych
= *(mrk
= ++cur
);
3158 case 'x': goto yy348
;
3163 yych
= *(mrk
= ++cur
);
3165 case 'n': goto yy349
;
3170 yych
= *(mrk
= ++cur
);
3172 case 'e': goto yy350
;
3177 yych
= *(mrk
= ++cur
);
3179 case 'L': goto yy300
;
3180 case 'l': goto yy351
;
3185 yych
= *(mrk
= ++cur
);
3187 case 'r': goto yy353
;
3192 yych
= *(mrk
= ++cur
);
3194 case 's': goto yy355
;
3199 yych
= *(mrk
= ++cur
);
3201 case 'b': goto yy356
;
3206 yych
= *(mrk
= ++cur
);
3208 case 'm': goto yy357
;
3213 yych
= *(mrk
= ++cur
);
3215 case 'A': goto yy311
;
3216 case 'a': goto yy359
;
3221 yych
= *(mrk
= ++cur
);
3286 case 0x7F: goto yy273
;
3288 case 'v': goto yy318
;
3289 case '\\': goto yy148
;
3293 #line 451 "src/parser.re"
3294 { NEWTOKEN(PSI_T_INT
); goto start
; }
3295 #line 3296 "src/parser.c"
3298 yych
= *(mrk
= ++cur
);
3300 case 'e': goto yy360
;
3305 yych
= *(mrk
= ++cur
);
3307 case 'g': goto yy362
;
3312 yych
= *(mrk
= ++cur
);
3314 case 'g': goto yy364
;
3319 yych
= *(mrk
= ++cur
);
3321 case 'r': goto yy365
;
3326 yych
= *(mrk
= ++cur
);
3328 case 'n': goto yy366
;
3333 yych
= *(mrk
= ++cur
);
3335 case 'e': goto yy367
;
3340 yych
= *(mrk
= ++cur
);
3343 case 'i': goto yy329
;
3345 case 'l': goto yy330
;
3347 case 'v': goto yy331
;
3348 case 'u': goto yy368
;
3353 yych
= *(mrk
= ++cur
);
3355 case 'e': goto yy369
;
3361 #line 389 "src/parser.re"
3363 #line 3364 "src/parser.c"
3366 yych
= *(mrk
= ++cur
);
3368 case 'o': goto yy370
;
3373 yych
= *(mrk
= ++cur
);
3375 case 'i': goto yy371
;
3380 yych
= *(mrk
= ++cur
);
3382 case 'd': goto yy372
;
3387 yych
= *(mrk
= ++cur
);
3389 case 'a': goto yy374
;
3395 #line 384 "src/parser.re"
3396 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3397 #line 3398 "src/parser.c"
3401 #line 383 "src/parser.re"
3402 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3403 #line 3404 "src/parser.c"
3407 #line 385 "src/parser.re"
3408 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3409 #line 3410 "src/parser.c"
3413 #line 378 "src/parser.re"
3414 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3415 #line 3416 "src/parser.c"
3418 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3442 case 'f': goto yy296
;
3444 case 'p': goto yy127
;
3445 default: goto yy114
;
3449 yych
= *(mrk
= ++cur
);
3452 case 'y': goto yy375
;
3457 yych
= *(mrk
= ++cur
);
3460 case 'a': goto yy377
;
3465 yych
= *(mrk
= ++cur
);
3468 case 'v': goto yy378
;
3473 yych
= *(mrk
= ++cur
);
3476 case 'a': goto yy379
;
3478 case 'b': goto yy380
;
3480 case 'o': goto yy381
;
3485 yych
= *(mrk
= ++cur
);
3488 case 't': goto yy382
;
3493 yych
= *(mrk
= ++cur
);
3496 case 'n': goto yy384
;
3501 yych
= *(mrk
= ++cur
);
3566 case 0x7F: goto yy305
;
3567 case '\\': goto yy148
;
3571 #line 461 "src/parser.re"
3572 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3573 #line 3574 "src/parser.c"
3576 yych
= *(mrk
= ++cur
);
3641 case 0x7F: goto yy307
;
3642 case '\\': goto yy148
;
3646 #line 460 "src/parser.re"
3647 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3648 #line 3649 "src/parser.c"
3651 yych
= *(mrk
= ++cur
);
3654 case 'f': goto yy385
;
3659 yych
= *(mrk
= ++cur
);
3662 case 'r': goto yy387
;
3667 yych
= *(mrk
= ++cur
);
3670 case 'e': goto yy389
;
3675 yych
= *(mrk
= ++cur
);
3678 case 't': goto yy391
;
3683 yych
= *(mrk
= ++cur
);
3748 case 0x7F: goto yy313
;
3749 case '\\': goto yy148
;
3753 #line 488 "src/parser.re"
3754 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3755 #line 3756 "src/parser.c"
3758 yych
= *(mrk
= ++cur
);
3761 case 't': goto yy392
;
3766 yych
= *(mrk
= ++cur
);
3769 case 'f': goto yy393
;
3774 yych
= *(mrk
= ++cur
);
3777 case 'e': goto yy395
;
3782 yych
= *(mrk
= ++cur
);
3785 case 'u': goto yy396
;
3790 yych
= *(mrk
= ++cur
);
3793 case 'a': goto yy397
;
3798 yych
= *(mrk
= ++cur
);
3801 case 'd': goto yy398
;
3806 yych
= *(mrk
= ++cur
);
3871 case 0x7F: goto yy321
;
3872 case '\\': goto yy148
;
3876 #line 472 "src/parser.re"
3877 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3878 #line 3879 "src/parser.c"
3881 yych
= *(mrk
= ++cur
);
3884 case 'c': goto yy400
;
3889 yych
= *(mrk
= ++cur
);
3892 case 'a': goto yy401
;
3897 yych
= *(mrk
= ++cur
);
3900 case 'v': goto yy402
;
3905 yych
= *(mrk
= ++cur
);
3907 case '_': goto yy403
;
3912 yych
= *(mrk
= ++cur
);
3915 case 'a': goto yy404
;
3920 yych
= *(mrk
= ++cur
);
3923 case 'r': goto yy405
;
3928 yych
= *(mrk
= ++cur
);
3931 case 'i': goto yy406
;
3936 yych
= *(mrk
= ++cur
);
3939 case 'n': goto yy407
;
3944 yych
= *(mrk
= ++cur
);
3947 case 'e': goto yy408
;
3952 yych
= *(mrk
= ++cur
);
3955 case 'a': goto yy409
;
3960 yych
= *(mrk
= ++cur
);
4025 case 0x7F: goto yy333
;
4026 case '\\': goto yy148
;
4030 #line 489 "src/parser.re"
4031 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
4032 #line 4033 "src/parser.c"
4035 yych
= *(mrk
= ++cur
);
4038 case 'r': goto yy410
;
4043 yych
= *(mrk
= ++cur
);
4046 case 'o': goto yy411
;
4051 yych
= *(mrk
= ++cur
);
4054 case 'l': goto yy412
;
4059 yych
= *(mrk
= ++cur
);
4062 case 'n': goto yy413
;
4067 yych
= *(mrk
= ++cur
);
4070 case 'b': goto yy414
;
4075 yych
= *(mrk
= ++cur
);
4078 case 't': goto yy415
;
4083 yych
= *(mrk
= ++cur
);
4148 case 0x7F: goto yy341
;
4149 case '\\': goto yy148
;
4153 #line 470 "src/parser.re"
4154 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4155 #line 4156 "src/parser.c"
4158 yych
= *(mrk
= ++cur
);
4161 case 'f': goto yy416
;
4166 yych
= *(mrk
= ++cur
);
4169 case 'i': goto yy418
;
4174 yych
= *(mrk
= ++cur
);
4239 case 0x7F: goto yy345
;
4240 case '\\': goto yy148
;
4244 #line 498 "src/parser.re"
4245 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4246 #line 4247 "src/parser.c"
4249 yych
= *(mrk
= ++cur
);
4251 case 'm': goto yy419
;
4256 yych
= *(mrk
= ++cur
);
4258 case 't': goto yy420
;
4263 yych
= *(mrk
= ++cur
);
4265 case 't': goto yy421
;
4270 yych
= *(mrk
= ++cur
);
4272 case 'l': goto yy422
;
4277 yych
= *(mrk
= ++cur
);
4279 case 's': goto yy423
;
4284 yych
= *(mrk
= ++cur
);
4349 case 0x7F: goto yy352
;
4351 case 'v': goto yy378
;
4352 case '\\': goto yy148
;
4356 #line 448 "src/parser.re"
4357 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
4358 #line 4359 "src/parser.c"
4361 yych
= *(mrk
= ++cur
);
4426 case 0x7F: goto yy354
;
4427 case '\\': goto yy148
;
4431 #line 449 "src/parser.re"
4432 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
4433 #line 4434 "src/parser.c"
4436 yych
= *(mrk
= ++cur
);
4438 case 't': goto yy424
;
4443 yych
= *(mrk
= ++cur
);
4445 case 'l': goto yy426
;
4450 yych
= *(mrk
= ++cur
);
4515 case 0x7F: goto yy358
;
4516 case '\\': goto yy148
;
4520 #line 445 "src/parser.re"
4521 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
4522 #line 4523 "src/parser.c"
4525 yych
= *(mrk
= ++cur
);
4527 case 'T': goto yy391
;
4528 case 't': goto yy427
;
4533 yych
= *(mrk
= ++cur
);
4598 case 0x7F: goto yy361
;
4599 case '\\': goto yy148
;
4603 #line 441 "src/parser.re"
4604 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4605 #line 4606 "src/parser.c"
4608 yych
= *(mrk
= ++cur
);
4673 case 0x7F: goto yy363
;
4674 case '\\': goto yy148
;
4678 #line 452 "src/parser.re"
4679 { NEWTOKEN(PSI_T_LONG
); goto start
; }
4680 #line 4681 "src/parser.c"
4683 yych
= *(mrk
= ++cur
);
4685 case 'm': goto yy429
;
4690 yych
= *(mrk
= ++cur
);
4692 case 't': goto yy430
;
4697 yych
= *(mrk
= ++cur
);
4699 case 'e': goto yy432
;
4704 yych
= *(mrk
= ++cur
);
4706 case 'o': goto yy433
;
4711 yych
= *(mrk
= ++cur
);
4713 case 'c': goto yy434
;
4718 yych
= *(mrk
= ++cur
);
4720 case 'd': goto yy435
;
4725 yych
= *(mrk
= ++cur
);
4727 case 'n': goto yy436
;
4732 yych
= *(mrk
= ++cur
);
4734 case 'g': goto yy438
;
4739 yych
= *(mrk
= ++cur
);
4804 case 0x7F: goto yy373
;
4805 case '\\': goto yy148
;
4809 #line 447 "src/parser.re"
4810 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4811 #line 4812 "src/parser.c"
4814 yych
= *(mrk
= ++cur
);
4816 case 't': goto yy439
;
4821 yych
= *(mrk
= ++cur
);
4886 case 0x7F: goto yy376
;
4887 case '\\': goto yy148
;
4891 #line 476 "src/parser.re"
4892 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4893 #line 4894 "src/parser.c"
4896 yych
= *(mrk
= ++cur
);
4899 case 'l': goto yy440
;
4904 yych
= *(mrk
= ++cur
);
4907 case 'a': goto yy442
;
4912 yych
= *(mrk
= ++cur
);
4915 case 'b': goto yy443
;
4920 yych
= *(mrk
= ++cur
);
4923 case 'a': goto yy444
;
4928 yych
= *(mrk
= ++cur
);
4931 case 'c': goto yy445
;
4936 yych
= *(mrk
= ++cur
);
5001 case 0x7F: goto yy383
;
5002 case '\\': goto yy148
;
5006 #line 499 "src/parser.re"
5007 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
5008 #line 5009 "src/parser.c"
5011 yych
= *(mrk
= ++cur
);
5014 case 'e': goto yy447
;
5019 yych
= *(mrk
= ++cur
);
5084 case 0x7F: goto yy386
;
5085 case '\\': goto yy148
;
5089 #line 462 "src/parser.re"
5090 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
5091 #line 5092 "src/parser.c"
5094 yych
= *(mrk
= ++cur
);
5159 case 0x7F: goto yy388
;
5160 case '\\': goto yy148
;
5164 #line 467 "src/parser.re"
5165 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
5166 #line 5167 "src/parser.c"
5169 yych
= *(mrk
= ++cur
);
5234 case 0x7F: goto yy390
;
5235 case '\\': goto yy148
;
5239 #line 471 "src/parser.re"
5240 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5241 #line 5242 "src/parser.c"
5244 yych
= *(mrk
= ++cur
);
5247 case 'v': goto yy449
;
5252 yych
= *(mrk
= ++cur
);
5255 case 'i': goto yy450
;
5260 yych
= *(mrk
= ++cur
);
5325 case 0x7F: goto yy394
;
5326 case '\\': goto yy148
;
5330 #line 458 "src/parser.re"
5331 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5332 #line 5333 "src/parser.c"
5335 yych
= *(mrk
= ++cur
);
5338 case 'f': goto yy451
;
5343 yych
= *(mrk
= ++cur
);
5346 case 'd': goto yy453
;
5351 yych
= *(mrk
= ++cur
);
5354 case 'l': goto yy454
;
5359 yych
= *(mrk
= ++cur
);
5424 case 0x7F: goto yy399
;
5425 case '\\': goto yy148
;
5429 #line 473 "src/parser.re"
5430 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5431 #line 5432 "src/parser.c"
5434 yych
= *(mrk
= ++cur
);
5437 case 't': goto yy456
;
5442 yych
= *(mrk
= ++cur
);
5445 case 'l': goto yy458
;
5450 yych
= *(mrk
= ++cur
);
5453 case 'a': goto yy460
;
5458 yych
= *(mrk
= ++cur
);
5461 case 'a': goto yy461
;
5466 yych
= *(mrk
= ++cur
);
5469 case 's': goto yy462
;
5474 yych
= *(mrk
= ++cur
);
5477 case 'n': goto yy463
;
5482 yych
= *(mrk
= ++cur
);
5485 case 'c': goto yy465
;
5490 yych
= *(mrk
= ++cur
);
5493 case 'g': goto yy467
;
5498 yych
= *(mrk
= ++cur
);
5501 case 'n': goto yy469
;
5506 yych
= *(mrk
= ++cur
);
5509 case 'l': goto yy471
;
5514 yych
= *(mrk
= ++cur
);
5517 case 'r': goto yy473
;
5522 yych
= *(mrk
= ++cur
);
5525 case 'o': goto yy474
;
5530 yych
= *(mrk
= ++cur
);
5533 case 'o': goto yy475
;
5538 yych
= *(mrk
= ++cur
);
5541 case 't': goto yy476
;
5546 yych
= *(mrk
= ++cur
);
5549 case 'j': goto yy478
;
5554 yych
= *(mrk
= ++cur
);
5557 case 'r': goto yy479
;
5562 yych
= *(mrk
= ++cur
);
5627 case 0x7F: goto yy417
;
5628 case '\\': goto yy148
;
5632 #line 465 "src/parser.re"
5633 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5634 #line 5635 "src/parser.c"
5637 yych
= *(mrk
= ++cur
);
5640 case 'n': goto yy480
;
5645 yych
= *(mrk
= ++cur
);
5647 case '_': goto yy481
;
5652 yych
= *(mrk
= ++cur
);
5654 case 'r': goto yy482
;
5659 yych
= *(mrk
= ++cur
);
5661 case 'e': goto yy483
;
5666 yych
= *(mrk
= ++cur
);
5668 case 'i': goto yy484
;
5673 yych
= *(mrk
= ++cur
);
5675 case 't': goto yy485
;
5680 yych
= *(mrk
= ++cur
);
5745 case 0x7F: goto yy425
;
5746 case '\\': goto yy148
;
5750 #line 446 "src/parser.re"
5751 { NEWTOKEN(PSI_T_CONST
); goto start
; }
5752 #line 5753 "src/parser.c"
5755 yych
= *(mrk
= ++cur
);
5757 case 'e': goto yy486
;
5762 yych
= *(mrk
= ++cur
);
5827 case 0x7F: goto yy428
;
5829 case 'v': goto yy449
;
5830 case '\\': goto yy148
;
5834 #line 453 "src/parser.re"
5835 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5836 #line 5837 "src/parser.c"
5839 yych
= *(mrk
= ++cur
);
5841 case 'a': goto yy488
;
5846 yych
= *(mrk
= ++cur
);
5911 case 0x7F: goto yy431
;
5912 case '\\': goto yy148
;
5916 #line 450 "src/parser.re"
5917 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5918 #line 5919 "src/parser.c"
5921 yych
= *(mrk
= ++cur
);
5923 case 'd': goto yy490
;
5928 yych
= *(mrk
= ++cur
);
5930 case 'f': goto yy492
;
5935 yych
= *(mrk
= ++cur
);
5937 case 't': goto yy494
;
5942 yych
= *(mrk
= ++cur
);
5944 case 'e': goto yy496
;
5949 yych
= *(mrk
= ++cur
);
6014 case 0x7F: goto yy437
;
6015 case '\\': goto yy148
;
6019 #line 444 "src/parser.re"
6020 { NEWTOKEN(PSI_T_UNION
); goto start
; }
6021 #line 6022 "src/parser.c"
6024 yych
= *(mrk
= ++cur
);
6026 case 'n': goto yy497
;
6031 yych
= *(mrk
= ++cur
);
6033 case 'i': goto yy498
;
6038 yych
= *(mrk
= ++cur
);
6103 case 0x7F: goto yy441
;
6104 case '\\': goto yy148
;
6108 #line 496 "src/parser.re"
6109 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
6110 #line 6111 "src/parser.c"
6113 yych
= *(mrk
= ++cur
);
6116 case 'l': goto yy499
;
6121 yych
= *(mrk
= ++cur
);
6124 case 'l': goto yy501
;
6129 yych
= *(mrk
= ++cur
);
6132 case 'c': goto yy502
;
6137 yych
= *(mrk
= ++cur
);
6202 case 0x7F: goto yy446
;
6203 case '\\': goto yy148
;
6207 #line 500 "src/parser.re"
6208 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
6209 #line 6210 "src/parser.c"
6212 yych
= *(mrk
= ++cur
);
6277 case 0x7F: goto yy448
;
6279 case 'd': goto yy503
;
6280 case '\\': goto yy148
;
6284 #line 463 "src/parser.re"
6285 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6286 #line 6287 "src/parser.c"
6289 yych
= *(mrk
= ++cur
);
6292 case 'a': goto yy505
;
6297 yych
= *(mrk
= ++cur
);
6300 case 'o': goto yy506
;
6305 yych
= *(mrk
= ++cur
);
6370 case 0x7F: goto yy452
;
6371 case '\\': goto yy148
;
6375 #line 459 "src/parser.re"
6376 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6377 #line 6378 "src/parser.c"
6380 yych
= *(mrk
= ++cur
);
6383 case 'e': goto yy507
;
6388 yych
= *(mrk
= ++cur
);
6453 case 0x7F: goto yy455
;
6454 case '\\': goto yy148
;
6458 #line 493 "src/parser.re"
6459 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6460 #line 6461 "src/parser.c"
6463 yych
= *(mrk
= ++cur
);
6528 case 0x7F: goto yy457
;
6529 case '\\': goto yy148
;
6533 #line 477 "src/parser.re"
6534 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6535 #line 6536 "src/parser.c"
6538 yych
= *(mrk
= ++cur
);
6603 case 0x7F: goto yy459
;
6604 case '\\': goto yy148
;
6608 #line 497 "src/parser.re"
6609 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6610 #line 6611 "src/parser.c"
6613 yych
= *(mrk
= ++cur
);
6616 case 'l': goto yy509
;
6621 yych
= *(mrk
= ++cur
);
6624 case 's': goto yy511
;
6629 yych
= *(mrk
= ++cur
);
6632 case 's': goto yy512
;
6637 yych
= *(mrk
= ++cur
);
6702 case 0x7F: goto yy464
;
6703 case '\\': goto yy148
;
6707 #line 486 "src/parser.re"
6708 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6709 #line 6710 "src/parser.c"
6712 yych
= *(mrk
= ++cur
);
6777 case 0x7F: goto yy466
;
6778 case '\\': goto yy148
;
6782 #line 479 "src/parser.re"
6783 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6784 #line 6785 "src/parser.c"
6787 yych
= *(mrk
= ++cur
);
6852 case 0x7F: goto yy468
;
6853 case '\\': goto yy148
;
6857 #line 475 "src/parser.re"
6858 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6859 #line 6860 "src/parser.c"
6862 yych
= *(mrk
= ++cur
);
6927 case 0x7F: goto yy470
;
6928 case '\\': goto yy148
;
6932 #line 490 "src/parser.re"
6933 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6934 #line 6935 "src/parser.c"
6937 yych
= *(mrk
= ++cur
);
7002 case 0x7F: goto yy472
;
7003 case '\\': goto yy148
;
7007 #line 491 "src/parser.re"
7008 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
7009 #line 7010 "src/parser.c"
7012 yych
= *(mrk
= ++cur
);
7015 case 'a': goto yy513
;
7020 yych
= *(mrk
= ++cur
);
7023 case 'l': goto yy514
;
7028 yych
= *(mrk
= ++cur
);
7031 case 'a': goto yy516
;
7036 yych
= *(mrk
= ++cur
);
7101 case 0x7F: goto yy477
;
7102 case '\\': goto yy148
;
7106 #line 504 "src/parser.re"
7107 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7108 #line 7109 "src/parser.c"
7111 yych
= *(mrk
= ++cur
);
7114 case 'e': goto yy517
;
7119 yych
= *(mrk
= ++cur
);
7122 case 'i': goto yy518
;
7127 yych
= *(mrk
= ++cur
);
7130 case 'g': goto yy519
;
7135 yych
= *(mrk
= ++cur
);
7137 case '_': goto yy521
;
7142 yych
= *(mrk
= ++cur
);
7144 case 'i': goto yy523
;
7149 yych
= *(mrk
= ++cur
);
7151 case 'n': goto yy524
;
7156 yych
= *(mrk
= ++cur
);
7158 case 'n': goto yy525
;
7163 yych
= *(mrk
= ++cur
);
7165 case 'r': goto yy526
;
7170 yych
= *(mrk
= ++cur
);
7235 case 0x7F: goto yy487
;
7236 case '\\': goto yy148
;
7240 #line 454 "src/parser.re"
7241 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
7242 #line 7243 "src/parser.c"
7245 yych
= *(mrk
= ++cur
);
7310 case 0x7F: goto yy489
;
7311 case '\\': goto yy148
;
7312 default: goto yy527
;
7315 #line 433 "src/parser.re"
7316 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7317 #line 7318 "src/parser.c"
7320 yych
= *(mrk
= ++cur
);
7385 case 0x7F: goto yy491
;
7386 case '\\': goto yy148
;
7390 #line 456 "src/parser.re"
7391 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
7392 #line 7393 "src/parser.c"
7395 yych
= *(mrk
= ++cur
);
7460 case 0x7F: goto yy493
;
7461 case '\\': goto yy148
;
7465 #line 440 "src/parser.re"
7466 { NEWTOKEN(PSI_T_SIZEOF
); goto start
; }
7467 #line 7468 "src/parser.c"
7470 yych
= *(mrk
= ++cur
);
7535 case 0x7F: goto yy495
;
7536 case '\\': goto yy148
;
7540 #line 443 "src/parser.re"
7541 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7542 #line 7543 "src/parser.c"
7545 yych
= *(mrk
= ++cur
);
7547 case 'f': goto yy529
;
7552 yych
= *(mrk
= ++cur
);
7554 case 'e': goto yy531
;
7559 yych
= *(mrk
= ++cur
);
7561 case 'l': goto yy532
;
7566 yych
= *(mrk
= ++cur
);
7631 case 0x7F: goto yy500
;
7632 case '\\': goto yy148
;
7636 #line 495 "src/parser.re"
7637 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7638 #line 7639 "src/parser.c"
7641 yych
= *(mrk
= ++cur
);
7644 case 'e': goto yy533
;
7649 yych
= *(mrk
= ++cur
);
7652 case 'k': goto yy535
;
7657 yych
= *(mrk
= ++cur
);
7722 case 0x7F: goto yy504
;
7723 case '\\': goto yy148
;
7727 #line 464 "src/parser.re"
7728 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7729 #line 7730 "src/parser.c"
7732 yych
= *(mrk
= ++cur
);
7735 case 'l': goto yy537
;
7740 yych
= *(mrk
= ++cur
);
7743 case 'n': goto yy539
;
7748 yych
= *(mrk
= ++cur
);
7813 case 0x7F: goto yy508
;
7814 case '\\': goto yy148
;
7815 case '_': goto yy541
;
7819 #line 468 "src/parser.re"
7820 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7821 #line 7822 "src/parser.c"
7824 yych
= *(mrk
= ++cur
);
7889 case 0x7F: goto yy510
;
7890 case '\\': goto yy148
;
7894 #line 492 "src/parser.re"
7895 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7896 #line 7897 "src/parser.c"
7899 yych
= *(mrk
= ++cur
);
7902 case 's': goto yy542
;
7907 yych
= *(mrk
= ++cur
);
7910 case 'e': goto yy543
;
7915 yych
= *(mrk
= ++cur
);
7918 case 'y': goto yy544
;
7923 yych
= *(mrk
= ++cur
);
7988 case 0x7F: goto yy515
;
7989 case '\\': goto yy148
;
7993 #line 506 "src/parser.re"
7994 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7995 #line 7996 "src/parser.c"
7998 yych
= *(mrk
= ++cur
);
8001 case 't': goto yy546
;
8006 yych
= *(mrk
= ++cur
);
8009 case 'c': goto yy548
;
8014 yych
= *(mrk
= ++cur
);
8017 case 'n': goto yy549
;
8022 yych
= *(mrk
= ++cur
);
8087 case 0x7F: goto yy520
;
8088 case '\\': goto yy148
;
8092 #line 466 "src/parser.re"
8093 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8094 #line 8095 "src/parser.c"
8097 yych
= *(mrk
= ++cur
);
8162 case 0x7F: goto yy522
;
8163 case '\\': goto yy148
;
8167 #line 438 "src/parser.re"
8168 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8169 #line 8170 "src/parser.c"
8172 yych
= *(mrk
= ++cur
);
8174 case 'b': goto yy550
;
8179 yych
= *(mrk
= ++cur
);
8181 case 's': goto yy551
;
8186 yych
= *(mrk
= ++cur
);
8188 case 'e': goto yy552
;
8193 yych
= *(mrk
= ++cur
);
8195 case 'i': goto yy554
;
8201 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8267 case 0x7F: goto yy55
;
8268 case '\\': goto yy148
;
8269 case 'o': goto yy555
;
8270 default: goto yy527
;
8274 yych
= *(mrk
= ++cur
);
8339 case 0x7F: goto yy530
;
8340 case '\\': goto yy148
;
8344 #line 442 "src/parser.re"
8345 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8346 #line 8347 "src/parser.c"
8349 yych
= *(mrk
= ++cur
);
8351 case 'd': goto yy557
;
8356 yych
= *(mrk
= ++cur
);
8358 case 'e': goto yy559
;
8363 yych
= *(mrk
= ++cur
);
8428 case 0x7F: goto yy534
;
8429 case '\\': goto yy148
;
8433 #line 474 "src/parser.re"
8434 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8435 #line 8436 "src/parser.c"
8438 yych
= *(mrk
= ++cur
);
8503 case 0x7F: goto yy536
;
8504 case '\\': goto yy148
;
8508 #line 478 "src/parser.re"
8509 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8510 #line 8511 "src/parser.c"
8513 yych
= *(mrk
= ++cur
);
8578 case 0x7F: goto yy538
;
8579 case '\\': goto yy148
;
8583 #line 494 "src/parser.re"
8584 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8585 #line 8586 "src/parser.c"
8588 yych
= *(mrk
= ++cur
);
8653 case 0x7F: goto yy540
;
8654 case '\\': goto yy148
;
8658 #line 480 "src/parser.re"
8659 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8660 #line 8661 "src/parser.c"
8663 yych
= *(mrk
= ++cur
);
8666 case 'n': goto yy561
;
8671 yych
= *(mrk
= ++cur
);
8674 case 'e': goto yy562
;
8679 yych
= *(mrk
= ++cur
);
8682 case 'r': goto yy563
;
8687 yych
= *(mrk
= ++cur
);
8752 case 0x7F: goto yy545
;
8753 case '\\': goto yy148
;
8757 #line 502 "src/parser.re"
8758 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8759 #line 8760 "src/parser.c"
8762 yych
= *(mrk
= ++cur
);
8827 case 0x7F: goto yy547
;
8828 case '\\': goto yy148
;
8832 #line 505 "src/parser.re"
8833 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8834 #line 8835 "src/parser.c"
8837 yych
= *(mrk
= ++cur
);
8840 case 't': goto yy564
;
8845 yych
= *(mrk
= ++cur
);
8848 case 'g': goto yy566
;
8853 yych
= *(mrk
= ++cur
);
8855 case 'u': goto yy568
;
8860 yych
= *(mrk
= ++cur
);
8862 case 'i': goto yy569
;
8867 yych
= *(mrk
= ++cur
);
8932 case 0x7F: goto yy553
;
8933 case '\\': goto yy148
;
8937 #line 435 "src/parser.re"
8938 { NEWTOKEN(PSI_T_CPP_INLINE
); goto start
; }
8939 #line 8940 "src/parser.c"
8942 yych
= *(mrk
= ++cur
);
8944 case 'c': goto yy570
;
8950 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9016 case 0x7F: goto yy55
;
9017 case '\\': goto yy148
;
9018 case 'n': goto yy571
;
9019 case 'o': goto yy555
;
9020 default: goto yy527
;
9024 yych
= *(mrk
= ++cur
);
9089 case 0x7F: goto yy558
;
9090 case '\\': goto yy148
;
9094 #line 455 "src/parser.re"
9095 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9096 #line 9097 "src/parser.c"
9099 yych
= *(mrk
= ++cur
);
9164 case 0x7F: goto yy560
;
9165 case '\\': goto yy148
;
9169 #line 439 "src/parser.re"
9170 { NEWTOKEN(PSI_T_VOLATILE
); goto start
; }
9171 #line 9172 "src/parser.c"
9174 yych
= *(mrk
= ++cur
);
9177 case 'e': goto yy572
;
9182 yych
= *(mrk
= ++cur
);
9185 case 'r': goto yy573
;
9190 yych
= *(mrk
= ++cur
);
9193 case 't': goto yy574
;
9198 yych
= *(mrk
= ++cur
);
9263 case 0x7F: goto yy565
;
9264 case '\\': goto yy148
;
9268 #line 501 "src/parser.re"
9269 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9270 #line 9271 "src/parser.c"
9273 yych
= *(mrk
= ++cur
);
9338 case 0x7F: goto yy567
;
9339 case '\\': goto yy148
;
9343 #line 503 "src/parser.re"
9344 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9345 #line 9346 "src/parser.c"
9348 yych
= *(mrk
= ++cur
);
9350 case 't': goto yy576
;
9355 yych
= *(mrk
= ++cur
);
9357 case 'o': goto yy577
;
9362 yych
= *(mrk
= ++cur
);
9364 case 't': goto yy578
;
9370 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9436 case 0x7F: goto yy55
;
9437 case '\\': goto yy148
;
9438 case 'c': goto yy580
;
9439 case 'o': goto yy555
;
9440 default: goto yy527
;
9444 yych
= *(mrk
= ++cur
);
9447 case 'x': goto yy581
;
9452 yych
= *(mrk
= ++cur
);
9455 case 't': goto yy582
;
9460 yych
= *(mrk
= ++cur
);
9525 case 0x7F: goto yy575
;
9526 case '\\': goto yy148
;
9530 #line 484 "src/parser.re"
9531 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9532 #line 9533 "src/parser.c"
9535 yych
= *(mrk
= ++cur
);
9537 case 'e': goto yy584
;
9542 yych
= *(mrk
= ++cur
);
9544 case 'n': goto yy585
;
9549 yych
= *(mrk
= ++cur
);
9614 case 0x7F: goto yy579
;
9615 case '\\': goto yy148
;
9619 #line 436 "src/parser.re"
9620 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9621 #line 9622 "src/parser.c"
9625 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9691 case 0x7F: goto yy55
;
9692 case '\\': goto yy148
;
9693 case 'e': goto yy586
;
9694 case 'o': goto yy555
;
9695 default: goto yy527
;
9699 yych
= *(mrk
= ++cur
);
9702 case 't': goto yy588
;
9707 yych
= *(mrk
= ++cur
);
9772 case 0x7F: goto yy583
;
9773 case '\\': goto yy148
;
9777 #line 485 "src/parser.re"
9778 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9779 #line 9780 "src/parser.c"
9782 yych
= *(mrk
= ++cur
);
9784 case '_': goto yy590
;
9789 yych
= *(mrk
= ++cur
);
9791 case '_': goto yy591
;
9797 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9863 case 0x7F: goto yy587
;
9864 case '\\': goto yy148
;
9865 case 'o': goto yy555
;
9866 default: goto yy527
;
9869 #line 434 "src/parser.re"
9870 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
9871 #line 9872 "src/parser.c"
9874 yych
= *(mrk
= ++cur
);
9939 case 0x7F: goto yy589
;
9940 case '\\': goto yy148
;
9944 #line 469 "src/parser.re"
9945 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9946 #line 9947 "src/parser.c"
9949 yych
= *(mrk
= ++cur
);
9951 case '_': goto yy592
;
9956 yych
= *(mrk
= ++cur
);
9958 case '_': goto yy593
;
9963 yych
= *(mrk
= ++cur
);
9967 case ' ': goto yy595
;
9968 case '(': goto yy597
;
9973 yych
= *(mrk
= ++cur
);
10038 case 0x7F: goto yy594
;
10039 case '\\': goto yy148
;
10040 default: goto yy61
;
10043 #line 437 "src/parser.re"
10044 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10045 #line 10046 "src/parser.c"
10048 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10053 case ' ': goto yy595
;
10054 case '(': goto yy597
;
10055 default: goto yy114
;
10060 case '(': goto yy598
;
10061 default: goto yy114
;
10065 #line 511 "src/parser.re"
10066 { parens
= 2; goto cpp_attribute
; }
10067 #line 10068 "src/parser.c"
10069 #line 517 "src/parser.re"
10074 #line 10075 "src/parser.c"
10076 unsigned char yych
;
10077 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10081 case '\r': goto yy604
;
10082 case '\'': goto yy606
;
10083 case '\\': goto yy608
;
10084 default: goto yy602
;
10088 #line 535 "src/parser.re"
10089 { escaped
= false; goto character
; }
10090 #line 10091 "src/parser.c"
10093 #line 522 "src/parser.re"
10094 { NEWLINE(); goto character
; }
10095 #line 10096 "src/parser.c"
10098 #line 524 "src/parser.re"
10105 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10107 token
->flags
= char_width
;
10110 #line 10111 "src/parser.c"
10113 #line 523 "src/parser.re"
10114 { escaped
= !escaped
; goto character
; }
10115 #line 10116 "src/parser.c"
10117 #line 537 "src/parser.re"
10122 #line 10123 "src/parser.c"
10124 unsigned char yych
;
10125 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10129 case '\r': goto yy614
;
10130 case '"': goto yy616
;
10131 case '\\': goto yy618
;
10132 default: goto yy612
;
10136 #line 555 "src/parser.re"
10137 { escaped
= false; goto string
; }
10138 #line 10139 "src/parser.c"
10141 #line 542 "src/parser.re"
10142 { NEWLINE(); goto string
; }
10143 #line 10144 "src/parser.c"
10146 #line 544 "src/parser.re"
10153 NEWTOKEN(PSI_T_QUOTED_STRING
);
10155 token
->flags
= char_width
;
10158 #line 10159 "src/parser.c"
10161 #line 543 "src/parser.re"
10162 { escaped
= !escaped
; goto string
; }
10163 #line 10164 "src/parser.c"
10165 #line 557 "src/parser.re"
10170 #line 10171 "src/parser.c"
10172 unsigned char yych
;
10173 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10177 case '\r': goto yy624
;
10178 case '*': goto yy626
;
10179 default: goto yy622
;
10184 #line 564 "src/parser.re"
10186 #line 10187 "src/parser.c"
10189 #line 562 "src/parser.re"
10190 { NEWLINE(); goto comment
; }
10191 #line 10192 "src/parser.c"
10195 case '/': goto yy627
;
10196 default: goto yy623
;
10200 #line 563 "src/parser.re"
10201 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10202 #line 10203 "src/parser.c"
10204 #line 566 "src/parser.re"
10209 #line 10210 "src/parser.c"
10211 unsigned char yych
;
10212 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10216 case '\r': goto yy633
;
10217 default: goto yy631
;
10221 #line 572 "src/parser.re"
10222 { goto comment_sl
; }
10223 #line 10224 "src/parser.c"
10226 #line 571 "src/parser.re"
10227 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10228 #line 10229 "src/parser.c"
10230 #line 574 "src/parser.re"
10236 #line 10237 "src/parser.c"
10238 unsigned char yych
;
10239 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10243 case '\r': goto yy639
;
10244 case '(': goto yy641
;
10245 case ')': goto yy643
;
10246 default: goto yy637
;
10250 #line 583 "src/parser.re"
10251 { goto cpp_attribute
; }
10252 #line 10253 "src/parser.c"
10255 #line 582 "src/parser.re"
10256 { NEWLINE(); goto cpp_attribute
; }
10257 #line 10258 "src/parser.c"
10260 #line 580 "src/parser.re"
10261 { ++parens
; goto cpp_attribute
; }
10262 #line 10263 "src/parser.c"
10265 #line 581 "src/parser.re"
10266 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10267 #line 10268 "src/parser.c"
10269 #line 585 "src/parser.re"
10273 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10274 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10275 psi_plist_free(tokens
);
10280 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);