30cbbbff7bc8505428592e8629b2ce9dcaae9cc7
1 /* Generated by re2c 0.16 on Fri Mar 31 10:18:09 2017 */
2 #line 1 "src/parser.re"
3 /*******************************************************************************
4 Copyright (c) 2016, Michael Wallner <mike@php.net>.
7 Redistribution and use in source and binary forms, with or without
8 modification, are permitted provided that the following conditions are met:
10 * Redistributions of source code must retain the above copyright notice,
11 this list of conditions and the following disclaimer.
12 * Redistributions in binary form must reproduce the above copyright
13 notice, this list of conditions and the following disclaimer in the
14 documentation and/or other materials provided with the distribution.
16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
20 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 *******************************************************************************/
28 #include "php_psi_stdinc.h"
37 # define YYMAXFILL 256
40 struct psi_parser
*psi_parser_init(struct psi_parser
*P
, psi_error_cb error
, unsigned flags
)
43 P
= malloc(sizeof(*P
));
45 memset(P
, 0, sizeof(*P
));
47 psi_data_ctor_with_dtors(PSI_DATA(P
), error
, flags
);
49 P
->preproc
= psi_cpp_init(P
);
51 psi_cpp_load_defaults(P
->preproc
);
56 struct psi_parser_input
*psi_parser_open_file(struct psi_parser
*P
, const char *filename
, bool report_errors
)
60 struct psi_parser_input
*fb
;
62 if (stat(filename
, &sb
)) {
64 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
65 "Could not stat '%s': %s",
66 filename
, strerror(errno
));
71 if (!(fb
= malloc(sizeof(*fb
) + strlen(filename
) + 1 + sb
.st_size
+ YYMAXFILL
))) {
73 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
74 "Could not allocate %zu bytes for reading '%s': %s",
75 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
80 if (!(fp
= fopen(filename
, "r"))) {
83 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
84 "Could not open '%s' for reading: %s",
85 filename
, strerror(errno
));
90 if (sb
.st_size
!= fread(fb
->buffer
, 1, sb
.st_size
, fp
)) {
94 P
->error(PSI_DATA(P
), NULL
, PSI_WARNING
,
95 "Could not read %zu bytes from '%s': %s",
96 sb
.st_size
+ YYMAXFILL
, filename
, strerror(errno
));
101 memset(fb
->buffer
+ sb
.st_size
, 0, YYMAXFILL
);
102 fb
->length
= sb
.st_size
;
103 fb
->file
= &fb
->buffer
[sb
.st_size
+ YYMAXFILL
];
104 memcpy(fb
->file
, 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
= malloc(sizeof(*sb
) + sizeof("<stdin>") + length
+ YYMAXFILL
))) {
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
= &sb
->buffer
[length
+ YYMAXFILL
];
125 memcpy(sb
->file
, "<stdin>", sizeof("<stdin>"));
131 static void psi_parser_register_constants(struct psi_parser
*P
)
136 ZEND_HASH_FOREACH_STR_KEY_VAL(&P
->cpp
.defs
, key
, val
)
138 struct psi_impl_def_val
*iv
;
139 struct psi_const_type
*ct
;
147 switch (Z_TYPE_P(val
)) {
152 tmp
.zend
.bval
= Z_TYPE_P(val
) == IS_TRUE
;
157 tmp
.zend
.lval
= Z_LVAL_P(val
);
162 tmp
.dval
= Z_DVAL_P(val
);
167 str
= zval_get_string(val
);
168 tmp
.zend
.str
= zend_string_dup(str
, 1);
169 zend_string_release(str
);
173 iv
= psi_impl_def_val_init(ctt
, NULL
);
175 ct
= psi_const_type_init(ctt
, ctn
);
176 c
= psi_const_init(ct
, key
->val
, iv
);
178 P
->consts
= psi_plist_init((psi_plist_dtor
) psi_const_free
);
180 P
->consts
= psi_plist_add(P
->consts
, &c
);
182 ZEND_HASH_FOREACH_END();
186 struct psi_plist
*psi_parser_preprocess(struct psi_parser
*P
, struct psi_plist
**tokens
)
188 if (psi_cpp_process(P
->preproc
, tokens
)) {
194 bool psi_parser_process(struct psi_parser
*P
, struct psi_plist
*tokens
, size_t *processed
)
196 if (psi_plist_count(tokens
)) {
197 return 0 == psi_parser_proc_parse(P
, tokens
, processed
);
202 bool psi_parser_parse(struct psi_parser
*P
, struct psi_parser_input
*I
)
204 struct psi_plist
*scanned
, *preproc
;
205 size_t processed
= 0;
207 if (!(scanned
= psi_parser_scan(P
, I
))) {
211 if (!(preproc
= psi_parser_preprocess(P
, &scanned
))) {
212 psi_plist_free(scanned
);
216 if (!psi_parser_process(P
, preproc
, &processed
)) {
217 psi_plist_free(preproc
);
221 psi_plist_free(preproc
);
225 void psi_parser_dtor(struct psi_parser
*P
)
227 psi_cpp_free(&P
->preproc
);
228 psi_data_dtor(PSI_DATA(P
));
230 memset(P
, 0, sizeof(*P
));
233 void psi_parser_free(struct psi_parser
**P
)
246 #define NEWTOKEN(t) \
247 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
248 tokens = psi_plist_add(tokens, &token); \
249 if (P->flags & PSI_DEBUG) { \
250 fprintf(stderr, "PSI< "); \
251 psi_token_dump(2, token); \
255 char s
[SIZEOF_UINT32_T
];
259 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
261 struct psi_plist
*tokens
;
262 struct psi_token
*token
;
263 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
268 tok
= mrk
= eol
= cur
= I
->buffer
;
269 lim
= I
->buffer
+ I
->length
;
271 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
279 #line 280 "src/parser.c"
282 unsigned int yyaccept
= 0;
283 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
328 case '\'': goto yy20
;
389 case '\\': goto yy78
;
405 #line 450 "src/parser.re"
406 { NEWTOKEN(-2); goto error
; }
407 #line 408 "src/parser.c"
410 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
419 #line 449 "src/parser.re"
420 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
421 #line 422 "src/parser.c"
424 #line 448 "src/parser.re"
425 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
426 #line 427 "src/parser.c"
429 switch ((yych
= *cur
)) {
434 #line 347 "src/parser.re"
435 { NEWTOKEN(PSI_T_NOT
); goto start
; }
436 #line 437 "src/parser.c"
439 #line 320 "src/parser.re"
440 { escaped
= false; tok
+= 1; goto string
; }
441 #line 442 "src/parser.c"
444 switch ((yych
= *cur
)) {
449 #line 330 "src/parser.re"
450 { NEWTOKEN(PSI_T_HASH
); goto start
; }
451 #line 452 "src/parser.c"
524 #line 348 "src/parser.re"
525 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
526 #line 527 "src/parser.c"
529 switch ((yych
= *cur
)) {
530 case '&': goto yy103
;
534 #line 349 "src/parser.re"
535 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
536 #line 537 "src/parser.c"
539 #line 319 "src/parser.re"
540 { escaped
= false; tok
+= 1; goto character
; }
541 #line 542 "src/parser.c"
544 #line 331 "src/parser.re"
545 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
546 #line 547 "src/parser.c"
549 #line 332 "src/parser.re"
550 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
551 #line 552 "src/parser.c"
554 #line 345 "src/parser.re"
555 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
556 #line 557 "src/parser.c"
559 yych
= *(mrk
= ++cur
);
561 case '.': goto yy105
;
575 #line 350 "src/parser.re"
576 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
577 #line 578 "src/parser.c"
580 #line 334 "src/parser.re"
581 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
582 #line 583 "src/parser.c"
585 yych
= *(mrk
= ++cur
);
587 case '.': goto yy105
;
601 #line 351 "src/parser.re"
602 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
603 #line 604 "src/parser.c"
606 yych
= *(mrk
= ++cur
);
608 case '.': goto yy107
;
618 case '9': goto yy108
;
622 #line 362 "src/parser.re"
623 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
624 #line 625 "src/parser.c"
627 switch ((yych
= *cur
)) {
628 case '*': goto yy111
;
629 case '/': goto yy113
;
633 #line 352 "src/parser.re"
634 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
635 #line 636 "src/parser.c"
638 yych
= *(mrk
= ++cur
);
641 case '.': goto yy115
;
649 case '7': goto yy117
;
651 case 'e': goto yy119
;
653 case 'l': goto yy120
;
655 case 'u': goto yy122
;
657 case 'x': goto yy124
;
661 #line 306 "src/parser.re"
662 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
663 #line 664 "src/parser.c"
667 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
671 case '.': goto yy115
;
683 case 'e': goto yy119
;
685 case 'l': goto yy120
;
687 case 'u': goto yy122
;
692 #line 335 "src/parser.re"
693 { NEWTOKEN(PSI_T_COLON
); goto start
; }
694 #line 695 "src/parser.c"
697 #line 333 "src/parser.re"
698 { NEWTOKEN(PSI_T_EOS
); goto start
; }
699 #line 700 "src/parser.c"
702 yych
= *(mrk
= ++cur
);
769 case 'z': goto yy125
;
770 case '<': goto yy127
;
771 case '=': goto yy129
;
775 #line 360 "src/parser.re"
776 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
777 #line 778 "src/parser.c"
780 switch ((yych
= *cur
)) {
781 case '=': goto yy131
;
785 #line 344 "src/parser.re"
786 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
787 #line 788 "src/parser.c"
790 switch ((yych
= *cur
)) {
791 case '=': goto yy133
;
792 case '>': goto yy135
;
796 #line 361 "src/parser.re"
797 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
798 #line 799 "src/parser.c"
801 #line 364 "src/parser.re"
802 { NEWTOKEN(PSI_T_IIF
); goto start
; }
803 #line 804 "src/parser.c"
806 yych
= *(mrk
= ++cur
);
809 case 'r': goto yy137
;
813 #line 443 "src/parser.re"
814 { NEWTOKEN(PSI_T_NAME
); goto start
; }
815 #line 816 "src/parser.c"
818 yych
= *(mrk
= ++cur
);
821 case 'o': goto yy139
;
826 yych
= *(mrk
= ++cur
);
829 case 'a': goto yy140
;
831 case 'h': goto yy141
;
833 case 'o': goto yy142
;
838 yych
= *(mrk
= ++cur
);
841 case 'e': goto yy143
;
843 case 'o': goto yy144
;
848 yych
= *(mrk
= ++cur
);
851 case 'l': goto yy145
;
853 case 'n': goto yy146
;
855 case 'r': goto yy147
;
860 yych
= *(mrk
= ++cur
);
863 case 'a': goto yy148
;
865 case 'l': goto yy149
;
867 case 'r': goto yy150
;
869 case 'u': goto yy151
;
875 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
942 case 0x7F: goto yy55
;
943 case '\\': goto yy138
;
948 yych
= *(mrk
= ++cur
);
951 case 'f': goto yy152
;
953 case 'n': goto yy154
;
958 yych
= *(mrk
= ++cur
);
962 case '\'': goto yy155
;
964 case 'e': goto yy157
;
966 case 'i': goto yy158
;
968 case 'o': goto yy159
;
973 yych
= *(mrk
= ++cur
);
976 case 'i': goto yy160
;
981 yych
= *(mrk
= ++cur
);
984 case 'u': goto yy161
;
989 yych
= *(mrk
= ++cur
);
992 case 'b': goto yy162
;
997 yych
= *(mrk
= ++cur
);
1000 case 'a': goto yy163
;
1002 case 'o': goto yy164
;
1004 case 'r': goto yy165
;
1009 yych
= *(mrk
= ++cur
);
1012 case 'e': goto yy166
;
1017 yych
= *(mrk
= ++cur
);
1020 case 'e': goto yy167
;
1022 case 'h': goto yy168
;
1024 case 'i': goto yy169
;
1026 case 't': goto yy170
;
1031 yych
= *(mrk
= ++cur
);
1034 case 'e': goto yy171
;
1036 case 'o': goto yy172
;
1038 case 'r': goto yy173
;
1040 case 'y': goto yy174
;
1045 yych
= *(mrk
= ++cur
);
1049 case '\'': goto yy175
;
1051 case 'i': goto yy177
;
1053 case 'n': goto yy178
;
1058 yych
= *(mrk
= ++cur
);
1061 case 'o': goto yy179
;
1066 yych
= *(mrk
= ++cur
);
1069 case 'a': goto yy180
;
1074 yych
= *(mrk
= ++cur
);
1077 case 'v': goto yy181
;
1082 #line 338 "src/parser.re"
1083 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1084 #line 1085 "src/parser.c"
1087 switch ((yych
= *cur
)) {
1162 case 0x7F: goto yy79
;
1163 default: goto yy182
;
1166 #line 353 "src/parser.re"
1167 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1168 #line 1169 "src/parser.c"
1171 #line 339 "src/parser.re"
1172 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1173 #line 1174 "src/parser.c"
1176 #line 355 "src/parser.re"
1177 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1178 #line 1179 "src/parser.c"
1181 yych
= *(mrk
= ++cur
);
1183 case '_': goto yy185
;
1188 yych
= *(mrk
= ++cur
);
1191 case 'e': goto yy157
;
1192 case 'I': goto yy158
;
1194 case 'o': goto yy159
;
1195 case 'i': goto yy186
;
1200 yych
= *(mrk
= ++cur
);
1203 case 'a': goto yy163
;
1205 case 'o': goto yy164
;
1206 case 'R': goto yy165
;
1207 case 'r': goto yy187
;
1212 yych
= *(mrk
= ++cur
);
1216 case '\'': goto yy188
;
1217 case '8': goto yy190
;
1219 case 'i': goto yy177
;
1221 case 'n': goto yy178
;
1226 #line 336 "src/parser.re"
1227 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1228 #line 1229 "src/parser.c"
1231 switch ((yych
= *cur
)) {
1232 case '|': goto yy191
;
1236 #line 354 "src/parser.re"
1237 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1238 #line 1239 "src/parser.c"
1241 #line 337 "src/parser.re"
1242 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1243 #line 1244 "src/parser.c"
1246 #line 346 "src/parser.re"
1247 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1248 #line 1249 "src/parser.c"
1251 #line 340 "src/parser.re"
1252 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1253 #line 1254 "src/parser.c"
1256 #line 329 "src/parser.re"
1257 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1258 #line 1259 "src/parser.c"
1261 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1328 case 0x7F: goto yy102
;
1329 default: goto yy100
;
1332 #line 445 "src/parser.re"
1333 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1334 #line 1335 "src/parser.c"
1337 #line 342 "src/parser.re"
1338 { NEWTOKEN(PSI_T_AND
); goto start
; }
1339 #line 1340 "src/parser.c"
1352 case '9': goto yy108
;
1353 default: goto yy106
;
1368 case 10: goto yy229
;
1369 case 11: goto yy231
;
1370 case 12: goto yy233
;
1371 case 13: goto yy243
;
1372 case 14: goto yy279
;
1373 case 15: goto yy282
;
1374 case 16: goto yy288
;
1375 case 17: goto yy290
;
1376 case 18: goto yy293
;
1377 case 19: goto yy298
;
1378 case 20: goto yy309
;
1379 case 21: goto yy312
;
1380 case 22: goto yy327
;
1381 case 23: goto yy335
;
1382 case 24: goto yy342
;
1383 case 25: goto yy345
;
1384 case 26: goto yy351
;
1385 case 27: goto yy354
;
1386 case 28: goto yy361
;
1387 case 29: goto yy363
;
1388 case 30: goto yy367
;
1389 case 31: goto yy369
;
1390 case 32: goto yy371
;
1391 case 33: goto yy373
;
1392 case 34: goto yy376
;
1393 case 35: goto yy385
;
1394 case 36: goto yy393
;
1395 case 37: goto yy412
;
1396 case 38: goto yy414
;
1397 case 39: goto yy423
;
1398 case 40: goto yy428
;
1399 case 41: goto yy430
;
1400 case 42: goto yy432
;
1401 case 43: goto yy436
;
1402 case 44: goto yy442
;
1403 case 45: goto yy444
;
1404 case 46: goto yy446
;
1405 case 47: goto yy448
;
1406 case 48: goto yy453
;
1407 case 49: goto yy455
;
1408 case 50: goto yy457
;
1409 case 51: goto yy459
;
1410 case 52: goto yy461
;
1411 case 53: goto yy463
;
1412 case 54: goto yy465
;
1413 case 55: goto yy470
;
1414 case 56: goto yy485
;
1415 case 57: goto yy487
;
1416 case 58: goto yy491
;
1417 case 59: goto yy495
;
1418 case 60: goto yy497
;
1419 case 61: goto yy499
;
1420 case 62: goto yy501
;
1421 case 63: goto yy503
;
1422 case 64: goto yy508
;
1423 case 65: goto yy513
;
1424 case 66: goto yy518
;
1425 case 67: goto yy521
;
1426 case 68: goto yy523
;
1427 case 69: goto yy530
;
1428 case 70: goto yy532
;
1429 case 71: goto yy534
;
1430 case 72: goto yy536
;
1431 case 73: goto yy541
;
1432 case 74: goto yy543
;
1433 case 75: goto yy547
;
1434 case 76: goto yy549
;
1435 case 77: goto yy551
;
1436 case 78: goto yy553
;
1437 case 79: goto yy563
;
1438 case 80: goto yy565
;
1439 case 81: goto yy573
;
1440 case 82: goto yy577
;
1441 case 83: goto yy581
;
1442 case 84: goto yy585
;
1443 case 85: goto yy587
;
1444 default: goto yy592
;
1449 case '.': goto yy193
;
1450 default: goto yy106
;
1455 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1468 case '9': goto yy108
;
1470 case 'd': goto yy195
;
1472 case 'f': goto yy196
;
1474 case 'l': goto yy198
;
1475 default: goto yy110
;
1478 #line 312 "src/parser.re"
1479 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1480 #line 1481 "src/parser.c"
1483 #line 326 "src/parser.re"
1485 #line 1486 "src/parser.c"
1488 #line 327 "src/parser.re"
1489 { goto comment_sl
; }
1490 #line 1491 "src/parser.c"
1494 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1507 case '9': goto yy115
;
1509 case 'd': goto yy195
;
1511 case 'e': goto yy119
;
1513 case 'f': goto yy196
;
1515 case 'l': goto yy198
;
1516 default: goto yy110
;
1520 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1531 case '7': goto yy117
;
1533 case 'l': goto yy120
;
1535 case 'u': goto yy122
;
1542 case '-': goto yy105
;
1552 case '9': goto yy108
;
1553 default: goto yy106
;
1557 yych
= *(mrk
= ++cur
);
1560 case 'l': goto yy200
;
1562 case 'u': goto yy201
;
1563 default: goto yy121
;
1567 #line 308 "src/parser.re"
1568 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1569 #line 1570 "src/parser.c"
1572 switch ((yych
= *cur
)) {
1574 case 'l': goto yy203
;
1575 default: goto yy123
;
1579 #line 307 "src/parser.re"
1580 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1581 #line 1582 "src/parser.c"
1606 case 'f': goto yy204
;
1607 default: goto yy106
;
1611 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1679 case 'z': goto yy125
;
1680 case '>': goto yy206
;
1681 default: goto yy106
;
1685 #line 356 "src/parser.re"
1686 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1687 #line 1688 "src/parser.c"
1690 #line 358 "src/parser.re"
1691 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1692 #line 1693 "src/parser.c"
1695 #line 341 "src/parser.re"
1696 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1697 #line 1698 "src/parser.c"
1700 #line 359 "src/parser.re"
1701 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1702 #line 1703 "src/parser.c"
1705 #line 357 "src/parser.re"
1706 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1707 #line 1708 "src/parser.c"
1710 yych
= *(mrk
= ++cur
);
1713 case 'r': goto yy208
;
1718 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1795 case 0x7F: goto yy106
;
1796 default: goto yy182
;
1800 yych
= *(mrk
= ++cur
);
1803 case 'o': goto yy209
;
1808 yych
= *(mrk
= ++cur
);
1811 case 'l': goto yy210
;
1816 yych
= *(mrk
= ++cur
);
1819 case 'a': goto yy211
;
1824 yych
= *(mrk
= ++cur
);
1827 case 'n': goto yy212
;
1829 case 'u': goto yy213
;
1834 yych
= *(mrk
= ++cur
);
1837 case 'f': goto yy214
;
1842 yych
= *(mrk
= ++cur
);
1845 case 'u': goto yy215
;
1850 yych
= *(mrk
= ++cur
);
1853 case 'i': goto yy216
;
1855 case 's': goto yy217
;
1860 yych
= *(mrk
= ++cur
);
1863 case 'd': goto yy218
;
1865 case 'u': goto yy219
;
1870 yych
= *(mrk
= ++cur
);
1873 case 'r': goto yy220
;
1878 yych
= *(mrk
= ++cur
);
1881 case 'l': goto yy221
;
1886 yych
= *(mrk
= ++cur
);
1889 case 'o': goto yy222
;
1894 yych
= *(mrk
= ++cur
);
1897 case 'e': goto yy223
;
1902 yych
= *(mrk
= ++cur
);
1905 case 'n': goto yy224
;
1910 yych
= *(mrk
= ++cur
);
1975 case 0x7F: goto yy153
;
1977 case 'd': goto yy225
;
1979 case 'n': goto yy226
;
1980 case '\\': goto yy138
;
1984 #line 371 "src/parser.re"
1985 { NEWTOKEN(PSI_T_IF
); goto start
; }
1986 #line 1987 "src/parser.c"
1989 yych
= *(mrk
= ++cur
);
1992 case 'c': goto yy227
;
1994 case 't': goto yy228
;
2000 #line 324 "src/parser.re"
2001 { char_width
= SIZEOF_WCHAR_T
/8; }
2002 #line 2003 "src/parser.c"
2005 yych
= *(mrk
= ++cur
);
2008 case 't': goto yy230
;
2013 yych
= *(mrk
= ++cur
);
2016 case 'b': goto yy232
;
2021 yych
= *(mrk
= ++cur
);
2024 case 'n': goto yy234
;
2029 yych
= *(mrk
= ++cur
);
2032 case 'x': goto yy235
;
2037 yych
= *(mrk
= ++cur
);
2040 case 'l': goto yy236
;
2045 yych
= *(mrk
= ++cur
);
2048 case 'j': goto yy237
;
2053 yych
= *(mrk
= ++cur
);
2056 case 't': goto yy238
;
2061 yych
= *(mrk
= ++cur
);
2064 case 's': goto yy239
;
2069 yych
= *(mrk
= ++cur
);
2072 case 'e': goto yy240
;
2077 yych
= *(mrk
= ++cur
);
2080 case 't': goto yy241
;
2085 yych
= *(mrk
= ++cur
);
2088 case 't': goto yy242
;
2093 yych
= *(mrk
= ++cur
);
2096 case 'o': goto yy244
;
2101 yych
= *(mrk
= ++cur
);
2104 case 'g': goto yy245
;
2109 yych
= *(mrk
= ++cur
);
2112 case 'a': goto yy246
;
2114 case 'r': goto yy247
;
2119 yych
= *(mrk
= ++cur
);
2122 case 'm': goto yy248
;
2127 yych
= *(mrk
= ++cur
);
2129 case '_': goto yy249
;
2134 yych
= *(mrk
= ++cur
);
2137 case 'u': goto yy250
;
2142 yych
= *(mrk
= ++cur
);
2145 case 'p': goto yy251
;
2151 #line 323 "src/parser.re"
2153 #line 2154 "src/parser.c"
2156 yych
= *(mrk
= ++cur
);
2159 case 'n': goto yy252
;
2164 yych
= *(mrk
= ++cur
);
2167 case 'd': goto yy253
;
2169 case 'i': goto yy254
;
2171 case 's': goto yy255
;
2176 yych
= *(mrk
= ++cur
);
2179 case 'i': goto yy256
;
2184 yych
= *(mrk
= ++cur
);
2187 case 'r': goto yy257
;
2192 yych
= *(mrk
= ++cur
);
2195 case 'a': goto yy258
;
2201 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2267 case 0x7F: goto yy184
;
2268 case '\\': goto yy138
;
2269 default: goto yy182
;
2272 #line 444 "src/parser.re"
2273 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2274 #line 2275 "src/parser.c"
2277 yych
= *(mrk
= ++cur
);
2279 case 'a': goto yy259
;
2280 case 'e': goto yy260
;
2281 case 'r': goto yy261
;
2286 yych
= *(mrk
= ++cur
);
2289 case 'b': goto yy232
;
2290 case 'n': goto yy262
;
2295 yych
= *(mrk
= ++cur
);
2298 case 'e': goto yy240
;
2299 case 'a': goto yy263
;
2305 #line 322 "src/parser.re"
2307 #line 2308 "src/parser.c"
2310 yych
= *(mrk
= ++cur
);
2313 case '"': goto yy264
;
2318 #line 343 "src/parser.re"
2319 { NEWTOKEN(PSI_T_OR
); goto start
; }
2320 #line 2321 "src/parser.c"
2323 #line 363 "src/parser.re"
2324 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2325 #line 2326 "src/parser.c"
2330 case 'd': goto yy266
;
2332 case 'f': goto yy268
;
2334 case 'l': goto yy270
;
2335 default: goto yy106
;
2340 #line 313 "src/parser.re"
2341 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2342 #line 2343 "src/parser.c"
2346 #line 314 "src/parser.re"
2347 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2348 #line 2349 "src/parser.c"
2353 case 'u': goto yy272
;
2354 default: goto yy106
;
2360 #line 309 "src/parser.re"
2361 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2362 #line 2363 "src/parser.c"
2367 case 'l': goto yy272
;
2368 default: goto yy202
;
2373 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2377 case '.': goto yy274
;
2399 case 'f': goto yy204
;
2401 case 'l': goto yy120
;
2403 case 'p': goto yy119
;
2405 case 'u': goto yy122
;
2410 #line 446 "src/parser.re"
2411 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2412 #line 2413 "src/parser.c"
2415 yych
= *(mrk
= ++cur
);
2418 case 'a': goto yy276
;
2420 case 'v': goto yy277
;
2425 yych
= *(mrk
= ++cur
);
2428 case 'l': goto yy278
;
2433 yych
= *(mrk
= ++cur
);
2436 case 'l': goto yy280
;
2441 yych
= *(mrk
= ++cur
);
2444 case 'r': goto yy281
;
2449 yych
= *(mrk
= ++cur
);
2452 case 's': goto yy283
;
2457 yych
= *(mrk
= ++cur
);
2460 case 'n': goto yy284
;
2465 yych
= *(mrk
= ++cur
);
2468 case 'i': goto yy285
;
2473 yych
= *(mrk
= ++cur
);
2476 case 'b': goto yy286
;
2481 yych
= *(mrk
= ++cur
);
2484 case 'f': goto yy287
;
2489 yych
= *(mrk
= ++cur
);
2492 case 'e': goto yy289
;
2497 yych
= *(mrk
= ++cur
);
2500 case 'i': goto yy291
;
2505 yych
= *(mrk
= ++cur
);
2508 case 'm': goto yy292
;
2513 yych
= *(mrk
= ++cur
);
2516 case 'o': goto yy294
;
2521 yych
= *(mrk
= ++cur
);
2524 case 's': goto yy295
;
2529 yych
= *(mrk
= ++cur
);
2532 case 'a': goto yy296
;
2537 yych
= *(mrk
= ++cur
);
2540 case 'e': goto yy297
;
2545 yych
= *(mrk
= ++cur
);
2548 case 'c': goto yy299
;
2553 yych
= *(mrk
= ++cur
);
2556 case 'e': goto yy300
;
2561 yych
= *(mrk
= ++cur
);
2564 case 'd': goto yy301
;
2569 yych
= *(mrk
= ++cur
);
2572 case 'l': goto yy302
;
2577 yych
= *(mrk
= ++cur
);
2642 case 0x7F: goto yy229
;
2643 case '1': goto yy303
;
2644 case '3': goto yy304
;
2645 case '6': goto yy305
;
2646 case '8': goto yy306
;
2648 case 'v': goto yy307
;
2649 case '\\': goto yy138
;
2653 #line 393 "src/parser.re"
2654 { NEWTOKEN(PSI_T_INT
); goto start
; }
2655 #line 2656 "src/parser.c"
2658 yych
= *(mrk
= ++cur
);
2723 case 0x7F: goto yy231
;
2724 case '\\': goto yy138
;
2728 #line 419 "src/parser.re"
2729 { NEWTOKEN(PSI_T_LET
); goto start
; }
2730 #line 2731 "src/parser.c"
2733 yych
= *(mrk
= ++cur
);
2798 case 0x7F: goto yy233
;
2799 case '\\': goto yy138
;
2803 #line 418 "src/parser.re"
2804 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2805 #line 2806 "src/parser.c"
2808 yych
= *(mrk
= ++cur
);
2811 case 'g': goto yy308
;
2816 yych
= *(mrk
= ++cur
);
2819 case 'e': goto yy310
;
2824 yych
= *(mrk
= ++cur
);
2827 case 'l': goto yy311
;
2832 yych
= *(mrk
= ++cur
);
2835 case 'e': goto yy313
;
2837 case 'v': goto yy314
;
2842 yych
= *(mrk
= ++cur
);
2845 case 'h': goto yy315
;
2850 yych
= *(mrk
= ++cur
);
2853 case 't': goto yy316
;
2858 yych
= *(mrk
= ++cur
);
2860 case '_': goto yy317
;
2865 yych
= *(mrk
= ++cur
);
2868 case 'u': goto yy318
;
2873 yych
= *(mrk
= ++cur
);
2938 case 0x7F: goto yy243
;
2939 case '\\': goto yy138
;
2943 #line 420 "src/parser.re"
2944 { NEWTOKEN(PSI_T_SET
); goto start
; }
2945 #line 2946 "src/parser.c"
2948 yych
= *(mrk
= ++cur
);
2951 case 'r': goto yy319
;
2956 yych
= *(mrk
= ++cur
);
2959 case 'n': goto yy320
;
2964 yych
= *(mrk
= ++cur
);
2967 case 't': goto yy321
;
2972 yych
= *(mrk
= ++cur
);
2975 case 'i': goto yy322
;
2977 case 'l': goto yy323
;
2979 case 'u': goto yy324
;
2981 case 'v': goto yy325
;
2986 yych
= *(mrk
= ++cur
);
2989 case 'p': goto yy326
;
2994 yych
= *(mrk
= ++cur
);
2997 case 'a': goto yy328
;
2999 case 'b': goto yy329
;
3001 case 'f': goto yy330
;
3003 case 'i': goto yy331
;
3005 case 'o': goto yy332
;
3007 case 's': goto yy333
;
3012 yych
= *(mrk
= ++cur
);
3015 case 'e': goto yy334
;
3020 yych
= *(mrk
= ++cur
);
3023 case 'e': goto yy336
;
3028 yych
= *(mrk
= ++cur
);
3031 case 't': goto yy337
;
3036 yych
= *(mrk
= ++cur
);
3039 case 'e': goto yy338
;
3044 yych
= *(mrk
= ++cur
);
3047 case 'o': goto yy339
;
3052 yych
= *(mrk
= ++cur
);
3055 case 'i': goto yy340
;
3060 yych
= *(mrk
= ++cur
);
3063 case 'd': goto yy341
;
3068 yych
= *(mrk
= ++cur
);
3071 case 'n': goto yy343
;
3076 yych
= *(mrk
= ++cur
);
3079 case 'l': goto yy344
;
3084 yych
= *(mrk
= ++cur
);
3086 case 's': goto yy346
;
3087 case 't': goto yy347
;
3092 yych
= *(mrk
= ++cur
);
3094 case 'x': goto yy348
;
3099 yych
= *(mrk
= ++cur
);
3101 case 'e': goto yy349
;
3106 yych
= *(mrk
= ++cur
);
3108 case 'e': goto yy350
;
3113 yych
= *(mrk
= ++cur
);
3115 case 'g': goto yy352
;
3121 #line 321 "src/parser.re"
3123 #line 3124 "src/parser.c"
3127 #line 316 "src/parser.re"
3128 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3129 #line 3130 "src/parser.c"
3133 #line 315 "src/parser.re"
3134 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3135 #line 3136 "src/parser.c"
3139 #line 317 "src/parser.re"
3140 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3141 #line 3142 "src/parser.c"
3145 #line 310 "src/parser.re"
3146 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3147 #line 3148 "src/parser.c"
3150 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3174 case 'f': goto yy274
;
3176 case 'p': goto yy119
;
3177 default: goto yy106
;
3181 yych
= *(mrk
= ++cur
);
3184 case 'y': goto yy353
;
3189 yych
= *(mrk
= ++cur
);
3192 case 'a': goto yy355
;
3197 yych
= *(mrk
= ++cur
);
3262 case 0x7F: goto yy279
;
3264 case 'v': goto yy356
;
3265 case '\\': goto yy138
;
3269 #line 390 "src/parser.re"
3270 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
3271 #line 3272 "src/parser.c"
3274 yych
= *(mrk
= ++cur
);
3277 case 'a': goto yy357
;
3279 case 'b': goto yy358
;
3281 case 'o': goto yy359
;
3286 yych
= *(mrk
= ++cur
);
3351 case 0x7F: goto yy282
;
3352 case '\\': goto yy138
;
3356 #line 391 "src/parser.re"
3357 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
3358 #line 3359 "src/parser.c"
3361 yych
= *(mrk
= ++cur
);
3364 case 't': goto yy360
;
3369 yych
= *(mrk
= ++cur
);
3372 case 't': goto yy362
;
3377 yych
= *(mrk
= ++cur
);
3380 case 'n': goto yy364
;
3385 yych
= *(mrk
= ++cur
);
3388 case 'l': goto yy365
;
3393 yych
= *(mrk
= ++cur
);
3458 case 0x7F: goto yy288
;
3459 case '\\': goto yy138
;
3463 #line 375 "src/parser.re"
3464 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3465 #line 3466 "src/parser.c"
3468 yych
= *(mrk
= ++cur
);
3533 case 0x7F: goto yy290
;
3534 case '\\': goto yy138
;
3538 #line 374 "src/parser.re"
3539 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3540 #line 3541 "src/parser.c"
3543 yych
= *(mrk
= ++cur
);
3546 case 'f': goto yy366
;
3551 yych
= *(mrk
= ++cur
);
3616 case 0x7F: goto yy293
;
3617 case '\\': goto yy138
;
3621 #line 416 "src/parser.re"
3622 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
3623 #line 3624 "src/parser.c"
3626 yych
= *(mrk
= ++cur
);
3629 case 'r': goto yy368
;
3634 yych
= *(mrk
= ++cur
);
3637 case 'e': goto yy370
;
3642 yych
= *(mrk
= ++cur
);
3645 case 't': goto yy372
;
3650 yych
= *(mrk
= ++cur
);
3715 case 0x7F: goto yy298
;
3716 case '\\': goto yy138
;
3720 #line 424 "src/parser.re"
3721 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3722 #line 3723 "src/parser.c"
3725 yych
= *(mrk
= ++cur
);
3728 case 't': goto yy374
;
3733 yych
= *(mrk
= ++cur
);
3736 case 'f': goto yy375
;
3741 yych
= *(mrk
= ++cur
);
3744 case 'e': goto yy377
;
3749 yych
= *(mrk
= ++cur
);
3752 case 'u': goto yy378
;
3757 yych
= *(mrk
= ++cur
);
3759 case '6': goto yy379
;
3764 yych
= *(mrk
= ++cur
);
3766 case '2': goto yy380
;
3771 yych
= *(mrk
= ++cur
);
3773 case '4': goto yy381
;
3778 yych
= *(mrk
= ++cur
);
3780 case '_': goto yy382
;
3785 yych
= *(mrk
= ++cur
);
3788 case 'a': goto yy383
;
3793 yych
= *(mrk
= ++cur
);
3858 case 0x7F: goto yy309
;
3859 case '\\': goto yy138
;
3863 #line 394 "src/parser.re"
3864 { NEWTOKEN(PSI_T_LONG
); goto start
; }
3865 #line 3866 "src/parser.c"
3868 yych
= *(mrk
= ++cur
);
3871 case 'd': goto yy384
;
3876 yych
= *(mrk
= ++cur
);
3941 case 0x7F: goto yy312
;
3942 case '\\': goto yy138
;
3946 #line 386 "src/parser.re"
3947 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3948 #line 3949 "src/parser.c"
3951 yych
= *(mrk
= ++cur
);
3954 case 'c': goto yy386
;
3959 yych
= *(mrk
= ++cur
);
3962 case 'a': goto yy387
;
3967 yych
= *(mrk
= ++cur
);
3970 case 'v': goto yy388
;
3975 yych
= *(mrk
= ++cur
);
3977 case '_': goto yy389
;
3982 yych
= *(mrk
= ++cur
);
3985 case 'a': goto yy390
;
3990 yych
= *(mrk
= ++cur
);
3993 case 'r': goto yy391
;
3998 yych
= *(mrk
= ++cur
);
4001 case 't': goto yy392
;
4006 yych
= *(mrk
= ++cur
);
4009 case 'e': goto yy394
;
4014 yych
= *(mrk
= ++cur
);
4017 case 'i': goto yy395
;
4022 yych
= *(mrk
= ++cur
);
4025 case 'n': goto yy396
;
4030 yych
= *(mrk
= ++cur
);
4033 case 'e': goto yy397
;
4038 yych
= *(mrk
= ++cur
);
4041 case 'c': goto yy398
;
4046 yych
= *(mrk
= ++cur
);
4049 case 'a': goto yy399
;
4054 yych
= *(mrk
= ++cur
);
4119 case 0x7F: goto yy327
;
4120 case '\\': goto yy138
;
4124 #line 425 "src/parser.re"
4125 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
4126 #line 4127 "src/parser.c"
4129 yych
= *(mrk
= ++cur
);
4132 case 'r': goto yy400
;
4137 yych
= *(mrk
= ++cur
);
4140 case 'o': goto yy401
;
4145 yych
= *(mrk
= ++cur
);
4148 case 'l': goto yy402
;
4153 yych
= *(mrk
= ++cur
);
4156 case 'n': goto yy403
;
4161 yych
= *(mrk
= ++cur
);
4164 case 'b': goto yy404
;
4169 yych
= *(mrk
= ++cur
);
4172 case 't': goto yy405
;
4177 yych
= *(mrk
= ++cur
);
4242 case 0x7F: goto yy335
;
4243 case '\\': goto yy138
;
4247 #line 384 "src/parser.re"
4248 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4249 #line 4250 "src/parser.c"
4252 yych
= *(mrk
= ++cur
);
4255 case 'd': goto yy406
;
4260 yych
= *(mrk
= ++cur
);
4262 case '1': goto yy407
;
4263 case '3': goto yy408
;
4264 case '6': goto yy409
;
4265 case '8': goto yy410
;
4270 yych
= *(mrk
= ++cur
);
4273 case 'f': goto yy411
;
4278 yych
= *(mrk
= ++cur
);
4281 case 'n': goto yy413
;
4286 yych
= *(mrk
= ++cur
);
4289 case 'g': goto yy415
;
4294 yych
= *(mrk
= ++cur
);
4359 case 0x7F: goto yy342
;
4360 case '\\': goto yy138
;
4364 #line 389 "src/parser.re"
4365 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4366 #line 4367 "src/parser.c"
4369 yych
= *(mrk
= ++cur
);
4372 case 'i': goto yy416
;
4377 yych
= *(mrk
= ++cur
);
4442 case 0x7F: goto yy345
;
4443 case '\\': goto yy138
;
4447 #line 434 "src/parser.re"
4448 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4449 #line 4450 "src/parser.c"
4452 yych
= *(mrk
= ++cur
);
4454 case 'm': goto yy417
;
4459 yych
= *(mrk
= ++cur
);
4461 case 't': goto yy418
;
4466 yych
= *(mrk
= ++cur
);
4468 case 't': goto yy419
;
4473 yych
= *(mrk
= ++cur
);
4475 case 's': goto yy420
;
4480 yych
= *(mrk
= ++cur
);
4545 case 0x7F: goto yy351
;
4546 case '\\': goto yy138
;
4550 #line 370 "src/parser.re"
4551 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4552 #line 4553 "src/parser.c"
4555 yych
= *(mrk
= ++cur
);
4557 case 'm': goto yy421
;
4562 yych
= *(mrk
= ++cur
);
4627 case 0x7F: goto yy354
;
4628 case '\\': goto yy138
;
4632 #line 408 "src/parser.re"
4633 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4634 #line 4635 "src/parser.c"
4637 yych
= *(mrk
= ++cur
);
4640 case 'l': goto yy422
;
4645 yych
= *(mrk
= ++cur
);
4648 case 'a': goto yy424
;
4653 yych
= *(mrk
= ++cur
);
4656 case 'b': goto yy425
;
4661 yych
= *(mrk
= ++cur
);
4664 case 'a': goto yy426
;
4669 yych
= *(mrk
= ++cur
);
4672 case 'c': goto yy427
;
4677 yych
= *(mrk
= ++cur
);
4742 case 0x7F: goto yy361
;
4743 case '\\': goto yy138
;
4747 #line 417 "src/parser.re"
4748 { NEWTOKEN(PSI_T_CONST
); goto start
; }
4749 #line 4750 "src/parser.c"
4752 yych
= *(mrk
= ++cur
);
4817 case 0x7F: goto yy363
;
4818 case '\\': goto yy138
;
4822 #line 435 "src/parser.re"
4823 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4824 #line 4825 "src/parser.c"
4827 yych
= *(mrk
= ++cur
);
4830 case 'e': goto yy429
;
4835 yych
= *(mrk
= ++cur
);
4838 case 'e': goto yy431
;
4843 yych
= *(mrk
= ++cur
);
4908 case 0x7F: goto yy367
;
4909 case '\\': goto yy138
;
4913 #line 376 "src/parser.re"
4914 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4915 #line 4916 "src/parser.c"
4918 yych
= *(mrk
= ++cur
);
4983 case 0x7F: goto yy369
;
4984 case '\\': goto yy138
;
4988 #line 381 "src/parser.re"
4989 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
4990 #line 4991 "src/parser.c"
4993 yych
= *(mrk
= ++cur
);
5058 case 0x7F: goto yy371
;
5059 case '\\': goto yy138
;
5063 #line 385 "src/parser.re"
5064 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5065 #line 5066 "src/parser.c"
5068 yych
= *(mrk
= ++cur
);
5133 case 0x7F: goto yy373
;
5135 case 'v': goto yy433
;
5136 case '\\': goto yy138
;
5140 #line 395 "src/parser.re"
5141 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5142 #line 5143 "src/parser.c"
5145 yych
= *(mrk
= ++cur
);
5148 case 'i': goto yy434
;
5153 yych
= *(mrk
= ++cur
);
5218 case 0x7F: goto yy376
;
5219 case '\\': goto yy138
;
5223 #line 372 "src/parser.re"
5224 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5225 #line 5226 "src/parser.c"
5228 yych
= *(mrk
= ++cur
);
5231 case 'f': goto yy435
;
5236 yych
= *(mrk
= ++cur
);
5239 case 'd': goto yy437
;
5244 yych
= *(mrk
= ++cur
);
5246 case '_': goto yy438
;
5251 yych
= *(mrk
= ++cur
);
5253 case '_': goto yy439
;
5258 yych
= *(mrk
= ++cur
);
5260 case '_': goto yy440
;
5265 yych
= *(mrk
= ++cur
);
5268 case 't': goto yy441
;
5273 yych
= *(mrk
= ++cur
);
5276 case 'l': goto yy443
;
5281 yych
= *(mrk
= ++cur
);
5346 case 0x7F: goto yy385
;
5347 case '\\': goto yy138
;
5351 #line 387 "src/parser.re"
5352 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5353 #line 5354 "src/parser.c"
5356 yych
= *(mrk
= ++cur
);
5359 case 't': goto yy445
;
5364 yych
= *(mrk
= ++cur
);
5367 case 'l': goto yy447
;
5372 yych
= *(mrk
= ++cur
);
5375 case 'a': goto yy449
;
5380 yych
= *(mrk
= ++cur
);
5383 case 'a': goto yy450
;
5388 yych
= *(mrk
= ++cur
);
5391 case 's': goto yy451
;
5396 yych
= *(mrk
= ++cur
);
5399 case 'n': goto yy452
;
5404 yych
= *(mrk
= ++cur
);
5469 case 0x7F: goto yy393
;
5470 case '\\': goto yy138
;
5474 #line 392 "src/parser.re"
5475 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5476 #line 5477 "src/parser.c"
5479 yych
= *(mrk
= ++cur
);
5482 case 'd': goto yy454
;
5487 yych
= *(mrk
= ++cur
);
5490 case 'c': goto yy456
;
5495 yych
= *(mrk
= ++cur
);
5498 case 'g': goto yy458
;
5503 yych
= *(mrk
= ++cur
);
5506 case 'n': goto yy460
;
5511 yych
= *(mrk
= ++cur
);
5514 case 't': goto yy462
;
5519 yych
= *(mrk
= ++cur
);
5522 case 'l': goto yy464
;
5527 yych
= *(mrk
= ++cur
);
5530 case 'r': goto yy466
;
5535 yych
= *(mrk
= ++cur
);
5538 case 'o': goto yy467
;
5543 yych
= *(mrk
= ++cur
);
5546 case 'o': goto yy468
;
5551 yych
= *(mrk
= ++cur
);
5554 case 't': goto yy469
;
5559 yych
= *(mrk
= ++cur
);
5562 case 'j': goto yy471
;
5567 yych
= *(mrk
= ++cur
);
5570 case 'r': goto yy472
;
5575 yych
= *(mrk
= ++cur
);
5578 case 'e': goto yy473
;
5583 yych
= *(mrk
= ++cur
);
5585 case '6': goto yy474
;
5590 yych
= *(mrk
= ++cur
);
5592 case '2': goto yy475
;
5597 yych
= *(mrk
= ++cur
);
5599 case '4': goto yy476
;
5604 yych
= *(mrk
= ++cur
);
5606 case '_': goto yy477
;
5611 yych
= *(mrk
= ++cur
);
5676 case 0x7F: goto yy412
;
5677 case '\\': goto yy138
;
5681 #line 379 "src/parser.re"
5682 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5683 #line 5684 "src/parser.c"
5686 yych
= *(mrk
= ++cur
);
5751 case 0x7F: goto yy414
;
5752 case '\\': goto yy138
;
5756 #line 415 "src/parser.re"
5757 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5758 #line 5759 "src/parser.c"
5761 yych
= *(mrk
= ++cur
);
5764 case 'n': goto yy478
;
5769 yych
= *(mrk
= ++cur
);
5772 case 'n': goto yy479
;
5777 yych
= *(mrk
= ++cur
);
5779 case '_': goto yy480
;
5784 yych
= *(mrk
= ++cur
);
5786 case 'r': goto yy481
;
5791 yych
= *(mrk
= ++cur
);
5793 case 'e': goto yy482
;
5798 yych
= *(mrk
= ++cur
);
5800 case 't': goto yy483
;
5805 yych
= *(mrk
= ++cur
);
5807 case 'a': goto yy484
;
5812 yych
= *(mrk
= ++cur
);
5877 case 0x7F: goto yy423
;
5878 case '\\': goto yy138
;
5882 #line 432 "src/parser.re"
5883 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5884 #line 5885 "src/parser.c"
5887 yych
= *(mrk
= ++cur
);
5890 case 'l': goto yy486
;
5895 yych
= *(mrk
= ++cur
);
5898 case 'l': goto yy488
;
5903 yych
= *(mrk
= ++cur
);
5906 case 'c': goto yy489
;
5911 yych
= *(mrk
= ++cur
);
5976 case 0x7F: goto yy428
;
5977 case '\\': goto yy138
;
5981 #line 436 "src/parser.re"
5982 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
5983 #line 5984 "src/parser.c"
5986 yych
= *(mrk
= ++cur
);
6051 case 0x7F: goto yy430
;
6053 case 'd': goto yy490
;
6054 case '\\': goto yy138
;
6058 #line 377 "src/parser.re"
6059 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6060 #line 6061 "src/parser.c"
6063 yych
= *(mrk
= ++cur
);
6128 case 0x7F: goto yy432
;
6129 case '\\': goto yy138
;
6133 #line 396 "src/parser.re"
6134 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
6135 #line 6136 "src/parser.c"
6138 yych
= *(mrk
= ++cur
);
6141 case 'a': goto yy492
;
6146 yych
= *(mrk
= ++cur
);
6149 case 'o': goto yy493
;
6154 yych
= *(mrk
= ++cur
);
6219 case 0x7F: goto yy436
;
6220 case '\\': goto yy138
;
6224 #line 373 "src/parser.re"
6225 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6226 #line 6227 "src/parser.c"
6229 yych
= *(mrk
= ++cur
);
6232 case 'e': goto yy494
;
6237 yych
= *(mrk
= ++cur
);
6240 case 't': goto yy496
;
6245 yych
= *(mrk
= ++cur
);
6248 case 't': goto yy498
;
6253 yych
= *(mrk
= ++cur
);
6256 case 't': goto yy500
;
6261 yych
= *(mrk
= ++cur
);
6326 case 0x7F: goto yy442
;
6327 case '\\': goto yy138
;
6331 #line 397 "src/parser.re"
6332 { NEWTOKEN(PSI_T_INT8
); goto start
; }
6333 #line 6334 "src/parser.c"
6336 yych
= *(mrk
= ++cur
);
6401 case 0x7F: goto yy444
;
6402 case '\\': goto yy138
;
6406 #line 429 "src/parser.re"
6407 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6408 #line 6409 "src/parser.c"
6411 yych
= *(mrk
= ++cur
);
6476 case 0x7F: goto yy446
;
6477 case '\\': goto yy138
;
6481 #line 409 "src/parser.re"
6482 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6483 #line 6484 "src/parser.c"
6486 yych
= *(mrk
= ++cur
);
6551 case 0x7F: goto yy448
;
6552 case '\\': goto yy138
;
6556 #line 433 "src/parser.re"
6557 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6558 #line 6559 "src/parser.c"
6561 yych
= *(mrk
= ++cur
);
6564 case 'l': goto yy502
;
6569 yych
= *(mrk
= ++cur
);
6572 case 's': goto yy504
;
6577 yych
= *(mrk
= ++cur
);
6580 case 's': goto yy505
;
6585 yych
= *(mrk
= ++cur
);
6650 case 0x7F: goto yy453
;
6651 case '\\': goto yy138
;
6655 #line 423 "src/parser.re"
6656 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6657 #line 6658 "src/parser.c"
6660 yych
= *(mrk
= ++cur
);
6725 case 0x7F: goto yy455
;
6726 case '\\': goto yy138
;
6730 #line 406 "src/parser.re"
6731 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
6732 #line 6733 "src/parser.c"
6735 yych
= *(mrk
= ++cur
);
6800 case 0x7F: goto yy457
;
6801 case '\\': goto yy138
;
6805 #line 411 "src/parser.re"
6806 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6807 #line 6808 "src/parser.c"
6810 yych
= *(mrk
= ++cur
);
6875 case 0x7F: goto yy459
;
6876 case '\\': goto yy138
;
6880 #line 407 "src/parser.re"
6881 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6882 #line 6883 "src/parser.c"
6885 yych
= *(mrk
= ++cur
);
6950 case 0x7F: goto yy461
;
6951 case '\\': goto yy138
;
6955 #line 426 "src/parser.re"
6956 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6957 #line 6958 "src/parser.c"
6960 yych
= *(mrk
= ++cur
);
7025 case 0x7F: goto yy463
;
7026 case '\\': goto yy138
;
7030 #line 414 "src/parser.re"
7031 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7032 #line 7033 "src/parser.c"
7035 yych
= *(mrk
= ++cur
);
7100 case 0x7F: goto yy465
;
7101 case '\\': goto yy138
;
7105 #line 427 "src/parser.re"
7106 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
7107 #line 7108 "src/parser.c"
7110 yych
= *(mrk
= ++cur
);
7113 case 'a': goto yy506
;
7118 yych
= *(mrk
= ++cur
);
7121 case 'l': goto yy507
;
7126 yych
= *(mrk
= ++cur
);
7129 case 'a': goto yy509
;
7134 yych
= *(mrk
= ++cur
);
7199 case 0x7F: goto yy470
;
7200 case '\\': goto yy138
;
7204 #line 440 "src/parser.re"
7205 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7206 #line 7207 "src/parser.c"
7209 yych
= *(mrk
= ++cur
);
7212 case 'e': goto yy510
;
7217 yych
= *(mrk
= ++cur
);
7220 case 'i': goto yy511
;
7225 yych
= *(mrk
= ++cur
);
7228 case 'f': goto yy512
;
7233 yych
= *(mrk
= ++cur
);
7235 case '_': goto yy514
;
7240 yych
= *(mrk
= ++cur
);
7242 case '_': goto yy515
;
7247 yych
= *(mrk
= ++cur
);
7249 case '_': goto yy516
;
7254 yych
= *(mrk
= ++cur
);
7257 case 't': goto yy517
;
7262 yych
= *(mrk
= ++cur
);
7265 case 'e': goto yy519
;
7270 yych
= *(mrk
= ++cur
);
7273 case 'g': goto yy520
;
7278 yych
= *(mrk
= ++cur
);
7280 case '_': goto yy522
;
7285 yych
= *(mrk
= ++cur
);
7287 case 'i': goto yy524
;
7292 yych
= *(mrk
= ++cur
);
7294 case 'n': goto yy525
;
7299 yych
= *(mrk
= ++cur
);
7301 case 'r': goto yy526
;
7306 yych
= *(mrk
= ++cur
);
7371 case 0x7F: goto yy485
;
7372 case '\\': goto yy138
;
7373 default: goto yy527
;
7376 #line 365 "src/parser.re"
7377 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7378 #line 7379 "src/parser.c"
7381 yych
= *(mrk
= ++cur
);
7446 case 0x7F: goto yy487
;
7447 case '\\': goto yy138
;
7451 #line 431 "src/parser.re"
7452 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7453 #line 7454 "src/parser.c"
7456 yych
= *(mrk
= ++cur
);
7459 case 'e': goto yy529
;
7464 yych
= *(mrk
= ++cur
);
7467 case 'k': goto yy531
;
7472 yych
= *(mrk
= ++cur
);
7537 case 0x7F: goto yy491
;
7538 case '\\': goto yy138
;
7542 #line 378 "src/parser.re"
7543 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7544 #line 7545 "src/parser.c"
7547 yych
= *(mrk
= ++cur
);
7550 case 'l': goto yy533
;
7555 yych
= *(mrk
= ++cur
);
7558 case 'n': goto yy535
;
7563 yych
= *(mrk
= ++cur
);
7628 case 0x7F: goto yy495
;
7629 case '\\': goto yy138
;
7630 case '_': goto yy537
;
7634 #line 382 "src/parser.re"
7635 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7636 #line 7637 "src/parser.c"
7639 yych
= *(mrk
= ++cur
);
7704 case 0x7F: goto yy497
;
7705 case '\\': goto yy138
;
7709 #line 399 "src/parser.re"
7710 { NEWTOKEN(PSI_T_INT16
); goto start
; }
7711 #line 7712 "src/parser.c"
7714 yych
= *(mrk
= ++cur
);
7779 case 0x7F: goto yy499
;
7780 case '\\': goto yy138
;
7784 #line 401 "src/parser.re"
7785 { NEWTOKEN(PSI_T_INT32
); goto start
; }
7786 #line 7787 "src/parser.c"
7789 yych
= *(mrk
= ++cur
);
7854 case 0x7F: goto yy501
;
7855 case '\\': goto yy138
;
7859 #line 403 "src/parser.re"
7860 { NEWTOKEN(PSI_T_INT64
); goto start
; }
7861 #line 7862 "src/parser.c"
7864 yych
= *(mrk
= ++cur
);
7929 case 0x7F: goto yy503
;
7930 case '\\': goto yy138
;
7934 #line 428 "src/parser.re"
7935 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7936 #line 7937 "src/parser.c"
7939 yych
= *(mrk
= ++cur
);
7942 case 's': goto yy538
;
7947 yych
= *(mrk
= ++cur
);
7950 case 'e': goto yy539
;
7955 yych
= *(mrk
= ++cur
);
7958 case 'y': goto yy540
;
7963 yych
= *(mrk
= ++cur
);
8028 case 0x7F: goto yy508
;
8029 case '\\': goto yy138
;
8033 #line 442 "src/parser.re"
8034 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
8035 #line 8036 "src/parser.c"
8038 yych
= *(mrk
= ++cur
);
8041 case 't': goto yy542
;
8046 yych
= *(mrk
= ++cur
);
8049 case 'c': goto yy544
;
8054 yych
= *(mrk
= ++cur
);
8057 case 'n': goto yy545
;
8062 yych
= *(mrk
= ++cur
);
8127 case 0x7F: goto yy513
;
8128 case '\\': goto yy138
;
8132 #line 413 "src/parser.re"
8133 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8134 #line 8135 "src/parser.c"
8137 yych
= *(mrk
= ++cur
);
8140 case 't': goto yy546
;
8145 yych
= *(mrk
= ++cur
);
8148 case 't': goto yy548
;
8153 yych
= *(mrk
= ++cur
);
8156 case 't': goto yy550
;
8161 yych
= *(mrk
= ++cur
);
8226 case 0x7F: goto yy518
;
8227 case '\\': goto yy138
;
8231 #line 398 "src/parser.re"
8232 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
8233 #line 8234 "src/parser.c"
8236 yych
= *(mrk
= ++cur
);
8239 case 'd': goto yy552
;
8244 yych
= *(mrk
= ++cur
);
8309 case 0x7F: goto yy521
;
8310 case '\\': goto yy138
;
8314 #line 380 "src/parser.re"
8315 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8316 #line 8317 "src/parser.c"
8319 yych
= *(mrk
= ++cur
);
8384 case 0x7F: goto yy523
;
8385 case '\\': goto yy138
;
8389 #line 369 "src/parser.re"
8390 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8391 #line 8392 "src/parser.c"
8394 yych
= *(mrk
= ++cur
);
8396 case 'b': goto yy554
;
8401 yych
= *(mrk
= ++cur
);
8403 case 's': goto yy555
;
8408 yych
= *(mrk
= ++cur
);
8410 case 'i': goto yy556
;
8416 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8482 case 0x7F: goto yy55
;
8483 case '\\': goto yy138
;
8484 case 'o': goto yy557
;
8485 default: goto yy527
;
8489 yych
= *(mrk
= ++cur
);
8554 case 0x7F: goto yy530
;
8555 case '\\': goto yy138
;
8559 #line 388 "src/parser.re"
8560 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8561 #line 8562 "src/parser.c"
8564 yych
= *(mrk
= ++cur
);
8629 case 0x7F: goto yy532
;
8630 case '\\': goto yy138
;
8634 #line 410 "src/parser.re"
8635 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8636 #line 8637 "src/parser.c"
8639 yych
= *(mrk
= ++cur
);
8704 case 0x7F: goto yy534
;
8705 case '\\': goto yy138
;
8709 #line 430 "src/parser.re"
8710 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8711 #line 8712 "src/parser.c"
8714 yych
= *(mrk
= ++cur
);
8779 case 0x7F: goto yy536
;
8780 case '\\': goto yy138
;
8784 #line 412 "src/parser.re"
8785 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8786 #line 8787 "src/parser.c"
8789 yych
= *(mrk
= ++cur
);
8792 case 'n': goto yy559
;
8797 yych
= *(mrk
= ++cur
);
8800 case 'e': goto yy560
;
8805 yych
= *(mrk
= ++cur
);
8808 case 'r': goto yy561
;
8813 yych
= *(mrk
= ++cur
);
8878 case 0x7F: goto yy541
;
8879 case '\\': goto yy138
;
8883 #line 438 "src/parser.re"
8884 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8885 #line 8886 "src/parser.c"
8888 yych
= *(mrk
= ++cur
);
8953 case 0x7F: goto yy543
;
8954 case '\\': goto yy138
;
8958 #line 441 "src/parser.re"
8959 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8960 #line 8961 "src/parser.c"
8963 yych
= *(mrk
= ++cur
);
8966 case 't': goto yy562
;
8971 yych
= *(mrk
= ++cur
);
8974 case 'g': goto yy564
;
8979 yych
= *(mrk
= ++cur
);
9044 case 0x7F: goto yy547
;
9045 case '\\': goto yy138
;
9049 #line 400 "src/parser.re"
9050 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
9051 #line 9052 "src/parser.c"
9054 yych
= *(mrk
= ++cur
);
9119 case 0x7F: goto yy549
;
9120 case '\\': goto yy138
;
9124 #line 402 "src/parser.re"
9125 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
9126 #line 9127 "src/parser.c"
9129 yych
= *(mrk
= ++cur
);
9194 case 0x7F: goto yy551
;
9195 case '\\': goto yy138
;
9199 #line 404 "src/parser.re"
9200 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
9201 #line 9202 "src/parser.c"
9204 yych
= *(mrk
= ++cur
);
9269 case 0x7F: goto yy553
;
9270 case '\\': goto yy138
;
9274 #line 405 "src/parser.re"
9275 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9276 #line 9277 "src/parser.c"
9279 yych
= *(mrk
= ++cur
);
9281 case 'u': goto yy566
;
9286 yych
= *(mrk
= ++cur
);
9288 case 'i': goto yy567
;
9293 yych
= *(mrk
= ++cur
);
9295 case 'c': goto yy568
;
9301 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9367 case 0x7F: goto yy55
;
9368 case '\\': goto yy138
;
9369 case 'n': goto yy569
;
9370 case 'o': goto yy557
;
9371 default: goto yy527
;
9375 yych
= *(mrk
= ++cur
);
9378 case 'e': goto yy570
;
9383 yych
= *(mrk
= ++cur
);
9386 case 'r': goto yy571
;
9391 yych
= *(mrk
= ++cur
);
9394 case 't': goto yy572
;
9399 yych
= *(mrk
= ++cur
);
9464 case 0x7F: goto yy563
;
9465 case '\\': goto yy138
;
9469 #line 437 "src/parser.re"
9470 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9471 #line 9472 "src/parser.c"
9474 yych
= *(mrk
= ++cur
);
9539 case 0x7F: goto yy565
;
9540 case '\\': goto yy138
;
9544 #line 439 "src/parser.re"
9545 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9546 #line 9547 "src/parser.c"
9549 yych
= *(mrk
= ++cur
);
9551 case 't': goto yy574
;
9556 yych
= *(mrk
= ++cur
);
9558 case 'o': goto yy575
;
9563 yych
= *(mrk
= ++cur
);
9565 case 't': goto yy576
;
9571 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9637 case 0x7F: goto yy55
;
9638 case '\\': goto yy138
;
9639 case 'c': goto yy578
;
9640 case 'o': goto yy557
;
9641 default: goto yy527
;
9645 yych
= *(mrk
= ++cur
);
9648 case 'x': goto yy579
;
9653 yych
= *(mrk
= ++cur
);
9656 case 't': goto yy580
;
9661 yych
= *(mrk
= ++cur
);
9726 case 0x7F: goto yy573
;
9727 case '\\': goto yy138
;
9731 #line 421 "src/parser.re"
9732 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9733 #line 9734 "src/parser.c"
9736 yych
= *(mrk
= ++cur
);
9738 case 'e': goto yy582
;
9743 yych
= *(mrk
= ++cur
);
9745 case 'n': goto yy583
;
9750 yych
= *(mrk
= ++cur
);
9815 case 0x7F: goto yy577
;
9816 case '\\': goto yy138
;
9820 #line 367 "src/parser.re"
9821 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9822 #line 9823 "src/parser.c"
9826 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9892 case 0x7F: goto yy55
;
9893 case '\\': goto yy138
;
9894 case 'e': goto yy584
;
9895 case 'o': goto yy557
;
9896 default: goto yy527
;
9900 yych
= *(mrk
= ++cur
);
9903 case 't': goto yy586
;
9908 yych
= *(mrk
= ++cur
);
9973 case 0x7F: goto yy581
;
9974 case '\\': goto yy138
;
9978 #line 422 "src/parser.re"
9979 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9980 #line 9981 "src/parser.c"
9983 yych
= *(mrk
= ++cur
);
9985 case '_': goto yy588
;
9990 yych
= *(mrk
= ++cur
);
9992 case '_': goto yy589
;
9998 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10064 case 0x7F: goto yy585
;
10065 case '\\': goto yy138
;
10066 case 'o': goto yy557
;
10067 default: goto yy527
;
10070 #line 366 "src/parser.re"
10071 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
10072 #line 10073 "src/parser.c"
10075 yych
= *(mrk
= ++cur
);
10140 case 0x7F: goto yy587
;
10141 case '\\': goto yy138
;
10142 default: goto yy61
;
10145 #line 383 "src/parser.re"
10146 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
10147 #line 10148 "src/parser.c"
10150 yych
= *(mrk
= ++cur
);
10152 case '_': goto yy590
;
10153 default: goto yy62
;
10157 yych
= *(mrk
= ++cur
);
10159 case '_': goto yy591
;
10160 default: goto yy62
;
10164 yych
= *(mrk
= ++cur
);
10225 case 0x7F: goto yy55
;
10228 case ' ': goto yy593
;
10229 case '(': goto yy595
;
10230 case '\\': goto yy138
;
10231 default: goto yy61
;
10235 yych
= *(mrk
= ++cur
);
10300 case 0x7F: goto yy592
;
10301 case '\\': goto yy138
;
10302 default: goto yy61
;
10305 #line 368 "src/parser.re"
10306 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10307 #line 10308 "src/parser.c"
10310 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10315 case ' ': goto yy593
;
10316 case '(': goto yy595
;
10317 default: goto yy106
;
10322 case '(': goto yy596
;
10323 default: goto yy106
;
10327 #line 447 "src/parser.re"
10328 { parens
= 2; goto cpp_attribute
; }
10329 #line 10330 "src/parser.c"
10331 #line 453 "src/parser.re"
10336 #line 10337 "src/parser.c"
10338 unsigned char yych
;
10339 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10343 case '\r': goto yy602
;
10344 case '\'': goto yy604
;
10345 case '\\': goto yy606
;
10346 default: goto yy600
;
10350 #line 471 "src/parser.re"
10351 { escaped
= false; goto character
; }
10352 #line 10353 "src/parser.c"
10355 #line 458 "src/parser.re"
10356 { NEWLINE(); goto character
; }
10357 #line 10358 "src/parser.c"
10360 #line 460 "src/parser.re"
10367 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10369 token
->flags
= char_width
;
10372 #line 10373 "src/parser.c"
10375 #line 459 "src/parser.re"
10376 { escaped
= !escaped
; }
10377 #line 10378 "src/parser.c"
10379 #line 473 "src/parser.re"
10384 #line 10385 "src/parser.c"
10386 unsigned char yych
;
10387 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10391 case '\r': goto yy612
;
10392 case '"': goto yy614
;
10393 case '\\': goto yy616
;
10394 default: goto yy610
;
10398 #line 491 "src/parser.re"
10399 { escaped
= false; goto string
; }
10400 #line 10401 "src/parser.c"
10403 #line 478 "src/parser.re"
10404 { NEWLINE(); goto string
; }
10405 #line 10406 "src/parser.c"
10408 #line 480 "src/parser.re"
10415 NEWTOKEN(PSI_T_QUOTED_STRING
);
10417 token
->flags
= char_width
;
10420 #line 10421 "src/parser.c"
10423 #line 479 "src/parser.re"
10424 { escaped
= !escaped
; goto string
; }
10425 #line 10426 "src/parser.c"
10427 #line 493 "src/parser.re"
10432 #line 10433 "src/parser.c"
10434 unsigned char yych
;
10435 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10439 case '\r': goto yy622
;
10440 case '*': goto yy624
;
10441 default: goto yy620
;
10446 #line 500 "src/parser.re"
10448 #line 10449 "src/parser.c"
10451 #line 498 "src/parser.re"
10452 { NEWLINE(); goto comment
; }
10453 #line 10454 "src/parser.c"
10457 case '/': goto yy625
;
10458 default: goto yy621
;
10462 #line 499 "src/parser.re"
10463 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10464 #line 10465 "src/parser.c"
10466 #line 502 "src/parser.re"
10471 #line 10472 "src/parser.c"
10473 unsigned char yych
;
10474 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10478 case '\r': goto yy631
;
10479 default: goto yy629
;
10483 #line 508 "src/parser.re"
10484 { goto comment_sl
; }
10485 #line 10486 "src/parser.c"
10488 #line 507 "src/parser.re"
10489 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10490 #line 10491 "src/parser.c"
10492 #line 510 "src/parser.re"
10498 #line 10499 "src/parser.c"
10500 unsigned char yych
;
10501 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10505 case '\r': goto yy637
;
10506 case '(': goto yy639
;
10507 case ')': goto yy641
;
10508 default: goto yy635
;
10512 #line 519 "src/parser.re"
10513 { goto cpp_attribute
; }
10514 #line 10515 "src/parser.c"
10517 #line 518 "src/parser.re"
10518 { NEWLINE(); goto cpp_attribute
; }
10519 #line 10520 "src/parser.c"
10522 #line 516 "src/parser.re"
10523 { ++parens
; goto cpp_attribute
; }
10524 #line 10525 "src/parser.c"
10527 #line 517 "src/parser.re"
10528 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10529 #line 10530 "src/parser.c"
10531 #line 521 "src/parser.re"
10535 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10536 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10537 psi_plist_free(tokens
);
10542 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);