f2d2473c53b42a6c74be4b37b49bd122fa91d104
1 /* Generated by re2c 0.16 on Thu Jul 27 10:44:33 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 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
);
270 tok
= mrk
= eol
= cur
= I
->buffer
;
271 lim
= I
->buffer
+ I
->length
;
273 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
281 #line 282 "src/parser.c"
284 unsigned int yyaccept
= 0;
285 if ((lim
- cur
) < 15) if (cur
>= lim
) goto done
;;
330 case '\'': goto yy20
;
391 case '\\': goto yy78
;
407 #line 452 "src/parser.re"
408 { NEWTOKEN(-2); goto error
; }
409 #line 410 "src/parser.c"
412 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
421 #line 451 "src/parser.re"
422 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
423 #line 424 "src/parser.c"
426 #line 450 "src/parser.re"
427 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
428 #line 429 "src/parser.c"
431 switch ((yych
= *cur
)) {
436 #line 349 "src/parser.re"
437 { NEWTOKEN(PSI_T_NOT
); goto start
; }
438 #line 439 "src/parser.c"
441 #line 322 "src/parser.re"
442 { escaped
= false; tok
+= 1; goto string
; }
443 #line 444 "src/parser.c"
446 switch ((yych
= *cur
)) {
451 #line 332 "src/parser.re"
452 { NEWTOKEN(PSI_T_HASH
); goto start
; }
453 #line 454 "src/parser.c"
526 #line 350 "src/parser.re"
527 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
528 #line 529 "src/parser.c"
531 switch ((yych
= *cur
)) {
532 case '&': goto yy103
;
536 #line 351 "src/parser.re"
537 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
538 #line 539 "src/parser.c"
541 #line 321 "src/parser.re"
542 { escaped
= false; tok
+= 1; goto character
; }
543 #line 544 "src/parser.c"
546 #line 333 "src/parser.re"
547 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
548 #line 549 "src/parser.c"
551 #line 334 "src/parser.re"
552 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
553 #line 554 "src/parser.c"
556 #line 347 "src/parser.re"
557 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
558 #line 559 "src/parser.c"
561 yych
= *(mrk
= ++cur
);
563 case '.': goto yy105
;
577 #line 352 "src/parser.re"
578 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
579 #line 580 "src/parser.c"
582 #line 336 "src/parser.re"
583 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
584 #line 585 "src/parser.c"
587 yych
= *(mrk
= ++cur
);
589 case '.': goto yy105
;
603 #line 353 "src/parser.re"
604 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
605 #line 606 "src/parser.c"
608 yych
= *(mrk
= ++cur
);
610 case '.': goto yy107
;
620 case '9': goto yy108
;
624 #line 364 "src/parser.re"
625 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
626 #line 627 "src/parser.c"
629 switch ((yych
= *cur
)) {
630 case '*': goto yy111
;
631 case '/': goto yy113
;
635 #line 354 "src/parser.re"
636 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
637 #line 638 "src/parser.c"
640 yych
= *(mrk
= ++cur
);
643 case '.': goto yy115
;
651 case '7': goto yy117
;
653 case 'e': goto yy119
;
655 case 'l': goto yy120
;
657 case 'u': goto yy122
;
659 case 'x': goto yy124
;
663 #line 308 "src/parser.re"
664 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
665 #line 666 "src/parser.c"
669 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
673 case '.': goto yy115
;
685 case 'e': goto yy119
;
687 case 'l': goto yy120
;
689 case 'u': goto yy122
;
694 #line 337 "src/parser.re"
695 { NEWTOKEN(PSI_T_COLON
); goto start
; }
696 #line 697 "src/parser.c"
699 #line 335 "src/parser.re"
700 { NEWTOKEN(PSI_T_EOS
); goto start
; }
701 #line 702 "src/parser.c"
704 yych
= *(mrk
= ++cur
);
771 case 'z': goto yy125
;
772 case '<': goto yy127
;
773 case '=': goto yy129
;
777 #line 362 "src/parser.re"
778 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
779 #line 780 "src/parser.c"
782 switch ((yych
= *cur
)) {
783 case '=': goto yy131
;
787 #line 346 "src/parser.re"
788 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
789 #line 790 "src/parser.c"
792 switch ((yych
= *cur
)) {
793 case '=': goto yy133
;
794 case '>': goto yy135
;
798 #line 363 "src/parser.re"
799 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
800 #line 801 "src/parser.c"
803 #line 366 "src/parser.re"
804 { NEWTOKEN(PSI_T_IIF
); goto start
; }
805 #line 806 "src/parser.c"
808 yych
= *(mrk
= ++cur
);
811 case 'r': goto yy137
;
815 #line 445 "src/parser.re"
816 { NEWTOKEN(PSI_T_NAME
); goto start
; }
817 #line 818 "src/parser.c"
820 yych
= *(mrk
= ++cur
);
823 case 'o': goto yy139
;
828 yych
= *(mrk
= ++cur
);
831 case 'a': goto yy140
;
833 case 'h': goto yy141
;
835 case 'o': goto yy142
;
840 yych
= *(mrk
= ++cur
);
843 case 'e': goto yy143
;
845 case 'o': goto yy144
;
850 yych
= *(mrk
= ++cur
);
853 case 'l': goto yy145
;
855 case 'n': goto yy146
;
857 case 'r': goto yy147
;
862 yych
= *(mrk
= ++cur
);
865 case 'a': goto yy148
;
867 case 'l': goto yy149
;
869 case 'r': goto yy150
;
871 case 'u': goto yy151
;
877 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
944 case 0x7F: goto yy55
;
945 case '\\': goto yy138
;
950 yych
= *(mrk
= ++cur
);
953 case 'f': goto yy152
;
955 case 'n': goto yy154
;
960 yych
= *(mrk
= ++cur
);
964 case '\'': goto yy155
;
966 case 'e': goto yy157
;
968 case 'i': goto yy158
;
970 case 'o': goto yy159
;
975 yych
= *(mrk
= ++cur
);
978 case 'i': goto yy160
;
983 yych
= *(mrk
= ++cur
);
986 case 'u': goto yy161
;
991 yych
= *(mrk
= ++cur
);
994 case 'b': goto yy162
;
999 yych
= *(mrk
= ++cur
);
1002 case 'a': goto yy163
;
1004 case 'o': goto yy164
;
1006 case 'r': goto yy165
;
1011 yych
= *(mrk
= ++cur
);
1014 case 'e': goto yy166
;
1019 yych
= *(mrk
= ++cur
);
1022 case 'e': goto yy167
;
1024 case 'h': goto yy168
;
1026 case 'i': goto yy169
;
1028 case 't': goto yy170
;
1033 yych
= *(mrk
= ++cur
);
1036 case 'e': goto yy171
;
1038 case 'o': goto yy172
;
1040 case 'r': goto yy173
;
1042 case 'y': goto yy174
;
1047 yych
= *(mrk
= ++cur
);
1051 case '\'': goto yy175
;
1053 case 'i': goto yy177
;
1055 case 'n': goto yy178
;
1060 yych
= *(mrk
= ++cur
);
1063 case 'o': goto yy179
;
1068 yych
= *(mrk
= ++cur
);
1071 case 'a': goto yy180
;
1076 yych
= *(mrk
= ++cur
);
1079 case 'v': goto yy181
;
1084 #line 340 "src/parser.re"
1085 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1086 #line 1087 "src/parser.c"
1089 switch ((yych
= *cur
)) {
1164 case 0x7F: goto yy79
;
1165 default: goto yy182
;
1168 #line 355 "src/parser.re"
1169 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1170 #line 1171 "src/parser.c"
1173 #line 341 "src/parser.re"
1174 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1175 #line 1176 "src/parser.c"
1178 #line 357 "src/parser.re"
1179 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1180 #line 1181 "src/parser.c"
1183 yych
= *(mrk
= ++cur
);
1185 case '_': goto yy185
;
1190 yych
= *(mrk
= ++cur
);
1193 case 'e': goto yy157
;
1194 case 'I': goto yy158
;
1196 case 'o': goto yy159
;
1197 case 'i': goto yy186
;
1202 yych
= *(mrk
= ++cur
);
1205 case 'a': goto yy163
;
1207 case 'o': goto yy164
;
1208 case 'R': goto yy165
;
1209 case 'r': goto yy187
;
1214 yych
= *(mrk
= ++cur
);
1218 case '\'': goto yy188
;
1219 case '8': goto yy190
;
1221 case 'i': goto yy177
;
1223 case 'n': goto yy178
;
1228 #line 338 "src/parser.re"
1229 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1230 #line 1231 "src/parser.c"
1233 switch ((yych
= *cur
)) {
1234 case '|': goto yy191
;
1238 #line 356 "src/parser.re"
1239 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1240 #line 1241 "src/parser.c"
1243 #line 339 "src/parser.re"
1244 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1245 #line 1246 "src/parser.c"
1248 #line 348 "src/parser.re"
1249 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1250 #line 1251 "src/parser.c"
1253 #line 342 "src/parser.re"
1254 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1255 #line 1256 "src/parser.c"
1258 #line 331 "src/parser.re"
1259 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1260 #line 1261 "src/parser.c"
1263 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1330 case 0x7F: goto yy102
;
1331 default: goto yy100
;
1334 #line 447 "src/parser.re"
1335 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1336 #line 1337 "src/parser.c"
1339 #line 344 "src/parser.re"
1340 { NEWTOKEN(PSI_T_AND
); goto start
; }
1341 #line 1342 "src/parser.c"
1354 case '9': goto yy108
;
1355 default: goto yy106
;
1370 case 10: goto yy229
;
1371 case 11: goto yy231
;
1372 case 12: goto yy233
;
1373 case 13: goto yy243
;
1374 case 14: goto yy279
;
1375 case 15: goto yy282
;
1376 case 16: goto yy288
;
1377 case 17: goto yy290
;
1378 case 18: goto yy293
;
1379 case 19: goto yy298
;
1380 case 20: goto yy309
;
1381 case 21: goto yy312
;
1382 case 22: goto yy327
;
1383 case 23: goto yy335
;
1384 case 24: goto yy342
;
1385 case 25: goto yy345
;
1386 case 26: goto yy351
;
1387 case 27: goto yy354
;
1388 case 28: goto yy361
;
1389 case 29: goto yy363
;
1390 case 30: goto yy367
;
1391 case 31: goto yy369
;
1392 case 32: goto yy371
;
1393 case 33: goto yy373
;
1394 case 34: goto yy376
;
1395 case 35: goto yy385
;
1396 case 36: goto yy393
;
1397 case 37: goto yy412
;
1398 case 38: goto yy414
;
1399 case 39: goto yy423
;
1400 case 40: goto yy428
;
1401 case 41: goto yy430
;
1402 case 42: goto yy432
;
1403 case 43: goto yy436
;
1404 case 44: goto yy442
;
1405 case 45: goto yy444
;
1406 case 46: goto yy446
;
1407 case 47: goto yy448
;
1408 case 48: goto yy453
;
1409 case 49: goto yy455
;
1410 case 50: goto yy457
;
1411 case 51: goto yy459
;
1412 case 52: goto yy461
;
1413 case 53: goto yy463
;
1414 case 54: goto yy465
;
1415 case 55: goto yy470
;
1416 case 56: goto yy485
;
1417 case 57: goto yy487
;
1418 case 58: goto yy491
;
1419 case 59: goto yy495
;
1420 case 60: goto yy497
;
1421 case 61: goto yy499
;
1422 case 62: goto yy501
;
1423 case 63: goto yy503
;
1424 case 64: goto yy508
;
1425 case 65: goto yy513
;
1426 case 66: goto yy518
;
1427 case 67: goto yy521
;
1428 case 68: goto yy523
;
1429 case 69: goto yy530
;
1430 case 70: goto yy532
;
1431 case 71: goto yy534
;
1432 case 72: goto yy536
;
1433 case 73: goto yy541
;
1434 case 74: goto yy543
;
1435 case 75: goto yy547
;
1436 case 76: goto yy549
;
1437 case 77: goto yy551
;
1438 case 78: goto yy553
;
1439 case 79: goto yy563
;
1440 case 80: goto yy565
;
1441 case 81: goto yy573
;
1442 case 82: goto yy577
;
1443 case 83: goto yy581
;
1444 case 84: goto yy585
;
1445 case 85: goto yy587
;
1446 default: goto yy592
;
1451 case '.': goto yy193
;
1452 default: goto yy106
;
1457 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1470 case '9': goto yy108
;
1472 case 'd': goto yy195
;
1474 case 'f': goto yy196
;
1476 case 'l': goto yy198
;
1477 default: goto yy110
;
1480 #line 314 "src/parser.re"
1481 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1482 #line 1483 "src/parser.c"
1485 #line 328 "src/parser.re"
1487 #line 1488 "src/parser.c"
1490 #line 329 "src/parser.re"
1491 { goto comment_sl
; }
1492 #line 1493 "src/parser.c"
1496 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1509 case '9': goto yy115
;
1511 case 'd': goto yy195
;
1513 case 'e': goto yy119
;
1515 case 'f': goto yy196
;
1517 case 'l': goto yy198
;
1518 default: goto yy110
;
1522 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1533 case '7': goto yy117
;
1535 case 'l': goto yy120
;
1537 case 'u': goto yy122
;
1544 case '-': goto yy105
;
1554 case '9': goto yy108
;
1555 default: goto yy106
;
1559 yych
= *(mrk
= ++cur
);
1562 case 'l': goto yy200
;
1564 case 'u': goto yy201
;
1565 default: goto yy121
;
1569 #line 310 "src/parser.re"
1570 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1571 #line 1572 "src/parser.c"
1574 switch ((yych
= *cur
)) {
1576 case 'l': goto yy203
;
1577 default: goto yy123
;
1581 #line 309 "src/parser.re"
1582 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1583 #line 1584 "src/parser.c"
1608 case 'f': goto yy204
;
1609 default: goto yy106
;
1613 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1681 case 'z': goto yy125
;
1682 case '>': goto yy206
;
1683 default: goto yy106
;
1687 #line 358 "src/parser.re"
1688 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1689 #line 1690 "src/parser.c"
1692 #line 360 "src/parser.re"
1693 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1694 #line 1695 "src/parser.c"
1697 #line 343 "src/parser.re"
1698 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1699 #line 1700 "src/parser.c"
1702 #line 361 "src/parser.re"
1703 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1704 #line 1705 "src/parser.c"
1707 #line 359 "src/parser.re"
1708 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1709 #line 1710 "src/parser.c"
1712 yych
= *(mrk
= ++cur
);
1715 case 'r': goto yy208
;
1720 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1797 case 0x7F: goto yy106
;
1798 default: goto yy182
;
1802 yych
= *(mrk
= ++cur
);
1805 case 'o': goto yy209
;
1810 yych
= *(mrk
= ++cur
);
1813 case 'l': goto yy210
;
1818 yych
= *(mrk
= ++cur
);
1821 case 'a': goto yy211
;
1826 yych
= *(mrk
= ++cur
);
1829 case 'n': goto yy212
;
1831 case 'u': goto yy213
;
1836 yych
= *(mrk
= ++cur
);
1839 case 'f': goto yy214
;
1844 yych
= *(mrk
= ++cur
);
1847 case 'u': goto yy215
;
1852 yych
= *(mrk
= ++cur
);
1855 case 'i': goto yy216
;
1857 case 's': goto yy217
;
1862 yych
= *(mrk
= ++cur
);
1865 case 'd': goto yy218
;
1867 case 'u': goto yy219
;
1872 yych
= *(mrk
= ++cur
);
1875 case 'r': goto yy220
;
1880 yych
= *(mrk
= ++cur
);
1883 case 'l': goto yy221
;
1888 yych
= *(mrk
= ++cur
);
1891 case 'o': goto yy222
;
1896 yych
= *(mrk
= ++cur
);
1899 case 'e': goto yy223
;
1904 yych
= *(mrk
= ++cur
);
1907 case 'n': goto yy224
;
1912 yych
= *(mrk
= ++cur
);
1977 case 0x7F: goto yy153
;
1979 case 'd': goto yy225
;
1981 case 'n': goto yy226
;
1982 case '\\': goto yy138
;
1986 #line 373 "src/parser.re"
1987 { NEWTOKEN(PSI_T_IF
); goto start
; }
1988 #line 1989 "src/parser.c"
1991 yych
= *(mrk
= ++cur
);
1994 case 'c': goto yy227
;
1996 case 't': goto yy228
;
2002 #line 326 "src/parser.re"
2003 { char_width
= SIZEOF_WCHAR_T
/8; }
2004 #line 2005 "src/parser.c"
2007 yych
= *(mrk
= ++cur
);
2010 case 't': goto yy230
;
2015 yych
= *(mrk
= ++cur
);
2018 case 'b': goto yy232
;
2023 yych
= *(mrk
= ++cur
);
2026 case 'n': goto yy234
;
2031 yych
= *(mrk
= ++cur
);
2034 case 'x': goto yy235
;
2039 yych
= *(mrk
= ++cur
);
2042 case 'l': goto yy236
;
2047 yych
= *(mrk
= ++cur
);
2050 case 'j': goto yy237
;
2055 yych
= *(mrk
= ++cur
);
2058 case 't': goto yy238
;
2063 yych
= *(mrk
= ++cur
);
2066 case 's': goto yy239
;
2071 yych
= *(mrk
= ++cur
);
2074 case 'e': goto yy240
;
2079 yych
= *(mrk
= ++cur
);
2082 case 't': goto yy241
;
2087 yych
= *(mrk
= ++cur
);
2090 case 't': goto yy242
;
2095 yych
= *(mrk
= ++cur
);
2098 case 'o': goto yy244
;
2103 yych
= *(mrk
= ++cur
);
2106 case 'g': goto yy245
;
2111 yych
= *(mrk
= ++cur
);
2114 case 'a': goto yy246
;
2116 case 'r': goto yy247
;
2121 yych
= *(mrk
= ++cur
);
2124 case 'm': goto yy248
;
2129 yych
= *(mrk
= ++cur
);
2131 case '_': goto yy249
;
2136 yych
= *(mrk
= ++cur
);
2139 case 'u': goto yy250
;
2144 yych
= *(mrk
= ++cur
);
2147 case 'p': goto yy251
;
2153 #line 325 "src/parser.re"
2155 #line 2156 "src/parser.c"
2158 yych
= *(mrk
= ++cur
);
2161 case 'n': goto yy252
;
2166 yych
= *(mrk
= ++cur
);
2169 case 'd': goto yy253
;
2171 case 'i': goto yy254
;
2173 case 's': goto yy255
;
2178 yych
= *(mrk
= ++cur
);
2181 case 'i': goto yy256
;
2186 yych
= *(mrk
= ++cur
);
2189 case 'r': goto yy257
;
2194 yych
= *(mrk
= ++cur
);
2197 case 'a': goto yy258
;
2203 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2269 case 0x7F: goto yy184
;
2270 case '\\': goto yy138
;
2271 default: goto yy182
;
2274 #line 446 "src/parser.re"
2275 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2276 #line 2277 "src/parser.c"
2279 yych
= *(mrk
= ++cur
);
2281 case 'a': goto yy259
;
2282 case 'e': goto yy260
;
2283 case 'r': goto yy261
;
2288 yych
= *(mrk
= ++cur
);
2291 case 'b': goto yy232
;
2292 case 'n': goto yy262
;
2297 yych
= *(mrk
= ++cur
);
2300 case 'e': goto yy240
;
2301 case 'a': goto yy263
;
2307 #line 324 "src/parser.re"
2309 #line 2310 "src/parser.c"
2312 yych
= *(mrk
= ++cur
);
2315 case '"': goto yy264
;
2320 #line 345 "src/parser.re"
2321 { NEWTOKEN(PSI_T_OR
); goto start
; }
2322 #line 2323 "src/parser.c"
2325 #line 365 "src/parser.re"
2326 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2327 #line 2328 "src/parser.c"
2332 case 'd': goto yy266
;
2334 case 'f': goto yy268
;
2336 case 'l': goto yy270
;
2337 default: goto yy106
;
2342 #line 315 "src/parser.re"
2343 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2344 #line 2345 "src/parser.c"
2348 #line 316 "src/parser.re"
2349 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2350 #line 2351 "src/parser.c"
2355 case 'u': goto yy272
;
2356 default: goto yy106
;
2362 #line 311 "src/parser.re"
2363 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2364 #line 2365 "src/parser.c"
2369 case 'l': goto yy272
;
2370 default: goto yy202
;
2375 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2379 case '.': goto yy274
;
2401 case 'f': goto yy204
;
2403 case 'l': goto yy120
;
2405 case 'p': goto yy119
;
2407 case 'u': goto yy122
;
2412 #line 448 "src/parser.re"
2413 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2414 #line 2415 "src/parser.c"
2417 yych
= *(mrk
= ++cur
);
2420 case 'a': goto yy276
;
2422 case 'v': goto yy277
;
2427 yych
= *(mrk
= ++cur
);
2430 case 'l': goto yy278
;
2435 yych
= *(mrk
= ++cur
);
2438 case 'l': goto yy280
;
2443 yych
= *(mrk
= ++cur
);
2446 case 'r': goto yy281
;
2451 yych
= *(mrk
= ++cur
);
2454 case 's': goto yy283
;
2459 yych
= *(mrk
= ++cur
);
2462 case 'n': goto yy284
;
2467 yych
= *(mrk
= ++cur
);
2470 case 'i': goto yy285
;
2475 yych
= *(mrk
= ++cur
);
2478 case 'b': goto yy286
;
2483 yych
= *(mrk
= ++cur
);
2486 case 'f': goto yy287
;
2491 yych
= *(mrk
= ++cur
);
2494 case 'e': goto yy289
;
2499 yych
= *(mrk
= ++cur
);
2502 case 'i': goto yy291
;
2507 yych
= *(mrk
= ++cur
);
2510 case 'm': goto yy292
;
2515 yych
= *(mrk
= ++cur
);
2518 case 'o': goto yy294
;
2523 yych
= *(mrk
= ++cur
);
2526 case 's': goto yy295
;
2531 yych
= *(mrk
= ++cur
);
2534 case 'a': goto yy296
;
2539 yych
= *(mrk
= ++cur
);
2542 case 'e': goto yy297
;
2547 yych
= *(mrk
= ++cur
);
2550 case 'c': goto yy299
;
2555 yych
= *(mrk
= ++cur
);
2558 case 'e': goto yy300
;
2563 yych
= *(mrk
= ++cur
);
2566 case 'd': goto yy301
;
2571 yych
= *(mrk
= ++cur
);
2574 case 'l': goto yy302
;
2579 yych
= *(mrk
= ++cur
);
2644 case 0x7F: goto yy229
;
2645 case '1': goto yy303
;
2646 case '3': goto yy304
;
2647 case '6': goto yy305
;
2648 case '8': goto yy306
;
2650 case 'v': goto yy307
;
2651 case '\\': goto yy138
;
2655 #line 395 "src/parser.re"
2656 { NEWTOKEN(PSI_T_INT
); goto start
; }
2657 #line 2658 "src/parser.c"
2660 yych
= *(mrk
= ++cur
);
2725 case 0x7F: goto yy231
;
2726 case '\\': goto yy138
;
2730 #line 421 "src/parser.re"
2731 { NEWTOKEN(PSI_T_LET
); goto start
; }
2732 #line 2733 "src/parser.c"
2735 yych
= *(mrk
= ++cur
);
2800 case 0x7F: goto yy233
;
2801 case '\\': goto yy138
;
2805 #line 420 "src/parser.re"
2806 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2807 #line 2808 "src/parser.c"
2810 yych
= *(mrk
= ++cur
);
2813 case 'g': goto yy308
;
2818 yych
= *(mrk
= ++cur
);
2821 case 'e': goto yy310
;
2826 yych
= *(mrk
= ++cur
);
2829 case 'l': goto yy311
;
2834 yych
= *(mrk
= ++cur
);
2837 case 'e': goto yy313
;
2839 case 'v': goto yy314
;
2844 yych
= *(mrk
= ++cur
);
2847 case 'h': goto yy315
;
2852 yych
= *(mrk
= ++cur
);
2855 case 't': goto yy316
;
2860 yych
= *(mrk
= ++cur
);
2862 case '_': goto yy317
;
2867 yych
= *(mrk
= ++cur
);
2870 case 'u': goto yy318
;
2875 yych
= *(mrk
= ++cur
);
2940 case 0x7F: goto yy243
;
2941 case '\\': goto yy138
;
2945 #line 422 "src/parser.re"
2946 { NEWTOKEN(PSI_T_SET
); goto start
; }
2947 #line 2948 "src/parser.c"
2950 yych
= *(mrk
= ++cur
);
2953 case 'r': goto yy319
;
2958 yych
= *(mrk
= ++cur
);
2961 case 'n': goto yy320
;
2966 yych
= *(mrk
= ++cur
);
2969 case 't': goto yy321
;
2974 yych
= *(mrk
= ++cur
);
2977 case 'i': goto yy322
;
2979 case 'l': goto yy323
;
2981 case 'u': goto yy324
;
2983 case 'v': goto yy325
;
2988 yych
= *(mrk
= ++cur
);
2991 case 'p': goto yy326
;
2996 yych
= *(mrk
= ++cur
);
2999 case 'a': goto yy328
;
3001 case 'b': goto yy329
;
3003 case 'f': goto yy330
;
3005 case 'i': goto yy331
;
3007 case 'o': goto yy332
;
3009 case 's': goto yy333
;
3014 yych
= *(mrk
= ++cur
);
3017 case 'e': goto yy334
;
3022 yych
= *(mrk
= ++cur
);
3025 case 'e': goto yy336
;
3030 yych
= *(mrk
= ++cur
);
3033 case 't': goto yy337
;
3038 yych
= *(mrk
= ++cur
);
3041 case 'e': goto yy338
;
3046 yych
= *(mrk
= ++cur
);
3049 case 'o': goto yy339
;
3054 yych
= *(mrk
= ++cur
);
3057 case 'i': goto yy340
;
3062 yych
= *(mrk
= ++cur
);
3065 case 'd': goto yy341
;
3070 yych
= *(mrk
= ++cur
);
3073 case 'n': goto yy343
;
3078 yych
= *(mrk
= ++cur
);
3081 case 'l': goto yy344
;
3086 yych
= *(mrk
= ++cur
);
3088 case 's': goto yy346
;
3089 case 't': goto yy347
;
3094 yych
= *(mrk
= ++cur
);
3096 case 'x': goto yy348
;
3101 yych
= *(mrk
= ++cur
);
3103 case 'e': goto yy349
;
3108 yych
= *(mrk
= ++cur
);
3110 case 'e': goto yy350
;
3115 yych
= *(mrk
= ++cur
);
3117 case 'g': goto yy352
;
3123 #line 323 "src/parser.re"
3125 #line 3126 "src/parser.c"
3129 #line 318 "src/parser.re"
3130 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3131 #line 3132 "src/parser.c"
3135 #line 317 "src/parser.re"
3136 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3137 #line 3138 "src/parser.c"
3141 #line 319 "src/parser.re"
3142 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3143 #line 3144 "src/parser.c"
3147 #line 312 "src/parser.re"
3148 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3149 #line 3150 "src/parser.c"
3152 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3176 case 'f': goto yy274
;
3178 case 'p': goto yy119
;
3179 default: goto yy106
;
3183 yych
= *(mrk
= ++cur
);
3186 case 'y': goto yy353
;
3191 yych
= *(mrk
= ++cur
);
3194 case 'a': goto yy355
;
3199 yych
= *(mrk
= ++cur
);
3264 case 0x7F: goto yy279
;
3266 case 'v': goto yy356
;
3267 case '\\': goto yy138
;
3271 #line 392 "src/parser.re"
3272 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
3273 #line 3274 "src/parser.c"
3276 yych
= *(mrk
= ++cur
);
3279 case 'a': goto yy357
;
3281 case 'b': goto yy358
;
3283 case 'o': goto yy359
;
3288 yych
= *(mrk
= ++cur
);
3353 case 0x7F: goto yy282
;
3354 case '\\': goto yy138
;
3358 #line 393 "src/parser.re"
3359 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
3360 #line 3361 "src/parser.c"
3363 yych
= *(mrk
= ++cur
);
3366 case 't': goto yy360
;
3371 yych
= *(mrk
= ++cur
);
3374 case 't': goto yy362
;
3379 yych
= *(mrk
= ++cur
);
3382 case 'n': goto yy364
;
3387 yych
= *(mrk
= ++cur
);
3390 case 'l': goto yy365
;
3395 yych
= *(mrk
= ++cur
);
3460 case 0x7F: goto yy288
;
3461 case '\\': goto yy138
;
3465 #line 377 "src/parser.re"
3466 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3467 #line 3468 "src/parser.c"
3470 yych
= *(mrk
= ++cur
);
3535 case 0x7F: goto yy290
;
3536 case '\\': goto yy138
;
3540 #line 376 "src/parser.re"
3541 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3542 #line 3543 "src/parser.c"
3545 yych
= *(mrk
= ++cur
);
3548 case 'f': goto yy366
;
3553 yych
= *(mrk
= ++cur
);
3618 case 0x7F: goto yy293
;
3619 case '\\': goto yy138
;
3623 #line 418 "src/parser.re"
3624 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
3625 #line 3626 "src/parser.c"
3628 yych
= *(mrk
= ++cur
);
3631 case 'r': goto yy368
;
3636 yych
= *(mrk
= ++cur
);
3639 case 'e': goto yy370
;
3644 yych
= *(mrk
= ++cur
);
3647 case 't': goto yy372
;
3652 yych
= *(mrk
= ++cur
);
3717 case 0x7F: goto yy298
;
3718 case '\\': goto yy138
;
3722 #line 426 "src/parser.re"
3723 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3724 #line 3725 "src/parser.c"
3727 yych
= *(mrk
= ++cur
);
3730 case 't': goto yy374
;
3735 yych
= *(mrk
= ++cur
);
3738 case 'f': goto yy375
;
3743 yych
= *(mrk
= ++cur
);
3746 case 'e': goto yy377
;
3751 yych
= *(mrk
= ++cur
);
3754 case 'u': goto yy378
;
3759 yych
= *(mrk
= ++cur
);
3761 case '6': goto yy379
;
3766 yych
= *(mrk
= ++cur
);
3768 case '2': goto yy380
;
3773 yych
= *(mrk
= ++cur
);
3775 case '4': goto yy381
;
3780 yych
= *(mrk
= ++cur
);
3782 case '_': goto yy382
;
3787 yych
= *(mrk
= ++cur
);
3790 case 'a': goto yy383
;
3795 yych
= *(mrk
= ++cur
);
3860 case 0x7F: goto yy309
;
3861 case '\\': goto yy138
;
3865 #line 396 "src/parser.re"
3866 { NEWTOKEN(PSI_T_LONG
); goto start
; }
3867 #line 3868 "src/parser.c"
3870 yych
= *(mrk
= ++cur
);
3873 case 'd': goto yy384
;
3878 yych
= *(mrk
= ++cur
);
3943 case 0x7F: goto yy312
;
3944 case '\\': goto yy138
;
3948 #line 388 "src/parser.re"
3949 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3950 #line 3951 "src/parser.c"
3953 yych
= *(mrk
= ++cur
);
3956 case 'c': goto yy386
;
3961 yych
= *(mrk
= ++cur
);
3964 case 'a': goto yy387
;
3969 yych
= *(mrk
= ++cur
);
3972 case 'v': goto yy388
;
3977 yych
= *(mrk
= ++cur
);
3979 case '_': goto yy389
;
3984 yych
= *(mrk
= ++cur
);
3987 case 'a': goto yy390
;
3992 yych
= *(mrk
= ++cur
);
3995 case 'r': goto yy391
;
4000 yych
= *(mrk
= ++cur
);
4003 case 't': goto yy392
;
4008 yych
= *(mrk
= ++cur
);
4011 case 'e': goto yy394
;
4016 yych
= *(mrk
= ++cur
);
4019 case 'i': goto yy395
;
4024 yych
= *(mrk
= ++cur
);
4027 case 'n': goto yy396
;
4032 yych
= *(mrk
= ++cur
);
4035 case 'e': goto yy397
;
4040 yych
= *(mrk
= ++cur
);
4043 case 'c': goto yy398
;
4048 yych
= *(mrk
= ++cur
);
4051 case 'a': goto yy399
;
4056 yych
= *(mrk
= ++cur
);
4121 case 0x7F: goto yy327
;
4122 case '\\': goto yy138
;
4126 #line 427 "src/parser.re"
4127 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
4128 #line 4129 "src/parser.c"
4131 yych
= *(mrk
= ++cur
);
4134 case 'r': goto yy400
;
4139 yych
= *(mrk
= ++cur
);
4142 case 'o': goto yy401
;
4147 yych
= *(mrk
= ++cur
);
4150 case 'l': goto yy402
;
4155 yych
= *(mrk
= ++cur
);
4158 case 'n': goto yy403
;
4163 yych
= *(mrk
= ++cur
);
4166 case 'b': goto yy404
;
4171 yych
= *(mrk
= ++cur
);
4174 case 't': goto yy405
;
4179 yych
= *(mrk
= ++cur
);
4244 case 0x7F: goto yy335
;
4245 case '\\': goto yy138
;
4249 #line 386 "src/parser.re"
4250 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4251 #line 4252 "src/parser.c"
4254 yych
= *(mrk
= ++cur
);
4257 case 'd': goto yy406
;
4262 yych
= *(mrk
= ++cur
);
4264 case '1': goto yy407
;
4265 case '3': goto yy408
;
4266 case '6': goto yy409
;
4267 case '8': goto yy410
;
4272 yych
= *(mrk
= ++cur
);
4275 case 'f': goto yy411
;
4280 yych
= *(mrk
= ++cur
);
4283 case 'n': goto yy413
;
4288 yych
= *(mrk
= ++cur
);
4291 case 'g': goto yy415
;
4296 yych
= *(mrk
= ++cur
);
4361 case 0x7F: goto yy342
;
4362 case '\\': goto yy138
;
4366 #line 391 "src/parser.re"
4367 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4368 #line 4369 "src/parser.c"
4371 yych
= *(mrk
= ++cur
);
4374 case 'i': goto yy416
;
4379 yych
= *(mrk
= ++cur
);
4444 case 0x7F: goto yy345
;
4445 case '\\': goto yy138
;
4449 #line 436 "src/parser.re"
4450 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4451 #line 4452 "src/parser.c"
4454 yych
= *(mrk
= ++cur
);
4456 case 'm': goto yy417
;
4461 yych
= *(mrk
= ++cur
);
4463 case 't': goto yy418
;
4468 yych
= *(mrk
= ++cur
);
4470 case 't': goto yy419
;
4475 yych
= *(mrk
= ++cur
);
4477 case 's': goto yy420
;
4482 yych
= *(mrk
= ++cur
);
4547 case 0x7F: goto yy351
;
4548 case '\\': goto yy138
;
4552 #line 372 "src/parser.re"
4553 { NEWTOKEN(PSI_T_LINE
); goto start
; }
4554 #line 4555 "src/parser.c"
4557 yych
= *(mrk
= ++cur
);
4559 case 'm': goto yy421
;
4564 yych
= *(mrk
= ++cur
);
4629 case 0x7F: goto yy354
;
4630 case '\\': goto yy138
;
4634 #line 410 "src/parser.re"
4635 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4636 #line 4637 "src/parser.c"
4639 yych
= *(mrk
= ++cur
);
4642 case 'l': goto yy422
;
4647 yych
= *(mrk
= ++cur
);
4650 case 'a': goto yy424
;
4655 yych
= *(mrk
= ++cur
);
4658 case 'b': goto yy425
;
4663 yych
= *(mrk
= ++cur
);
4666 case 'a': goto yy426
;
4671 yych
= *(mrk
= ++cur
);
4674 case 'c': goto yy427
;
4679 yych
= *(mrk
= ++cur
);
4744 case 0x7F: goto yy361
;
4745 case '\\': goto yy138
;
4749 #line 419 "src/parser.re"
4750 { NEWTOKEN(PSI_T_CONST
); goto start
; }
4751 #line 4752 "src/parser.c"
4754 yych
= *(mrk
= ++cur
);
4819 case 0x7F: goto yy363
;
4820 case '\\': goto yy138
;
4824 #line 437 "src/parser.re"
4825 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4826 #line 4827 "src/parser.c"
4829 yych
= *(mrk
= ++cur
);
4832 case 'e': goto yy429
;
4837 yych
= *(mrk
= ++cur
);
4840 case 'e': goto yy431
;
4845 yych
= *(mrk
= ++cur
);
4910 case 0x7F: goto yy367
;
4911 case '\\': goto yy138
;
4915 #line 378 "src/parser.re"
4916 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4917 #line 4918 "src/parser.c"
4920 yych
= *(mrk
= ++cur
);
4985 case 0x7F: goto yy369
;
4986 case '\\': goto yy138
;
4990 #line 383 "src/parser.re"
4991 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
4992 #line 4993 "src/parser.c"
4995 yych
= *(mrk
= ++cur
);
5060 case 0x7F: goto yy371
;
5061 case '\\': goto yy138
;
5065 #line 387 "src/parser.re"
5066 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5067 #line 5068 "src/parser.c"
5070 yych
= *(mrk
= ++cur
);
5135 case 0x7F: goto yy373
;
5137 case 'v': goto yy433
;
5138 case '\\': goto yy138
;
5142 #line 397 "src/parser.re"
5143 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5144 #line 5145 "src/parser.c"
5147 yych
= *(mrk
= ++cur
);
5150 case 'i': goto yy434
;
5155 yych
= *(mrk
= ++cur
);
5220 case 0x7F: goto yy376
;
5221 case '\\': goto yy138
;
5225 #line 374 "src/parser.re"
5226 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5227 #line 5228 "src/parser.c"
5230 yych
= *(mrk
= ++cur
);
5233 case 'f': goto yy435
;
5238 yych
= *(mrk
= ++cur
);
5241 case 'd': goto yy437
;
5246 yych
= *(mrk
= ++cur
);
5248 case '_': goto yy438
;
5253 yych
= *(mrk
= ++cur
);
5255 case '_': goto yy439
;
5260 yych
= *(mrk
= ++cur
);
5262 case '_': goto yy440
;
5267 yych
= *(mrk
= ++cur
);
5270 case 't': goto yy441
;
5275 yych
= *(mrk
= ++cur
);
5278 case 'l': goto yy443
;
5283 yych
= *(mrk
= ++cur
);
5348 case 0x7F: goto yy385
;
5349 case '\\': goto yy138
;
5353 #line 389 "src/parser.re"
5354 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5355 #line 5356 "src/parser.c"
5358 yych
= *(mrk
= ++cur
);
5361 case 't': goto yy445
;
5366 yych
= *(mrk
= ++cur
);
5369 case 'l': goto yy447
;
5374 yych
= *(mrk
= ++cur
);
5377 case 'a': goto yy449
;
5382 yych
= *(mrk
= ++cur
);
5385 case 'a': goto yy450
;
5390 yych
= *(mrk
= ++cur
);
5393 case 's': goto yy451
;
5398 yych
= *(mrk
= ++cur
);
5401 case 'n': goto yy452
;
5406 yych
= *(mrk
= ++cur
);
5471 case 0x7F: goto yy393
;
5472 case '\\': goto yy138
;
5476 #line 394 "src/parser.re"
5477 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5478 #line 5479 "src/parser.c"
5481 yych
= *(mrk
= ++cur
);
5484 case 'd': goto yy454
;
5489 yych
= *(mrk
= ++cur
);
5492 case 'c': goto yy456
;
5497 yych
= *(mrk
= ++cur
);
5500 case 'g': goto yy458
;
5505 yych
= *(mrk
= ++cur
);
5508 case 'n': goto yy460
;
5513 yych
= *(mrk
= ++cur
);
5516 case 't': goto yy462
;
5521 yych
= *(mrk
= ++cur
);
5524 case 'l': goto yy464
;
5529 yych
= *(mrk
= ++cur
);
5532 case 'r': goto yy466
;
5537 yych
= *(mrk
= ++cur
);
5540 case 'o': goto yy467
;
5545 yych
= *(mrk
= ++cur
);
5548 case 'o': goto yy468
;
5553 yych
= *(mrk
= ++cur
);
5556 case 't': goto yy469
;
5561 yych
= *(mrk
= ++cur
);
5564 case 'j': goto yy471
;
5569 yych
= *(mrk
= ++cur
);
5572 case 'r': goto yy472
;
5577 yych
= *(mrk
= ++cur
);
5580 case 'e': goto yy473
;
5585 yych
= *(mrk
= ++cur
);
5587 case '6': goto yy474
;
5592 yych
= *(mrk
= ++cur
);
5594 case '2': goto yy475
;
5599 yych
= *(mrk
= ++cur
);
5601 case '4': goto yy476
;
5606 yych
= *(mrk
= ++cur
);
5608 case '_': goto yy477
;
5613 yych
= *(mrk
= ++cur
);
5678 case 0x7F: goto yy412
;
5679 case '\\': goto yy138
;
5683 #line 381 "src/parser.re"
5684 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5685 #line 5686 "src/parser.c"
5688 yych
= *(mrk
= ++cur
);
5753 case 0x7F: goto yy414
;
5754 case '\\': goto yy138
;
5758 #line 417 "src/parser.re"
5759 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5760 #line 5761 "src/parser.c"
5763 yych
= *(mrk
= ++cur
);
5766 case 'n': goto yy478
;
5771 yych
= *(mrk
= ++cur
);
5774 case 'n': goto yy479
;
5779 yych
= *(mrk
= ++cur
);
5781 case '_': goto yy480
;
5786 yych
= *(mrk
= ++cur
);
5788 case 'r': goto yy481
;
5793 yych
= *(mrk
= ++cur
);
5795 case 'e': goto yy482
;
5800 yych
= *(mrk
= ++cur
);
5802 case 't': goto yy483
;
5807 yych
= *(mrk
= ++cur
);
5809 case 'a': goto yy484
;
5814 yych
= *(mrk
= ++cur
);
5879 case 0x7F: goto yy423
;
5880 case '\\': goto yy138
;
5884 #line 434 "src/parser.re"
5885 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5886 #line 5887 "src/parser.c"
5889 yych
= *(mrk
= ++cur
);
5892 case 'l': goto yy486
;
5897 yych
= *(mrk
= ++cur
);
5900 case 'l': goto yy488
;
5905 yych
= *(mrk
= ++cur
);
5908 case 'c': goto yy489
;
5913 yych
= *(mrk
= ++cur
);
5978 case 0x7F: goto yy428
;
5979 case '\\': goto yy138
;
5983 #line 438 "src/parser.re"
5984 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
5985 #line 5986 "src/parser.c"
5988 yych
= *(mrk
= ++cur
);
6053 case 0x7F: goto yy430
;
6055 case 'd': goto yy490
;
6056 case '\\': goto yy138
;
6060 #line 379 "src/parser.re"
6061 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6062 #line 6063 "src/parser.c"
6065 yych
= *(mrk
= ++cur
);
6130 case 0x7F: goto yy432
;
6131 case '\\': goto yy138
;
6135 #line 398 "src/parser.re"
6136 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
6137 #line 6138 "src/parser.c"
6140 yych
= *(mrk
= ++cur
);
6143 case 'a': goto yy492
;
6148 yych
= *(mrk
= ++cur
);
6151 case 'o': goto yy493
;
6156 yych
= *(mrk
= ++cur
);
6221 case 0x7F: goto yy436
;
6222 case '\\': goto yy138
;
6226 #line 375 "src/parser.re"
6227 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6228 #line 6229 "src/parser.c"
6231 yych
= *(mrk
= ++cur
);
6234 case 'e': goto yy494
;
6239 yych
= *(mrk
= ++cur
);
6242 case 't': goto yy496
;
6247 yych
= *(mrk
= ++cur
);
6250 case 't': goto yy498
;
6255 yych
= *(mrk
= ++cur
);
6258 case 't': goto yy500
;
6263 yych
= *(mrk
= ++cur
);
6328 case 0x7F: goto yy442
;
6329 case '\\': goto yy138
;
6333 #line 399 "src/parser.re"
6334 { NEWTOKEN(PSI_T_INT8
); goto start
; }
6335 #line 6336 "src/parser.c"
6338 yych
= *(mrk
= ++cur
);
6403 case 0x7F: goto yy444
;
6404 case '\\': goto yy138
;
6408 #line 431 "src/parser.re"
6409 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6410 #line 6411 "src/parser.c"
6413 yych
= *(mrk
= ++cur
);
6478 case 0x7F: goto yy446
;
6479 case '\\': goto yy138
;
6483 #line 411 "src/parser.re"
6484 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6485 #line 6486 "src/parser.c"
6488 yych
= *(mrk
= ++cur
);
6553 case 0x7F: goto yy448
;
6554 case '\\': goto yy138
;
6558 #line 435 "src/parser.re"
6559 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6560 #line 6561 "src/parser.c"
6563 yych
= *(mrk
= ++cur
);
6566 case 'l': goto yy502
;
6571 yych
= *(mrk
= ++cur
);
6574 case 's': goto yy504
;
6579 yych
= *(mrk
= ++cur
);
6582 case 's': goto yy505
;
6587 yych
= *(mrk
= ++cur
);
6652 case 0x7F: goto yy453
;
6653 case '\\': goto yy138
;
6657 #line 425 "src/parser.re"
6658 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6659 #line 6660 "src/parser.c"
6662 yych
= *(mrk
= ++cur
);
6727 case 0x7F: goto yy455
;
6728 case '\\': goto yy138
;
6732 #line 408 "src/parser.re"
6733 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
6734 #line 6735 "src/parser.c"
6737 yych
= *(mrk
= ++cur
);
6802 case 0x7F: goto yy457
;
6803 case '\\': goto yy138
;
6807 #line 413 "src/parser.re"
6808 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6809 #line 6810 "src/parser.c"
6812 yych
= *(mrk
= ++cur
);
6877 case 0x7F: goto yy459
;
6878 case '\\': goto yy138
;
6882 #line 409 "src/parser.re"
6883 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6884 #line 6885 "src/parser.c"
6887 yych
= *(mrk
= ++cur
);
6952 case 0x7F: goto yy461
;
6953 case '\\': goto yy138
;
6957 #line 428 "src/parser.re"
6958 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6959 #line 6960 "src/parser.c"
6962 yych
= *(mrk
= ++cur
);
7027 case 0x7F: goto yy463
;
7028 case '\\': goto yy138
;
7032 #line 416 "src/parser.re"
7033 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
7034 #line 7035 "src/parser.c"
7037 yych
= *(mrk
= ++cur
);
7102 case 0x7F: goto yy465
;
7103 case '\\': goto yy138
;
7107 #line 429 "src/parser.re"
7108 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
7109 #line 7110 "src/parser.c"
7112 yych
= *(mrk
= ++cur
);
7115 case 'a': goto yy506
;
7120 yych
= *(mrk
= ++cur
);
7123 case 'l': goto yy507
;
7128 yych
= *(mrk
= ++cur
);
7131 case 'a': goto yy509
;
7136 yych
= *(mrk
= ++cur
);
7201 case 0x7F: goto yy470
;
7202 case '\\': goto yy138
;
7206 #line 442 "src/parser.re"
7207 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7208 #line 7209 "src/parser.c"
7211 yych
= *(mrk
= ++cur
);
7214 case 'e': goto yy510
;
7219 yych
= *(mrk
= ++cur
);
7222 case 'i': goto yy511
;
7227 yych
= *(mrk
= ++cur
);
7230 case 'f': goto yy512
;
7235 yych
= *(mrk
= ++cur
);
7237 case '_': goto yy514
;
7242 yych
= *(mrk
= ++cur
);
7244 case '_': goto yy515
;
7249 yych
= *(mrk
= ++cur
);
7251 case '_': goto yy516
;
7256 yych
= *(mrk
= ++cur
);
7259 case 't': goto yy517
;
7264 yych
= *(mrk
= ++cur
);
7267 case 'e': goto yy519
;
7272 yych
= *(mrk
= ++cur
);
7275 case 'g': goto yy520
;
7280 yych
= *(mrk
= ++cur
);
7282 case '_': goto yy522
;
7287 yych
= *(mrk
= ++cur
);
7289 case 'i': goto yy524
;
7294 yych
= *(mrk
= ++cur
);
7296 case 'n': goto yy525
;
7301 yych
= *(mrk
= ++cur
);
7303 case 'r': goto yy526
;
7308 yych
= *(mrk
= ++cur
);
7373 case 0x7F: goto yy485
;
7374 case '\\': goto yy138
;
7375 default: goto yy527
;
7378 #line 367 "src/parser.re"
7379 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7380 #line 7381 "src/parser.c"
7383 yych
= *(mrk
= ++cur
);
7448 case 0x7F: goto yy487
;
7449 case '\\': goto yy138
;
7453 #line 433 "src/parser.re"
7454 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7455 #line 7456 "src/parser.c"
7458 yych
= *(mrk
= ++cur
);
7461 case 'e': goto yy529
;
7466 yych
= *(mrk
= ++cur
);
7469 case 'k': goto yy531
;
7474 yych
= *(mrk
= ++cur
);
7539 case 0x7F: goto yy491
;
7540 case '\\': goto yy138
;
7544 #line 380 "src/parser.re"
7545 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7546 #line 7547 "src/parser.c"
7549 yych
= *(mrk
= ++cur
);
7552 case 'l': goto yy533
;
7557 yych
= *(mrk
= ++cur
);
7560 case 'n': goto yy535
;
7565 yych
= *(mrk
= ++cur
);
7630 case 0x7F: goto yy495
;
7631 case '\\': goto yy138
;
7632 case '_': goto yy537
;
7636 #line 384 "src/parser.re"
7637 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7638 #line 7639 "src/parser.c"
7641 yych
= *(mrk
= ++cur
);
7706 case 0x7F: goto yy497
;
7707 case '\\': goto yy138
;
7711 #line 401 "src/parser.re"
7712 { NEWTOKEN(PSI_T_INT16
); goto start
; }
7713 #line 7714 "src/parser.c"
7716 yych
= *(mrk
= ++cur
);
7781 case 0x7F: goto yy499
;
7782 case '\\': goto yy138
;
7786 #line 403 "src/parser.re"
7787 { NEWTOKEN(PSI_T_INT32
); goto start
; }
7788 #line 7789 "src/parser.c"
7791 yych
= *(mrk
= ++cur
);
7856 case 0x7F: goto yy501
;
7857 case '\\': goto yy138
;
7861 #line 405 "src/parser.re"
7862 { NEWTOKEN(PSI_T_INT64
); goto start
; }
7863 #line 7864 "src/parser.c"
7866 yych
= *(mrk
= ++cur
);
7931 case 0x7F: goto yy503
;
7932 case '\\': goto yy138
;
7936 #line 430 "src/parser.re"
7937 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7938 #line 7939 "src/parser.c"
7941 yych
= *(mrk
= ++cur
);
7944 case 's': goto yy538
;
7949 yych
= *(mrk
= ++cur
);
7952 case 'e': goto yy539
;
7957 yych
= *(mrk
= ++cur
);
7960 case 'y': goto yy540
;
7965 yych
= *(mrk
= ++cur
);
8030 case 0x7F: goto yy508
;
8031 case '\\': goto yy138
;
8035 #line 444 "src/parser.re"
8036 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
8037 #line 8038 "src/parser.c"
8040 yych
= *(mrk
= ++cur
);
8043 case 't': goto yy542
;
8048 yych
= *(mrk
= ++cur
);
8051 case 'c': goto yy544
;
8056 yych
= *(mrk
= ++cur
);
8059 case 'n': goto yy545
;
8064 yych
= *(mrk
= ++cur
);
8129 case 0x7F: goto yy513
;
8130 case '\\': goto yy138
;
8134 #line 415 "src/parser.re"
8135 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8136 #line 8137 "src/parser.c"
8139 yych
= *(mrk
= ++cur
);
8142 case 't': goto yy546
;
8147 yych
= *(mrk
= ++cur
);
8150 case 't': goto yy548
;
8155 yych
= *(mrk
= ++cur
);
8158 case 't': goto yy550
;
8163 yych
= *(mrk
= ++cur
);
8228 case 0x7F: goto yy518
;
8229 case '\\': goto yy138
;
8233 #line 400 "src/parser.re"
8234 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
8235 #line 8236 "src/parser.c"
8238 yych
= *(mrk
= ++cur
);
8241 case 'd': goto yy552
;
8246 yych
= *(mrk
= ++cur
);
8311 case 0x7F: goto yy521
;
8312 case '\\': goto yy138
;
8316 #line 382 "src/parser.re"
8317 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8318 #line 8319 "src/parser.c"
8321 yych
= *(mrk
= ++cur
);
8386 case 0x7F: goto yy523
;
8387 case '\\': goto yy138
;
8391 #line 371 "src/parser.re"
8392 { NEWTOKEN(PSI_T_CPP_ASM
); goto start
; }
8393 #line 8394 "src/parser.c"
8396 yych
= *(mrk
= ++cur
);
8398 case 'b': goto yy554
;
8403 yych
= *(mrk
= ++cur
);
8405 case 's': goto yy555
;
8410 yych
= *(mrk
= ++cur
);
8412 case 'i': goto yy556
;
8418 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
8484 case 0x7F: goto yy55
;
8485 case '\\': goto yy138
;
8486 case 'o': goto yy557
;
8487 default: goto yy527
;
8491 yych
= *(mrk
= ++cur
);
8556 case 0x7F: goto yy530
;
8557 case '\\': goto yy138
;
8561 #line 390 "src/parser.re"
8562 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8563 #line 8564 "src/parser.c"
8566 yych
= *(mrk
= ++cur
);
8631 case 0x7F: goto yy532
;
8632 case '\\': goto yy138
;
8636 #line 412 "src/parser.re"
8637 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8638 #line 8639 "src/parser.c"
8641 yych
= *(mrk
= ++cur
);
8706 case 0x7F: goto yy534
;
8707 case '\\': goto yy138
;
8711 #line 432 "src/parser.re"
8712 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8713 #line 8714 "src/parser.c"
8716 yych
= *(mrk
= ++cur
);
8781 case 0x7F: goto yy536
;
8782 case '\\': goto yy138
;
8786 #line 414 "src/parser.re"
8787 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8788 #line 8789 "src/parser.c"
8791 yych
= *(mrk
= ++cur
);
8794 case 'n': goto yy559
;
8799 yych
= *(mrk
= ++cur
);
8802 case 'e': goto yy560
;
8807 yych
= *(mrk
= ++cur
);
8810 case 'r': goto yy561
;
8815 yych
= *(mrk
= ++cur
);
8880 case 0x7F: goto yy541
;
8881 case '\\': goto yy138
;
8885 #line 440 "src/parser.re"
8886 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8887 #line 8888 "src/parser.c"
8890 yych
= *(mrk
= ++cur
);
8955 case 0x7F: goto yy543
;
8956 case '\\': goto yy138
;
8960 #line 443 "src/parser.re"
8961 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8962 #line 8963 "src/parser.c"
8965 yych
= *(mrk
= ++cur
);
8968 case 't': goto yy562
;
8973 yych
= *(mrk
= ++cur
);
8976 case 'g': goto yy564
;
8981 yych
= *(mrk
= ++cur
);
9046 case 0x7F: goto yy547
;
9047 case '\\': goto yy138
;
9051 #line 402 "src/parser.re"
9052 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
9053 #line 9054 "src/parser.c"
9056 yych
= *(mrk
= ++cur
);
9121 case 0x7F: goto yy549
;
9122 case '\\': goto yy138
;
9126 #line 404 "src/parser.re"
9127 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
9128 #line 9129 "src/parser.c"
9131 yych
= *(mrk
= ++cur
);
9196 case 0x7F: goto yy551
;
9197 case '\\': goto yy138
;
9201 #line 406 "src/parser.re"
9202 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
9203 #line 9204 "src/parser.c"
9206 yych
= *(mrk
= ++cur
);
9271 case 0x7F: goto yy553
;
9272 case '\\': goto yy138
;
9276 #line 407 "src/parser.re"
9277 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9278 #line 9279 "src/parser.c"
9281 yych
= *(mrk
= ++cur
);
9283 case 'u': goto yy566
;
9288 yych
= *(mrk
= ++cur
);
9290 case 'i': goto yy567
;
9295 yych
= *(mrk
= ++cur
);
9297 case 'c': goto yy568
;
9303 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9369 case 0x7F: goto yy55
;
9370 case '\\': goto yy138
;
9371 case 'n': goto yy569
;
9372 case 'o': goto yy557
;
9373 default: goto yy527
;
9377 yych
= *(mrk
= ++cur
);
9380 case 'e': goto yy570
;
9385 yych
= *(mrk
= ++cur
);
9388 case 'r': goto yy571
;
9393 yych
= *(mrk
= ++cur
);
9396 case 't': goto yy572
;
9401 yych
= *(mrk
= ++cur
);
9466 case 0x7F: goto yy563
;
9467 case '\\': goto yy138
;
9471 #line 439 "src/parser.re"
9472 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9473 #line 9474 "src/parser.c"
9476 yych
= *(mrk
= ++cur
);
9541 case 0x7F: goto yy565
;
9542 case '\\': goto yy138
;
9546 #line 441 "src/parser.re"
9547 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9548 #line 9549 "src/parser.c"
9551 yych
= *(mrk
= ++cur
);
9553 case 't': goto yy574
;
9558 yych
= *(mrk
= ++cur
);
9560 case 'o': goto yy575
;
9565 yych
= *(mrk
= ++cur
);
9567 case 't': goto yy576
;
9573 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9639 case 0x7F: goto yy55
;
9640 case '\\': goto yy138
;
9641 case 'c': goto yy578
;
9642 case 'o': goto yy557
;
9643 default: goto yy527
;
9647 yych
= *(mrk
= ++cur
);
9650 case 'x': goto yy579
;
9655 yych
= *(mrk
= ++cur
);
9658 case 't': goto yy580
;
9663 yych
= *(mrk
= ++cur
);
9728 case 0x7F: goto yy573
;
9729 case '\\': goto yy138
;
9733 #line 423 "src/parser.re"
9734 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9735 #line 9736 "src/parser.c"
9738 yych
= *(mrk
= ++cur
);
9740 case 'e': goto yy582
;
9745 yych
= *(mrk
= ++cur
);
9747 case 'n': goto yy583
;
9752 yych
= *(mrk
= ++cur
);
9817 case 0x7F: goto yy577
;
9818 case '\\': goto yy138
;
9822 #line 369 "src/parser.re"
9823 { NEWTOKEN(PSI_T_CPP_RESTRICT
); goto start
; }
9824 #line 9825 "src/parser.c"
9828 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9894 case 0x7F: goto yy55
;
9895 case '\\': goto yy138
;
9896 case 'e': goto yy584
;
9897 case 'o': goto yy557
;
9898 default: goto yy527
;
9902 yych
= *(mrk
= ++cur
);
9905 case 't': goto yy586
;
9910 yych
= *(mrk
= ++cur
);
9975 case 0x7F: goto yy581
;
9976 case '\\': goto yy138
;
9980 #line 424 "src/parser.re"
9981 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9982 #line 9983 "src/parser.c"
9985 yych
= *(mrk
= ++cur
);
9987 case '_': goto yy588
;
9992 yych
= *(mrk
= ++cur
);
9994 case '_': goto yy589
;
10000 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10066 case 0x7F: goto yy585
;
10067 case '\\': goto yy138
;
10068 case 'o': goto yy557
;
10069 default: goto yy527
;
10072 #line 368 "src/parser.re"
10073 { NEWTOKEN(PSI_T_PRAGMA_ONCE
); goto start
; }
10074 #line 10075 "src/parser.c"
10077 yych
= *(mrk
= ++cur
);
10142 case 0x7F: goto yy587
;
10143 case '\\': goto yy138
;
10144 default: goto yy61
;
10147 #line 385 "src/parser.re"
10148 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
10149 #line 10150 "src/parser.c"
10152 yych
= *(mrk
= ++cur
);
10154 case '_': goto yy590
;
10155 default: goto yy62
;
10159 yych
= *(mrk
= ++cur
);
10161 case '_': goto yy591
;
10162 default: goto yy62
;
10166 yych
= *(mrk
= ++cur
);
10227 case 0x7F: goto yy55
;
10230 case ' ': goto yy593
;
10231 case '(': goto yy595
;
10232 case '\\': goto yy138
;
10233 default: goto yy61
;
10237 yych
= *(mrk
= ++cur
);
10302 case 0x7F: goto yy592
;
10303 case '\\': goto yy138
;
10304 default: goto yy61
;
10307 #line 370 "src/parser.re"
10308 { NEWTOKEN(PSI_T_CPP_EXTENSION
); goto start
; }
10309 #line 10310 "src/parser.c"
10312 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10317 case ' ': goto yy593
;
10318 case '(': goto yy595
;
10319 default: goto yy106
;
10324 case '(': goto yy596
;
10325 default: goto yy106
;
10329 #line 449 "src/parser.re"
10330 { parens
= 2; goto cpp_attribute
; }
10331 #line 10332 "src/parser.c"
10333 #line 455 "src/parser.re"
10338 #line 10339 "src/parser.c"
10340 unsigned char yych
;
10341 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10345 case '\r': goto yy602
;
10346 case '\'': goto yy604
;
10347 case '\\': goto yy606
;
10348 default: goto yy600
;
10352 #line 473 "src/parser.re"
10353 { escaped
= false; goto character
; }
10354 #line 10355 "src/parser.c"
10357 #line 460 "src/parser.re"
10358 { NEWLINE(); goto character
; }
10359 #line 10360 "src/parser.c"
10362 #line 462 "src/parser.re"
10369 NEWTOKEN(PSI_T_QUOTED_CHAR
);
10371 token
->flags
= char_width
;
10374 #line 10375 "src/parser.c"
10377 #line 461 "src/parser.re"
10378 { escaped
= !escaped
; goto character
; }
10379 #line 10380 "src/parser.c"
10381 #line 475 "src/parser.re"
10386 #line 10387 "src/parser.c"
10388 unsigned char yych
;
10389 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10393 case '\r': goto yy612
;
10394 case '"': goto yy614
;
10395 case '\\': goto yy616
;
10396 default: goto yy610
;
10400 #line 493 "src/parser.re"
10401 { escaped
= false; goto string
; }
10402 #line 10403 "src/parser.c"
10405 #line 480 "src/parser.re"
10406 { NEWLINE(); goto string
; }
10407 #line 10408 "src/parser.c"
10410 #line 482 "src/parser.re"
10417 NEWTOKEN(PSI_T_QUOTED_STRING
);
10419 token
->flags
= char_width
;
10422 #line 10423 "src/parser.c"
10425 #line 481 "src/parser.re"
10426 { escaped
= !escaped
; goto string
; }
10427 #line 10428 "src/parser.c"
10429 #line 495 "src/parser.re"
10434 #line 10435 "src/parser.c"
10436 unsigned char yych
;
10437 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
10441 case '\r': goto yy622
;
10442 case '*': goto yy624
;
10443 default: goto yy620
;
10448 #line 502 "src/parser.re"
10450 #line 10451 "src/parser.c"
10453 #line 500 "src/parser.re"
10454 { NEWLINE(); goto comment
; }
10455 #line 10456 "src/parser.c"
10459 case '/': goto yy625
;
10460 default: goto yy621
;
10464 #line 501 "src/parser.re"
10465 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
10466 #line 10467 "src/parser.c"
10468 #line 504 "src/parser.re"
10473 #line 10474 "src/parser.c"
10475 unsigned char yych
;
10476 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10480 case '\r': goto yy631
;
10481 default: goto yy629
;
10485 #line 510 "src/parser.re"
10486 { goto comment_sl
; }
10487 #line 10488 "src/parser.c"
10490 #line 509 "src/parser.re"
10491 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
10492 #line 10493 "src/parser.c"
10494 #line 512 "src/parser.re"
10500 #line 10501 "src/parser.c"
10502 unsigned char yych
;
10503 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
10507 case '\r': goto yy637
;
10508 case '(': goto yy639
;
10509 case ')': goto yy641
;
10510 default: goto yy635
;
10514 #line 521 "src/parser.re"
10515 { goto cpp_attribute
; }
10516 #line 10517 "src/parser.c"
10519 #line 520 "src/parser.re"
10520 { NEWLINE(); goto cpp_attribute
; }
10521 #line 10522 "src/parser.c"
10524 #line 518 "src/parser.re"
10525 { ++parens
; goto cpp_attribute
; }
10526 #line 10527 "src/parser.c"
10529 #line 519 "src/parser.re"
10530 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
10531 #line 10532 "src/parser.c"
10533 #line 523 "src/parser.re"
10537 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
10538 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
10539 psi_plist_free(tokens
);
10544 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);