1 /* Generated by re2c 0.16 on Tue Mar 28 16:36:22 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
;
266 tok
= mrk
= eol
= cur
= I
->buffer
;
267 lim
= I
->buffer
+ I
->length
;
269 tokens
= psi_plist_init((void (*)(void *)) psi_token_free
);
276 #line 277 "src/parser.c"
279 unsigned int yyaccept
= 0;
280 if ((lim
- cur
) < 13) if (cur
>= lim
) goto done
;;
325 case '\'': goto yy19
;
386 case '\\': goto yy76
;
402 #line 449 "src/parser.re"
403 { NEWTOKEN(-2); goto error
; }
404 #line 405 "src/parser.c"
407 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
415 #line 448 "src/parser.re"
416 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
417 #line 418 "src/parser.c"
420 #line 447 "src/parser.re"
421 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
422 #line 423 "src/parser.c"
425 switch ((yych
= *cur
)) {
430 #line 348 "src/parser.re"
431 { NEWTOKEN(PSI_T_NOT
); goto start
; }
432 #line 433 "src/parser.c"
435 yych
= *(mrk
= ++cur
);
442 #line 331 "src/parser.re"
443 { NEWTOKEN(PSI_T_HASH
); goto start
; }
444 #line 445 "src/parser.c"
517 #line 349 "src/parser.re"
518 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
519 #line 520 "src/parser.c"
522 switch ((yych
= *cur
)) {
523 case '&': goto yy101
;
527 #line 350 "src/parser.re"
528 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
529 #line 530 "src/parser.c"
532 yych
= *(mrk
= ++cur
);
539 #line 332 "src/parser.re"
540 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
541 #line 542 "src/parser.c"
544 #line 333 "src/parser.re"
545 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
546 #line 547 "src/parser.c"
549 #line 346 "src/parser.re"
550 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
551 #line 552 "src/parser.c"
554 yych
= *(mrk
= ++cur
);
556 case '.': goto yy105
;
570 #line 351 "src/parser.re"
571 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
572 #line 573 "src/parser.c"
575 #line 335 "src/parser.re"
576 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
577 #line 578 "src/parser.c"
580 yych
= *(mrk
= ++cur
);
582 case '.': goto yy105
;
596 #line 352 "src/parser.re"
597 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
598 #line 599 "src/parser.c"
601 yych
= *(mrk
= ++cur
);
603 case '.': goto yy107
;
613 case '9': goto yy108
;
617 #line 363 "src/parser.re"
618 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
619 #line 620 "src/parser.c"
622 switch ((yych
= *cur
)) {
623 case '*': goto yy111
;
624 case '/': goto yy113
;
628 #line 353 "src/parser.re"
629 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
630 #line 631 "src/parser.c"
633 yych
= *(mrk
= ++cur
);
636 case '.': goto yy115
;
644 case '7': goto yy117
;
646 case 'e': goto yy119
;
648 case 'l': goto yy120
;
650 case 'u': goto yy122
;
652 case 'x': goto yy124
;
656 #line 316 "src/parser.re"
657 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
658 #line 659 "src/parser.c"
662 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
666 case '.': goto yy115
;
678 case 'e': goto yy119
;
680 case 'l': goto yy120
;
682 case 'u': goto yy122
;
687 #line 336 "src/parser.re"
688 { NEWTOKEN(PSI_T_COLON
); goto start
; }
689 #line 690 "src/parser.c"
692 #line 334 "src/parser.re"
693 { NEWTOKEN(PSI_T_EOS
); goto start
; }
694 #line 695 "src/parser.c"
697 yych
= *(mrk
= ++cur
);
764 case 'z': goto yy125
;
765 case '<': goto yy127
;
766 case '=': goto yy129
;
770 #line 361 "src/parser.re"
771 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
772 #line 773 "src/parser.c"
775 switch ((yych
= *cur
)) {
776 case '=': goto yy131
;
780 #line 345 "src/parser.re"
781 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
782 #line 783 "src/parser.c"
785 switch ((yych
= *cur
)) {
786 case '=': goto yy133
;
787 case '>': goto yy135
;
791 #line 362 "src/parser.re"
792 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
793 #line 794 "src/parser.c"
796 #line 365 "src/parser.re"
797 { NEWTOKEN(PSI_T_IIF
); goto start
; }
798 #line 799 "src/parser.c"
801 yych
= *(mrk
= ++cur
);
804 case 'r': goto yy137
;
808 #line 440 "src/parser.re"
809 { NEWTOKEN(PSI_T_NAME
); goto start
; }
810 #line 811 "src/parser.c"
813 yych
= *(mrk
= ++cur
);
816 case 'o': goto yy139
;
821 yych
= *(mrk
= ++cur
);
824 case 'a': goto yy140
;
826 case 'h': goto yy141
;
828 case 'o': goto yy142
;
833 yych
= *(mrk
= ++cur
);
836 case 'e': goto yy143
;
838 case 'o': goto yy144
;
843 yych
= *(mrk
= ++cur
);
846 case 'l': goto yy145
;
848 case 'n': goto yy146
;
850 case 'r': goto yy147
;
855 yych
= *(mrk
= ++cur
);
858 case 'a': goto yy148
;
860 case 'l': goto yy149
;
862 case 'r': goto yy150
;
864 case 'u': goto yy151
;
870 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
937 case 0x7F: goto yy53
;
938 case '\\': goto yy138
;
943 yych
= *(mrk
= ++cur
);
946 case 'f': goto yy152
;
948 case 'n': goto yy154
;
953 yych
= *(mrk
= ++cur
);
955 case '"': goto yy155
;
956 case '\'': goto yy156
;
958 case 'e': goto yy157
;
960 case 'i': goto yy158
;
962 case 'o': goto yy159
;
967 yych
= *(mrk
= ++cur
);
970 case 'i': goto yy160
;
975 yych
= *(mrk
= ++cur
);
978 case 'u': goto yy161
;
983 yych
= *(mrk
= ++cur
);
986 case 'b': goto yy162
;
991 yych
= *(mrk
= ++cur
);
994 case 'a': goto yy163
;
996 case 'o': goto yy164
;
998 case 'r': goto yy165
;
1003 yych
= *(mrk
= ++cur
);
1006 case 'e': goto yy166
;
1011 yych
= *(mrk
= ++cur
);
1014 case 'e': goto yy167
;
1016 case 'h': goto yy168
;
1018 case 'i': goto yy169
;
1020 case 't': goto yy170
;
1025 yych
= *(mrk
= ++cur
);
1028 case 'e': goto yy171
;
1030 case 'o': goto yy172
;
1032 case 'r': goto yy173
;
1034 case 'y': goto yy174
;
1039 yych
= *(mrk
= ++cur
);
1042 case 'i': goto yy175
;
1044 case 'n': goto yy176
;
1049 yych
= *(mrk
= ++cur
);
1052 case 'o': goto yy177
;
1057 yych
= *(mrk
= ++cur
);
1060 case 'a': goto yy178
;
1065 yych
= *(mrk
= ++cur
);
1068 case 'v': goto yy179
;
1073 #line 339 "src/parser.re"
1074 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
1075 #line 1076 "src/parser.c"
1078 switch ((yych
= *cur
)) {
1153 case 0x7F: goto yy77
;
1154 default: goto yy180
;
1157 #line 354 "src/parser.re"
1158 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
1159 #line 1160 "src/parser.c"
1162 #line 340 "src/parser.re"
1163 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
1164 #line 1165 "src/parser.c"
1167 #line 356 "src/parser.re"
1168 { NEWTOKEN(PSI_T_CARET
); goto start
; }
1169 #line 1170 "src/parser.c"
1172 yych
= *(mrk
= ++cur
);
1174 case '_': goto yy183
;
1179 yych
= *(mrk
= ++cur
);
1182 case 'e': goto yy157
;
1184 case 'i': goto yy158
;
1186 case 'o': goto yy159
;
1191 yych
= *(mrk
= ++cur
);
1194 case 'b': goto yy162
;
1195 case 'n': goto yy184
;
1200 yych
= *(mrk
= ++cur
);
1203 case 'a': goto yy163
;
1205 case 'o': goto yy164
;
1206 case 'R': goto yy165
;
1207 case 'r': goto yy185
;
1212 #line 337 "src/parser.re"
1213 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1214 #line 1215 "src/parser.c"
1217 switch ((yych
= *cur
)) {
1218 case '|': goto yy186
;
1222 #line 355 "src/parser.re"
1223 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1224 #line 1225 "src/parser.c"
1227 #line 338 "src/parser.re"
1228 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1229 #line 1230 "src/parser.c"
1232 #line 347 "src/parser.re"
1233 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1234 #line 1235 "src/parser.c"
1237 #line 341 "src/parser.re"
1238 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1239 #line 1240 "src/parser.c"
1242 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1245 case '"': goto yy188
;
1250 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1317 case 0x7F: goto yy100
;
1321 #line 442 "src/parser.re"
1322 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1323 #line 1324 "src/parser.c"
1326 #line 343 "src/parser.re"
1327 { NEWTOKEN(PSI_T_AND
); goto start
; }
1328 #line 1329 "src/parser.c"
1331 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1334 case '\'': goto yy190
;
1335 case '\\': goto yy192
;
1336 default: goto yy103
;
1350 case '9': goto yy108
;
1351 default: goto yy106
;
1366 case 10: goto yy182
;
1367 case 11: goto yy230
;
1368 case 12: goto yy232
;
1369 case 13: goto yy234
;
1370 case 14: goto yy244
;
1371 case 15: goto yy191
;
1372 case 16: goto yy277
;
1373 case 17: goto yy280
;
1374 case 18: goto yy286
;
1375 case 19: goto yy288
;
1376 case 20: goto yy291
;
1377 case 21: goto yy296
;
1378 case 22: goto yy307
;
1379 case 23: goto yy310
;
1380 case 24: goto yy325
;
1381 case 25: goto yy333
;
1382 case 26: goto yy340
;
1383 case 27: goto yy343
;
1384 case 28: goto yy346
;
1385 case 29: goto yy349
;
1386 case 30: goto yy356
;
1387 case 31: goto yy358
;
1388 case 32: goto yy362
;
1389 case 33: goto yy364
;
1390 case 34: goto yy366
;
1391 case 35: goto yy368
;
1392 case 36: goto yy371
;
1393 case 37: goto yy380
;
1394 case 38: goto yy388
;
1395 case 39: goto yy407
;
1396 case 40: goto yy409
;
1397 case 41: goto yy415
;
1398 case 42: goto yy420
;
1399 case 43: goto yy422
;
1400 case 44: goto yy424
;
1401 case 45: goto yy428
;
1402 case 46: goto yy434
;
1403 case 47: goto yy436
;
1404 case 48: goto yy438
;
1405 case 49: goto yy440
;
1406 case 50: goto yy445
;
1407 case 51: goto yy447
;
1408 case 52: goto yy449
;
1409 case 53: goto yy451
;
1410 case 54: goto yy453
;
1411 case 55: goto yy455
;
1412 case 56: goto yy457
;
1413 case 57: goto yy462
;
1414 case 58: goto yy474
;
1415 case 59: goto yy476
;
1416 case 60: goto yy480
;
1417 case 61: goto yy484
;
1418 case 62: goto yy486
;
1419 case 63: goto yy488
;
1420 case 64: goto yy490
;
1421 case 65: goto yy492
;
1422 case 66: goto yy497
;
1423 case 67: goto yy502
;
1424 case 68: goto yy507
;
1425 case 69: goto yy510
;
1426 case 70: goto yy513
;
1427 case 71: goto yy515
;
1428 case 72: goto yy517
;
1429 case 73: goto yy519
;
1430 case 74: goto yy524
;
1431 case 75: goto yy526
;
1432 case 76: goto yy530
;
1433 case 77: goto yy532
;
1434 case 78: goto yy534
;
1435 case 79: goto yy536
;
1436 case 80: goto yy542
;
1437 case 81: goto yy544
;
1438 case 82: goto yy549
;
1439 case 83: goto yy553
;
1440 default: goto yy556
;
1445 case '.': goto yy194
;
1446 default: goto yy106
;
1451 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
1464 case '9': goto yy108
;
1466 case 'd': goto yy196
;
1468 case 'f': goto yy197
;
1470 case 'l': goto yy199
;
1471 default: goto yy110
;
1474 #line 322 "src/parser.re"
1475 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1476 #line 1477 "src/parser.c"
1479 #line 329 "src/parser.re"
1481 #line 1482 "src/parser.c"
1484 #line 330 "src/parser.re"
1485 { goto comment_sl
; }
1486 #line 1487 "src/parser.c"
1490 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1503 case '9': goto yy115
;
1505 case 'd': goto yy196
;
1507 case 'e': goto yy119
;
1509 case 'f': goto yy197
;
1511 case 'l': goto yy199
;
1512 default: goto yy110
;
1516 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
1527 case '7': goto yy117
;
1529 case 'l': goto yy120
;
1531 case 'u': goto yy122
;
1538 case '-': goto yy105
;
1548 case '9': goto yy108
;
1549 default: goto yy106
;
1553 yych
= *(mrk
= ++cur
);
1556 case 'l': goto yy201
;
1558 case 'u': goto yy202
;
1559 default: goto yy121
;
1563 #line 318 "src/parser.re"
1564 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1565 #line 1566 "src/parser.c"
1568 switch ((yych
= *cur
)) {
1570 case 'l': goto yy204
;
1571 default: goto yy123
;
1575 #line 317 "src/parser.re"
1576 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1577 #line 1578 "src/parser.c"
1602 case 'f': goto yy205
;
1603 default: goto yy106
;
1607 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1675 case 'z': goto yy125
;
1676 case '>': goto yy207
;
1677 default: goto yy106
;
1681 #line 357 "src/parser.re"
1682 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1683 #line 1684 "src/parser.c"
1686 #line 359 "src/parser.re"
1687 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1688 #line 1689 "src/parser.c"
1691 #line 342 "src/parser.re"
1692 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1693 #line 1694 "src/parser.c"
1696 #line 360 "src/parser.re"
1697 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1698 #line 1699 "src/parser.c"
1701 #line 358 "src/parser.re"
1702 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1703 #line 1704 "src/parser.c"
1706 yych
= *(mrk
= ++cur
);
1709 case 'r': goto yy209
;
1714 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
1791 case 0x7F: goto yy106
;
1792 default: goto yy180
;
1796 yych
= *(mrk
= ++cur
);
1799 case 'o': goto yy210
;
1804 yych
= *(mrk
= ++cur
);
1807 case 'l': goto yy211
;
1812 yych
= *(mrk
= ++cur
);
1815 case 'a': goto yy212
;
1820 yych
= *(mrk
= ++cur
);
1823 case 'n': goto yy213
;
1825 case 'u': goto yy214
;
1830 yych
= *(mrk
= ++cur
);
1833 case 'f': goto yy215
;
1838 yych
= *(mrk
= ++cur
);
1841 case 'u': goto yy216
;
1846 yych
= *(mrk
= ++cur
);
1849 case 'i': goto yy217
;
1851 case 's': goto yy218
;
1856 yych
= *(mrk
= ++cur
);
1859 case 'd': goto yy219
;
1861 case 'u': goto yy220
;
1866 yych
= *(mrk
= ++cur
);
1869 case 'r': goto yy221
;
1874 yych
= *(mrk
= ++cur
);
1877 case 'l': goto yy222
;
1882 yych
= *(mrk
= ++cur
);
1885 case 'o': goto yy223
;
1890 yych
= *(mrk
= ++cur
);
1893 case 'e': goto yy224
;
1898 yych
= *(mrk
= ++cur
);
1901 case 'n': goto yy225
;
1906 yych
= *(mrk
= ++cur
);
1971 case 0x7F: goto yy153
;
1973 case 'd': goto yy226
;
1975 case 'n': goto yy227
;
1976 case '\\': goto yy138
;
1980 #line 368 "src/parser.re"
1981 { NEWTOKEN(PSI_T_IF
); goto start
; }
1982 #line 1983 "src/parser.c"
1985 yych
= *(mrk
= ++cur
);
1988 case 'c': goto yy228
;
1990 case 't': goto yy229
;
1996 case '"': goto yy106
;
2002 case '\'': goto yy106
;
2003 default: goto yy103
;
2007 yych
= *(mrk
= ++cur
);
2010 case 't': goto yy231
;
2015 yych
= *(mrk
= ++cur
);
2018 case 'b': goto yy233
;
2023 yych
= *(mrk
= ++cur
);
2026 case 'n': goto yy235
;
2031 yych
= *(mrk
= ++cur
);
2034 case 'x': goto yy236
;
2039 yych
= *(mrk
= ++cur
);
2042 case 'l': goto yy237
;
2047 yych
= *(mrk
= ++cur
);
2050 case 'j': goto yy238
;
2055 yych
= *(mrk
= ++cur
);
2058 case 't': goto yy239
;
2063 yych
= *(mrk
= ++cur
);
2066 case 's': goto yy240
;
2071 yych
= *(mrk
= ++cur
);
2074 case 'e': goto yy241
;
2079 yych
= *(mrk
= ++cur
);
2082 case 't': goto yy242
;
2087 yych
= *(mrk
= ++cur
);
2090 case 't': goto yy243
;
2095 yych
= *(mrk
= ++cur
);
2098 case 'o': goto yy245
;
2103 yych
= *(mrk
= ++cur
);
2106 case 'g': goto yy246
;
2111 yych
= *(mrk
= ++cur
);
2114 case 'a': goto yy247
;
2116 case 'r': goto yy248
;
2121 yych
= *(mrk
= ++cur
);
2124 case 'm': goto yy249
;
2129 yych
= *(mrk
= ++cur
);
2131 case '_': goto yy250
;
2136 yych
= *(mrk
= ++cur
);
2139 case 'u': goto yy251
;
2144 yych
= *(mrk
= ++cur
);
2147 case 'p': goto yy252
;
2152 yych
= *(mrk
= ++cur
);
2155 case 'n': goto yy253
;
2160 yych
= *(mrk
= ++cur
);
2163 case 'd': goto yy254
;
2165 case 'i': goto yy255
;
2167 case 's': goto yy256
;
2172 yych
= *(mrk
= ++cur
);
2175 case 'i': goto yy257
;
2180 yych
= *(mrk
= ++cur
);
2183 case 'r': goto yy258
;
2188 yych
= *(mrk
= ++cur
);
2191 case 'a': goto yy259
;
2197 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2263 case 0x7F: goto yy182
;
2264 case '\\': goto yy138
;
2265 default: goto yy180
;
2268 #line 441 "src/parser.re"
2269 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2270 #line 2271 "src/parser.c"
2273 yych
= *(mrk
= ++cur
);
2275 case 'a': goto yy260
;
2280 yych
= *(mrk
= ++cur
);
2282 case 'c': goto yy261
;
2287 yych
= *(mrk
= ++cur
);
2290 case 'e': goto yy241
;
2291 case 'a': goto yy262
;
2296 #line 344 "src/parser.re"
2297 { NEWTOKEN(PSI_T_OR
); goto start
; }
2298 #line 2299 "src/parser.c"
2301 #line 443 "src/parser.re"
2302 { NEWTOKEN(PSI_T_QUOTED_STRING
); goto start
; }
2303 #line 2304 "src/parser.c"
2307 #line 444 "src/parser.re"
2308 { NEWTOKEN(PSI_T_QUOTED_CHAR
); goto start
; }
2309 #line 2310 "src/parser.c"
2312 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
2315 case '\'': goto yy263
;
2316 case '\\': goto yy192
;
2317 default: goto yy103
;
2321 #line 364 "src/parser.re"
2322 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2323 #line 2324 "src/parser.c"
2328 case 'd': goto yy264
;
2330 case 'f': goto yy266
;
2332 case 'l': goto yy268
;
2333 default: goto yy106
;
2338 #line 323 "src/parser.re"
2339 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2340 #line 2341 "src/parser.c"
2344 #line 324 "src/parser.re"
2345 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2346 #line 2347 "src/parser.c"
2351 case 'u': goto yy270
;
2352 default: goto yy106
;
2358 #line 319 "src/parser.re"
2359 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2360 #line 2361 "src/parser.c"
2365 case 'l': goto yy270
;
2366 default: goto yy203
;
2371 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
2375 case '.': goto yy272
;
2397 case 'f': goto yy205
;
2399 case 'l': goto yy120
;
2401 case 'p': goto yy119
;
2403 case 'u': goto yy122
;
2408 #line 445 "src/parser.re"
2409 { NEWTOKEN(PSI_T_CPP_HEADER
); goto start
; }
2410 #line 2411 "src/parser.c"
2413 yych
= *(mrk
= ++cur
);
2416 case 'a': goto yy274
;
2418 case 'v': goto yy275
;
2423 yych
= *(mrk
= ++cur
);
2426 case 'l': goto yy276
;
2431 yych
= *(mrk
= ++cur
);
2434 case 'l': goto yy278
;
2439 yych
= *(mrk
= ++cur
);
2442 case 'r': goto yy279
;
2447 yych
= *(mrk
= ++cur
);
2450 case 's': goto yy281
;
2455 yych
= *(mrk
= ++cur
);
2458 case 'n': goto yy282
;
2463 yych
= *(mrk
= ++cur
);
2466 case 'i': goto yy283
;
2471 yych
= *(mrk
= ++cur
);
2474 case 'b': goto yy284
;
2479 yych
= *(mrk
= ++cur
);
2482 case 'f': goto yy285
;
2487 yych
= *(mrk
= ++cur
);
2490 case 'e': goto yy287
;
2495 yych
= *(mrk
= ++cur
);
2498 case 'i': goto yy289
;
2503 yych
= *(mrk
= ++cur
);
2506 case 'm': goto yy290
;
2511 yych
= *(mrk
= ++cur
);
2514 case 'o': goto yy292
;
2519 yych
= *(mrk
= ++cur
);
2522 case 's': goto yy293
;
2527 yych
= *(mrk
= ++cur
);
2530 case 'a': goto yy294
;
2535 yych
= *(mrk
= ++cur
);
2538 case 'e': goto yy295
;
2543 yych
= *(mrk
= ++cur
);
2546 case 'c': goto yy297
;
2551 yych
= *(mrk
= ++cur
);
2554 case 'e': goto yy298
;
2559 yych
= *(mrk
= ++cur
);
2562 case 'd': goto yy299
;
2567 yych
= *(mrk
= ++cur
);
2570 case 'l': goto yy300
;
2575 yych
= *(mrk
= ++cur
);
2640 case 0x7F: goto yy230
;
2641 case '1': goto yy301
;
2642 case '3': goto yy302
;
2643 case '6': goto yy303
;
2644 case '8': goto yy304
;
2646 case 'v': goto yy305
;
2647 case '\\': goto yy138
;
2651 #line 390 "src/parser.re"
2652 { NEWTOKEN(PSI_T_INT
); goto start
; }
2653 #line 2654 "src/parser.c"
2656 yych
= *(mrk
= ++cur
);
2721 case 0x7F: goto yy232
;
2722 case '\\': goto yy138
;
2726 #line 416 "src/parser.re"
2727 { NEWTOKEN(PSI_T_LET
); goto start
; }
2728 #line 2729 "src/parser.c"
2731 yych
= *(mrk
= ++cur
);
2796 case 0x7F: goto yy234
;
2797 case '\\': goto yy138
;
2801 #line 415 "src/parser.re"
2802 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2803 #line 2804 "src/parser.c"
2806 yych
= *(mrk
= ++cur
);
2809 case 'g': goto yy306
;
2814 yych
= *(mrk
= ++cur
);
2817 case 'e': goto yy308
;
2822 yych
= *(mrk
= ++cur
);
2825 case 'l': goto yy309
;
2830 yych
= *(mrk
= ++cur
);
2833 case 'e': goto yy311
;
2835 case 'v': goto yy312
;
2840 yych
= *(mrk
= ++cur
);
2843 case 'h': goto yy313
;
2848 yych
= *(mrk
= ++cur
);
2851 case 't': goto yy314
;
2856 yych
= *(mrk
= ++cur
);
2858 case '_': goto yy315
;
2863 yych
= *(mrk
= ++cur
);
2866 case 'u': goto yy316
;
2871 yych
= *(mrk
= ++cur
);
2936 case 0x7F: goto yy244
;
2937 case '\\': goto yy138
;
2941 #line 417 "src/parser.re"
2942 { NEWTOKEN(PSI_T_SET
); goto start
; }
2943 #line 2944 "src/parser.c"
2946 yych
= *(mrk
= ++cur
);
2949 case 'r': goto yy317
;
2954 yych
= *(mrk
= ++cur
);
2957 case 'n': goto yy318
;
2962 yych
= *(mrk
= ++cur
);
2965 case 't': goto yy319
;
2970 yych
= *(mrk
= ++cur
);
2973 case 'i': goto yy320
;
2975 case 'l': goto yy321
;
2977 case 'u': goto yy322
;
2979 case 'v': goto yy323
;
2984 yych
= *(mrk
= ++cur
);
2987 case 'p': goto yy324
;
2992 yych
= *(mrk
= ++cur
);
2995 case 'a': goto yy326
;
2997 case 'b': goto yy327
;
2999 case 'f': goto yy328
;
3001 case 'i': goto yy329
;
3003 case 'o': goto yy330
;
3005 case 's': goto yy331
;
3010 yych
= *(mrk
= ++cur
);
3013 case 'e': goto yy332
;
3018 yych
= *(mrk
= ++cur
);
3021 case 'e': goto yy334
;
3026 yych
= *(mrk
= ++cur
);
3029 case 't': goto yy335
;
3034 yych
= *(mrk
= ++cur
);
3037 case 'e': goto yy336
;
3042 yych
= *(mrk
= ++cur
);
3045 case 'o': goto yy337
;
3050 yych
= *(mrk
= ++cur
);
3053 case 'i': goto yy338
;
3058 yych
= *(mrk
= ++cur
);
3061 case 'd': goto yy339
;
3066 yych
= *(mrk
= ++cur
);
3069 case 'n': goto yy341
;
3074 yych
= *(mrk
= ++cur
);
3077 case 'l': goto yy342
;
3082 yych
= *(mrk
= ++cur
);
3084 case 't': goto yy344
;
3089 yych
= *(mrk
= ++cur
);
3091 case 'e': goto yy345
;
3096 yych
= *(mrk
= ++cur
);
3098 case 'g': goto yy347
;
3104 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
3107 case '\'': goto yy190
;
3108 default: goto yy103
;
3113 #line 326 "src/parser.re"
3114 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3115 #line 3116 "src/parser.c"
3119 #line 325 "src/parser.re"
3120 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3121 #line 3122 "src/parser.c"
3125 #line 327 "src/parser.re"
3126 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3127 #line 3128 "src/parser.c"
3131 #line 320 "src/parser.re"
3132 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_ULL
; cur
+= 3; goto start
; }
3133 #line 3134 "src/parser.c"
3136 if ((lim
- cur
) < 3) if (cur
>= lim
) goto done
;;
3160 case 'f': goto yy272
;
3162 case 'p': goto yy119
;
3163 default: goto yy106
;
3167 yych
= *(mrk
= ++cur
);
3170 case 'y': goto yy348
;
3175 yych
= *(mrk
= ++cur
);
3178 case 'a': goto yy350
;
3183 yych
= *(mrk
= ++cur
);
3248 case 0x7F: goto yy277
;
3250 case 'v': goto yy351
;
3251 case '\\': goto yy138
;
3255 #line 387 "src/parser.re"
3256 { NEWTOKEN(PSI_T_BOOL
); goto start
; }
3257 #line 3258 "src/parser.c"
3260 yych
= *(mrk
= ++cur
);
3263 case 'a': goto yy352
;
3265 case 'b': goto yy353
;
3267 case 'o': goto yy354
;
3272 yych
= *(mrk
= ++cur
);
3337 case 0x7F: goto yy280
;
3338 case '\\': goto yy138
;
3342 #line 388 "src/parser.re"
3343 { NEWTOKEN(PSI_T_CHAR
); goto start
; }
3344 #line 3345 "src/parser.c"
3347 yych
= *(mrk
= ++cur
);
3350 case 't': goto yy355
;
3355 yych
= *(mrk
= ++cur
);
3358 case 't': goto yy357
;
3363 yych
= *(mrk
= ++cur
);
3366 case 'n': goto yy359
;
3371 yych
= *(mrk
= ++cur
);
3374 case 'l': goto yy360
;
3379 yych
= *(mrk
= ++cur
);
3444 case 0x7F: goto yy286
;
3445 case '\\': goto yy138
;
3449 #line 372 "src/parser.re"
3450 { NEWTOKEN(PSI_T_ELIF
); goto start
; }
3451 #line 3452 "src/parser.c"
3454 yych
= *(mrk
= ++cur
);
3519 case 0x7F: goto yy288
;
3520 case '\\': goto yy138
;
3524 #line 371 "src/parser.re"
3525 { NEWTOKEN(PSI_T_ELSE
); goto start
; }
3526 #line 3527 "src/parser.c"
3529 yych
= *(mrk
= ++cur
);
3532 case 'f': goto yy361
;
3537 yych
= *(mrk
= ++cur
);
3602 case 0x7F: goto yy291
;
3603 case '\\': goto yy138
;
3607 #line 413 "src/parser.re"
3608 { NEWTOKEN(PSI_T_ENUM
); goto start
; }
3609 #line 3610 "src/parser.c"
3612 yych
= *(mrk
= ++cur
);
3615 case 'r': goto yy363
;
3620 yych
= *(mrk
= ++cur
);
3623 case 'e': goto yy365
;
3628 yych
= *(mrk
= ++cur
);
3631 case 't': goto yy367
;
3636 yych
= *(mrk
= ++cur
);
3701 case 0x7F: goto yy296
;
3702 case '\\': goto yy138
;
3706 #line 421 "src/parser.re"
3707 { NEWTOKEN(PSI_T_FREE
); goto start
; }
3708 #line 3709 "src/parser.c"
3711 yych
= *(mrk
= ++cur
);
3714 case 't': goto yy369
;
3719 yych
= *(mrk
= ++cur
);
3722 case 'f': goto yy370
;
3727 yych
= *(mrk
= ++cur
);
3730 case 'e': goto yy372
;
3735 yych
= *(mrk
= ++cur
);
3738 case 'u': goto yy373
;
3743 yych
= *(mrk
= ++cur
);
3745 case '6': goto yy374
;
3750 yych
= *(mrk
= ++cur
);
3752 case '2': goto yy375
;
3757 yych
= *(mrk
= ++cur
);
3759 case '4': goto yy376
;
3764 yych
= *(mrk
= ++cur
);
3766 case '_': goto yy377
;
3771 yych
= *(mrk
= ++cur
);
3774 case 'a': goto yy378
;
3779 yych
= *(mrk
= ++cur
);
3844 case 0x7F: goto yy307
;
3845 case '\\': goto yy138
;
3849 #line 391 "src/parser.re"
3850 { NEWTOKEN(PSI_T_LONG
); goto start
; }
3851 #line 3852 "src/parser.c"
3854 yych
= *(mrk
= ++cur
);
3857 case 'd': goto yy379
;
3862 yych
= *(mrk
= ++cur
);
3927 case 0x7F: goto yy310
;
3928 case '\\': goto yy138
;
3932 #line 383 "src/parser.re"
3933 { NEWTOKEN(PSI_T_NULL
); goto start
; }
3934 #line 3935 "src/parser.c"
3937 yych
= *(mrk
= ++cur
);
3940 case 'c': goto yy381
;
3945 yych
= *(mrk
= ++cur
);
3948 case 'a': goto yy382
;
3953 yych
= *(mrk
= ++cur
);
3956 case 'v': goto yy383
;
3961 yych
= *(mrk
= ++cur
);
3963 case '_': goto yy384
;
3968 yych
= *(mrk
= ++cur
);
3971 case 'a': goto yy385
;
3976 yych
= *(mrk
= ++cur
);
3979 case 'r': goto yy386
;
3984 yych
= *(mrk
= ++cur
);
3987 case 't': goto yy387
;
3992 yych
= *(mrk
= ++cur
);
3995 case 'e': goto yy389
;
4000 yych
= *(mrk
= ++cur
);
4003 case 'i': goto yy390
;
4008 yych
= *(mrk
= ++cur
);
4011 case 'n': goto yy391
;
4016 yych
= *(mrk
= ++cur
);
4019 case 'e': goto yy392
;
4024 yych
= *(mrk
= ++cur
);
4027 case 'c': goto yy393
;
4032 yych
= *(mrk
= ++cur
);
4035 case 'a': goto yy394
;
4040 yych
= *(mrk
= ++cur
);
4105 case 0x7F: goto yy325
;
4106 case '\\': goto yy138
;
4110 #line 422 "src/parser.re"
4111 { NEWTOKEN(PSI_T_TEMP
); goto start
; }
4112 #line 4113 "src/parser.c"
4115 yych
= *(mrk
= ++cur
);
4118 case 'r': goto yy395
;
4123 yych
= *(mrk
= ++cur
);
4126 case 'o': goto yy396
;
4131 yych
= *(mrk
= ++cur
);
4134 case 'l': goto yy397
;
4139 yych
= *(mrk
= ++cur
);
4142 case 'n': goto yy398
;
4147 yych
= *(mrk
= ++cur
);
4150 case 'b': goto yy399
;
4155 yych
= *(mrk
= ++cur
);
4158 case 't': goto yy400
;
4163 yych
= *(mrk
= ++cur
);
4228 case 0x7F: goto yy333
;
4229 case '\\': goto yy138
;
4233 #line 381 "src/parser.re"
4234 { NEWTOKEN(PSI_T_TRUE
); goto start
; }
4235 #line 4236 "src/parser.c"
4238 yych
= *(mrk
= ++cur
);
4241 case 'd': goto yy401
;
4246 yych
= *(mrk
= ++cur
);
4248 case '1': goto yy402
;
4249 case '3': goto yy403
;
4250 case '6': goto yy404
;
4251 case '8': goto yy405
;
4256 yych
= *(mrk
= ++cur
);
4259 case 'f': goto yy406
;
4264 yych
= *(mrk
= ++cur
);
4267 case 'n': goto yy408
;
4272 yych
= *(mrk
= ++cur
);
4275 case 'g': goto yy410
;
4280 yych
= *(mrk
= ++cur
);
4345 case 0x7F: goto yy340
;
4346 case '\\': goto yy138
;
4350 #line 386 "src/parser.re"
4351 { NEWTOKEN(PSI_T_VOID
); goto start
; }
4352 #line 4353 "src/parser.c"
4355 yych
= *(mrk
= ++cur
);
4358 case 'i': goto yy411
;
4363 yych
= *(mrk
= ++cur
);
4428 case 0x7F: goto yy343
;
4429 case '\\': goto yy138
;
4433 #line 431 "src/parser.re"
4434 { NEWTOKEN(PSI_T_ZVAL
); goto start
; }
4435 #line 4436 "src/parser.c"
4438 yych
= *(mrk
= ++cur
);
4440 case 't': goto yy412
;
4445 yych
= *(mrk
= ++cur
);
4510 case 0x7F: goto yy346
;
4511 case '\\': goto yy138
;
4515 #line 367 "src/parser.re"
4516 { NEWTOKEN(PSI_T_ONCE
); goto start
; }
4517 #line 4518 "src/parser.c"
4520 yych
= *(mrk
= ++cur
);
4522 case 'm': goto yy413
;
4527 yych
= *(mrk
= ++cur
);
4592 case 0x7F: goto yy349
;
4593 case '\\': goto yy138
;
4597 #line 405 "src/parser.re"
4598 { NEWTOKEN(PSI_T_ARRAY
); goto start
; }
4599 #line 4600 "src/parser.c"
4602 yych
= *(mrk
= ++cur
);
4605 case 'l': goto yy414
;
4610 yych
= *(mrk
= ++cur
);
4613 case 'a': goto yy416
;
4618 yych
= *(mrk
= ++cur
);
4621 case 'b': goto yy417
;
4626 yych
= *(mrk
= ++cur
);
4629 case 'a': goto yy418
;
4634 yych
= *(mrk
= ++cur
);
4637 case 'c': goto yy419
;
4642 yych
= *(mrk
= ++cur
);
4707 case 0x7F: goto yy356
;
4708 case '\\': goto yy138
;
4712 #line 414 "src/parser.re"
4713 { NEWTOKEN(PSI_T_CONST
); goto start
; }
4714 #line 4715 "src/parser.c"
4717 yych
= *(mrk
= ++cur
);
4782 case 0x7F: goto yy358
;
4783 case '\\': goto yy138
;
4787 #line 432 "src/parser.re"
4788 { NEWTOKEN(PSI_T_COUNT
); goto start
; }
4789 #line 4790 "src/parser.c"
4792 yych
= *(mrk
= ++cur
);
4795 case 'e': goto yy421
;
4800 yych
= *(mrk
= ++cur
);
4803 case 'e': goto yy423
;
4808 yych
= *(mrk
= ++cur
);
4873 case 0x7F: goto yy362
;
4874 case '\\': goto yy138
;
4878 #line 373 "src/parser.re"
4879 { NEWTOKEN(PSI_T_ENDIF
); goto start
; }
4880 #line 4881 "src/parser.c"
4883 yych
= *(mrk
= ++cur
);
4948 case 0x7F: goto yy364
;
4949 case '\\': goto yy138
;
4953 #line 378 "src/parser.re"
4954 { NEWTOKEN(PSI_T_ERROR
); goto start
; }
4955 #line 4956 "src/parser.c"
4958 yych
= *(mrk
= ++cur
);
5023 case 0x7F: goto yy366
;
5024 case '\\': goto yy138
;
5028 #line 382 "src/parser.re"
5029 { NEWTOKEN(PSI_T_FALSE
); goto start
; }
5030 #line 5031 "src/parser.c"
5033 yych
= *(mrk
= ++cur
);
5098 case 0x7F: goto yy368
;
5100 case 'v': goto yy425
;
5101 case '\\': goto yy138
;
5105 #line 392 "src/parser.re"
5106 { NEWTOKEN(PSI_T_FLOAT
); goto start
; }
5107 #line 5108 "src/parser.c"
5110 yych
= *(mrk
= ++cur
);
5113 case 'i': goto yy426
;
5118 yych
= *(mrk
= ++cur
);
5183 case 0x7F: goto yy371
;
5184 case '\\': goto yy138
;
5188 #line 369 "src/parser.re"
5189 { NEWTOKEN(PSI_T_IFDEF
); goto start
; }
5190 #line 5191 "src/parser.c"
5193 yych
= *(mrk
= ++cur
);
5196 case 'f': goto yy427
;
5201 yych
= *(mrk
= ++cur
);
5204 case 'd': goto yy429
;
5209 yych
= *(mrk
= ++cur
);
5211 case '_': goto yy430
;
5216 yych
= *(mrk
= ++cur
);
5218 case '_': goto yy431
;
5223 yych
= *(mrk
= ++cur
);
5225 case '_': goto yy432
;
5230 yych
= *(mrk
= ++cur
);
5233 case 't': goto yy433
;
5238 yych
= *(mrk
= ++cur
);
5241 case 'l': goto yy435
;
5246 yych
= *(mrk
= ++cur
);
5311 case 0x7F: goto yy380
;
5312 case '\\': goto yy138
;
5316 #line 384 "src/parser.re"
5317 { NEWTOKEN(PSI_T_MIXED
); goto start
; }
5318 #line 5319 "src/parser.c"
5321 yych
= *(mrk
= ++cur
);
5324 case 't': goto yy437
;
5329 yych
= *(mrk
= ++cur
);
5332 case 'l': goto yy439
;
5337 yych
= *(mrk
= ++cur
);
5340 case 'a': goto yy441
;
5345 yych
= *(mrk
= ++cur
);
5348 case 'a': goto yy442
;
5353 yych
= *(mrk
= ++cur
);
5356 case 's': goto yy443
;
5361 yych
= *(mrk
= ++cur
);
5364 case 'n': goto yy444
;
5369 yych
= *(mrk
= ++cur
);
5434 case 0x7F: goto yy388
;
5435 case '\\': goto yy138
;
5439 #line 389 "src/parser.re"
5440 { NEWTOKEN(PSI_T_SHORT
); goto start
; }
5441 #line 5442 "src/parser.c"
5444 yych
= *(mrk
= ++cur
);
5447 case 'd': goto yy446
;
5452 yych
= *(mrk
= ++cur
);
5455 case 'c': goto yy448
;
5460 yych
= *(mrk
= ++cur
);
5463 case 'g': goto yy450
;
5468 yych
= *(mrk
= ++cur
);
5471 case 'n': goto yy452
;
5476 yych
= *(mrk
= ++cur
);
5479 case 't': goto yy454
;
5484 yych
= *(mrk
= ++cur
);
5487 case 'l': goto yy456
;
5492 yych
= *(mrk
= ++cur
);
5495 case 'r': goto yy458
;
5500 yych
= *(mrk
= ++cur
);
5503 case 'o': goto yy459
;
5508 yych
= *(mrk
= ++cur
);
5511 case 'o': goto yy460
;
5516 yych
= *(mrk
= ++cur
);
5519 case 't': goto yy461
;
5524 yych
= *(mrk
= ++cur
);
5527 case 'j': goto yy463
;
5532 yych
= *(mrk
= ++cur
);
5535 case 'r': goto yy464
;
5540 yych
= *(mrk
= ++cur
);
5543 case 'e': goto yy465
;
5548 yych
= *(mrk
= ++cur
);
5550 case '6': goto yy466
;
5555 yych
= *(mrk
= ++cur
);
5557 case '2': goto yy467
;
5562 yych
= *(mrk
= ++cur
);
5564 case '4': goto yy468
;
5569 yych
= *(mrk
= ++cur
);
5571 case '_': goto yy469
;
5576 yych
= *(mrk
= ++cur
);
5641 case 0x7F: goto yy407
;
5642 case '\\': goto yy138
;
5646 #line 376 "src/parser.re"
5647 { NEWTOKEN(PSI_T_UNDEF
); goto start
; }
5648 #line 5649 "src/parser.c"
5651 yych
= *(mrk
= ++cur
);
5716 case 0x7F: goto yy409
;
5717 case '\\': goto yy138
;
5721 #line 412 "src/parser.re"
5722 { NEWTOKEN(PSI_T_UNION
); goto start
; }
5723 #line 5724 "src/parser.c"
5726 yych
= *(mrk
= ++cur
);
5729 case 'n': goto yy470
;
5734 yych
= *(mrk
= ++cur
);
5737 case 'n': goto yy471
;
5742 yych
= *(mrk
= ++cur
);
5744 case 'r': goto yy472
;
5749 yych
= *(mrk
= ++cur
);
5751 case 'a': goto yy473
;
5756 yych
= *(mrk
= ++cur
);
5821 case 0x7F: goto yy415
;
5822 case '\\': goto yy138
;
5826 #line 429 "src/parser.re"
5827 { NEWTOKEN(PSI_T_ARRVAL
); goto start
; }
5828 #line 5829 "src/parser.c"
5831 yych
= *(mrk
= ++cur
);
5834 case 'l': goto yy475
;
5839 yych
= *(mrk
= ++cur
);
5842 case 'l': goto yy477
;
5847 yych
= *(mrk
= ++cur
);
5850 case 'c': goto yy478
;
5855 yych
= *(mrk
= ++cur
);
5920 case 0x7F: goto yy420
;
5921 case '\\': goto yy138
;
5925 #line 433 "src/parser.re"
5926 { NEWTOKEN(PSI_T_CALLOC
); goto start
; }
5927 #line 5928 "src/parser.c"
5930 yych
= *(mrk
= ++cur
);
5995 case 0x7F: goto yy422
;
5997 case 'd': goto yy479
;
5998 case '\\': goto yy138
;
6002 #line 374 "src/parser.re"
6003 { NEWTOKEN(PSI_T_DEFINE
); goto start
; }
6004 #line 6005 "src/parser.c"
6007 yych
= *(mrk
= ++cur
);
6072 case 0x7F: goto yy424
;
6073 case '\\': goto yy138
;
6077 #line 393 "src/parser.re"
6078 { NEWTOKEN(PSI_T_DOUBLE
); goto start
; }
6079 #line 6080 "src/parser.c"
6082 yych
= *(mrk
= ++cur
);
6085 case 'a': goto yy481
;
6090 yych
= *(mrk
= ++cur
);
6093 case 'o': goto yy482
;
6098 yych
= *(mrk
= ++cur
);
6163 case 0x7F: goto yy428
;
6164 case '\\': goto yy138
;
6168 #line 370 "src/parser.re"
6169 { NEWTOKEN(PSI_T_IFNDEF
); goto start
; }
6170 #line 6171 "src/parser.c"
6173 yych
= *(mrk
= ++cur
);
6176 case 'e': goto yy483
;
6181 yych
= *(mrk
= ++cur
);
6184 case 't': goto yy485
;
6189 yych
= *(mrk
= ++cur
);
6192 case 't': goto yy487
;
6197 yych
= *(mrk
= ++cur
);
6200 case 't': goto yy489
;
6205 yych
= *(mrk
= ++cur
);
6270 case 0x7F: goto yy434
;
6271 case '\\': goto yy138
;
6275 #line 394 "src/parser.re"
6276 { NEWTOKEN(PSI_T_INT8
); goto start
; }
6277 #line 6278 "src/parser.c"
6280 yych
= *(mrk
= ++cur
);
6345 case 0x7F: goto yy436
;
6346 case '\\': goto yy138
;
6350 #line 426 "src/parser.re"
6351 { NEWTOKEN(PSI_T_INTVAL
); goto start
; }
6352 #line 6353 "src/parser.c"
6355 yych
= *(mrk
= ++cur
);
6420 case 0x7F: goto yy438
;
6421 case '\\': goto yy138
;
6425 #line 406 "src/parser.re"
6426 { NEWTOKEN(PSI_T_OBJECT
); goto start
; }
6427 #line 6428 "src/parser.c"
6430 yych
= *(mrk
= ++cur
);
6495 case 0x7F: goto yy440
;
6496 case '\\': goto yy138
;
6500 #line 430 "src/parser.re"
6501 { NEWTOKEN(PSI_T_OBJVAL
); goto start
; }
6502 #line 6503 "src/parser.c"
6505 yych
= *(mrk
= ++cur
);
6508 case 'l': goto yy491
;
6513 yych
= *(mrk
= ++cur
);
6516 case 's': goto yy493
;
6521 yych
= *(mrk
= ++cur
);
6524 case 's': goto yy494
;
6529 yych
= *(mrk
= ++cur
);
6594 case 0x7F: goto yy445
;
6595 case '\\': goto yy138
;
6599 #line 420 "src/parser.re"
6600 { NEWTOKEN(PSI_T_RETURN
); goto start
; }
6601 #line 6602 "src/parser.c"
6604 yych
= *(mrk
= ++cur
);
6669 case 0x7F: goto yy447
;
6670 case '\\': goto yy138
;
6674 #line 403 "src/parser.re"
6675 { NEWTOKEN(PSI_T_SIGNED
); goto start
; }
6676 #line 6677 "src/parser.c"
6679 yych
= *(mrk
= ++cur
);
6744 case 0x7F: goto yy449
;
6745 case '\\': goto yy138
;
6749 #line 408 "src/parser.re"
6750 { NEWTOKEN(PSI_T_STATIC
); goto start
; }
6751 #line 6752 "src/parser.c"
6754 yych
= *(mrk
= ++cur
);
6819 case 0x7F: goto yy451
;
6820 case '\\': goto yy138
;
6824 #line 404 "src/parser.re"
6825 { NEWTOKEN(PSI_T_STRING
); goto start
; }
6826 #line 6827 "src/parser.c"
6829 yych
= *(mrk
= ++cur
);
6894 case 0x7F: goto yy453
;
6895 case '\\': goto yy138
;
6899 #line 423 "src/parser.re"
6900 { NEWTOKEN(PSI_T_STRLEN
); goto start
; }
6901 #line 6902 "src/parser.c"
6904 yych
= *(mrk
= ++cur
);
6969 case 0x7F: goto yy455
;
6970 case '\\': goto yy138
;
6974 #line 411 "src/parser.re"
6975 { NEWTOKEN(PSI_T_STRUCT
); goto start
; }
6976 #line 6977 "src/parser.c"
6979 yych
= *(mrk
= ++cur
);
7044 case 0x7F: goto yy457
;
7045 case '\\': goto yy138
;
7049 #line 424 "src/parser.re"
7050 { NEWTOKEN(PSI_T_STRVAL
); goto start
; }
7051 #line 7052 "src/parser.c"
7054 yych
= *(mrk
= ++cur
);
7057 case 'a': goto yy495
;
7062 yych
= *(mrk
= ++cur
);
7065 case 'l': goto yy496
;
7070 yych
= *(mrk
= ++cur
);
7073 case 'a': goto yy498
;
7078 yych
= *(mrk
= ++cur
);
7143 case 0x7F: goto yy462
;
7144 case '\\': goto yy138
;
7148 #line 437 "src/parser.re"
7149 { NEWTOKEN(PSI_T_TO_INT
); goto start
; }
7150 #line 7151 "src/parser.c"
7153 yych
= *(mrk
= ++cur
);
7156 case 'e': goto yy499
;
7161 yych
= *(mrk
= ++cur
);
7164 case 'i': goto yy500
;
7169 yych
= *(mrk
= ++cur
);
7172 case 'f': goto yy501
;
7177 yych
= *(mrk
= ++cur
);
7179 case '_': goto yy503
;
7184 yych
= *(mrk
= ++cur
);
7186 case '_': goto yy504
;
7191 yych
= *(mrk
= ++cur
);
7193 case '_': goto yy505
;
7198 yych
= *(mrk
= ++cur
);
7201 case 't': goto yy506
;
7206 yych
= *(mrk
= ++cur
);
7209 case 'e': goto yy508
;
7214 yych
= *(mrk
= ++cur
);
7217 case 'g': goto yy509
;
7222 yych
= *(mrk
= ++cur
);
7224 case 'i': goto yy511
;
7229 yych
= *(mrk
= ++cur
);
7294 case 0x7F: goto yy474
;
7295 case '\\': goto yy138
;
7299 #line 366 "src/parser.re"
7300 { NEWTOKEN(PSI_T_PRAGMA
); goto start
; }
7301 #line 7302 "src/parser.c"
7304 yych
= *(mrk
= ++cur
);
7369 case 0x7F: goto yy476
;
7370 case '\\': goto yy138
;
7374 #line 428 "src/parser.re"
7375 { NEWTOKEN(PSI_T_BOOLVAL
); goto start
; }
7376 #line 7377 "src/parser.c"
7379 yych
= *(mrk
= ++cur
);
7382 case 'e': goto yy512
;
7387 yych
= *(mrk
= ++cur
);
7390 case 'k': goto yy514
;
7395 yych
= *(mrk
= ++cur
);
7460 case 0x7F: goto yy480
;
7461 case '\\': goto yy138
;
7465 #line 375 "src/parser.re"
7466 { NEWTOKEN(PSI_T_DEFINED
); goto start
; }
7467 #line 7468 "src/parser.c"
7470 yych
= *(mrk
= ++cur
);
7473 case 'l': goto yy516
;
7478 yych
= *(mrk
= ++cur
);
7481 case 'n': goto yy518
;
7486 yych
= *(mrk
= ++cur
);
7551 case 0x7F: goto yy484
;
7552 case '\\': goto yy138
;
7553 case '_': goto yy520
;
7557 #line 379 "src/parser.re"
7558 { NEWTOKEN(PSI_T_INCLUDE
); goto start
; }
7559 #line 7560 "src/parser.c"
7562 yych
= *(mrk
= ++cur
);
7627 case 0x7F: goto yy486
;
7628 case '\\': goto yy138
;
7632 #line 396 "src/parser.re"
7633 { NEWTOKEN(PSI_T_INT16
); goto start
; }
7634 #line 7635 "src/parser.c"
7637 yych
= *(mrk
= ++cur
);
7702 case 0x7F: goto yy488
;
7703 case '\\': goto yy138
;
7707 #line 398 "src/parser.re"
7708 { NEWTOKEN(PSI_T_INT32
); goto start
; }
7709 #line 7710 "src/parser.c"
7712 yych
= *(mrk
= ++cur
);
7777 case 0x7F: goto yy490
;
7778 case '\\': goto yy138
;
7782 #line 400 "src/parser.re"
7783 { NEWTOKEN(PSI_T_INT64
); goto start
; }
7784 #line 7785 "src/parser.c"
7787 yych
= *(mrk
= ++cur
);
7852 case 0x7F: goto yy492
;
7853 case '\\': goto yy138
;
7857 #line 425 "src/parser.re"
7858 { NEWTOKEN(PSI_T_PATHVAL
); goto start
; }
7859 #line 7860 "src/parser.c"
7862 yych
= *(mrk
= ++cur
);
7865 case 's': goto yy521
;
7870 yych
= *(mrk
= ++cur
);
7873 case 'e': goto yy522
;
7878 yych
= *(mrk
= ++cur
);
7881 case 'y': goto yy523
;
7886 yych
= *(mrk
= ++cur
);
7951 case 0x7F: goto yy497
;
7952 case '\\': goto yy138
;
7956 #line 439 "src/parser.re"
7957 { NEWTOKEN(PSI_T_TO_BOOL
); goto start
; }
7958 #line 7959 "src/parser.c"
7961 yych
= *(mrk
= ++cur
);
7964 case 't': goto yy525
;
7969 yych
= *(mrk
= ++cur
);
7972 case 'c': goto yy527
;
7977 yych
= *(mrk
= ++cur
);
7980 case 'n': goto yy528
;
7985 yych
= *(mrk
= ++cur
);
8050 case 0x7F: goto yy502
;
8051 case '\\': goto yy138
;
8055 #line 410 "src/parser.re"
8056 { NEWTOKEN(PSI_T_TYPEDEF
); goto start
; }
8057 #line 8058 "src/parser.c"
8060 yych
= *(mrk
= ++cur
);
8063 case 't': goto yy529
;
8068 yych
= *(mrk
= ++cur
);
8071 case 't': goto yy531
;
8076 yych
= *(mrk
= ++cur
);
8079 case 't': goto yy533
;
8084 yych
= *(mrk
= ++cur
);
8149 case 0x7F: goto yy507
;
8150 case '\\': goto yy138
;
8154 #line 395 "src/parser.re"
8155 { NEWTOKEN(PSI_T_UINT8
); goto start
; }
8156 #line 8157 "src/parser.c"
8159 yych
= *(mrk
= ++cur
);
8162 case 'd': goto yy535
;
8167 yych
= *(mrk
= ++cur
);
8232 case 0x7F: goto yy510
;
8233 case '\\': goto yy138
;
8237 #line 377 "src/parser.re"
8238 { NEWTOKEN(PSI_T_WARNING
); goto start
; }
8239 #line 8240 "src/parser.c"
8242 yych
= *(mrk
= ++cur
);
8244 case 'b': goto yy537
;
8249 yych
= *(mrk
= ++cur
);
8314 case 0x7F: goto yy513
;
8315 case '\\': goto yy138
;
8319 #line 385 "src/parser.re"
8320 { NEWTOKEN(PSI_T_CALLABLE
); goto start
; }
8321 #line 8322 "src/parser.c"
8324 yych
= *(mrk
= ++cur
);
8389 case 0x7F: goto yy515
;
8390 case '\\': goto yy138
;
8394 #line 407 "src/parser.re"
8395 { NEWTOKEN(PSI_T_CALLBACK
); goto start
; }
8396 #line 8397 "src/parser.c"
8399 yych
= *(mrk
= ++cur
);
8464 case 0x7F: goto yy517
;
8465 case '\\': goto yy138
;
8469 #line 427 "src/parser.re"
8470 { NEWTOKEN(PSI_T_FLOATVAL
); goto start
; }
8471 #line 8472 "src/parser.c"
8474 yych
= *(mrk
= ++cur
);
8539 case 0x7F: goto yy519
;
8540 case '\\': goto yy138
;
8544 #line 409 "src/parser.re"
8545 { NEWTOKEN(PSI_T_FUNCTION
); goto start
; }
8546 #line 8547 "src/parser.c"
8549 yych
= *(mrk
= ++cur
);
8552 case 'n': goto yy538
;
8557 yych
= *(mrk
= ++cur
);
8560 case 'e': goto yy539
;
8565 yych
= *(mrk
= ++cur
);
8568 case 'r': goto yy540
;
8573 yych
= *(mrk
= ++cur
);
8638 case 0x7F: goto yy524
;
8639 case '\\': goto yy138
;
8643 #line 435 "src/parser.re"
8644 { NEWTOKEN(PSI_T_TO_ARRAY
); goto start
; }
8645 #line 8646 "src/parser.c"
8648 yych
= *(mrk
= ++cur
);
8713 case 0x7F: goto yy526
;
8714 case '\\': goto yy138
;
8718 #line 438 "src/parser.re"
8719 { NEWTOKEN(PSI_T_TO_FLOAT
); goto start
; }
8720 #line 8721 "src/parser.c"
8723 yych
= *(mrk
= ++cur
);
8726 case 't': goto yy541
;
8731 yych
= *(mrk
= ++cur
);
8734 case 'g': goto yy543
;
8739 yych
= *(mrk
= ++cur
);
8804 case 0x7F: goto yy530
;
8805 case '\\': goto yy138
;
8809 #line 397 "src/parser.re"
8810 { NEWTOKEN(PSI_T_UINT16
); goto start
; }
8811 #line 8812 "src/parser.c"
8814 yych
= *(mrk
= ++cur
);
8879 case 0x7F: goto yy532
;
8880 case '\\': goto yy138
;
8884 #line 399 "src/parser.re"
8885 { NEWTOKEN(PSI_T_UINT32
); goto start
; }
8886 #line 8887 "src/parser.c"
8889 yych
= *(mrk
= ++cur
);
8954 case 0x7F: goto yy534
;
8955 case '\\': goto yy138
;
8959 #line 401 "src/parser.re"
8960 { NEWTOKEN(PSI_T_UINT64
); goto start
; }
8961 #line 8962 "src/parser.c"
8964 yych
= *(mrk
= ++cur
);
9029 case 0x7F: goto yy536
;
9030 case '\\': goto yy138
;
9034 #line 402 "src/parser.re"
9035 { NEWTOKEN(PSI_T_UNSIGNED
); goto start
; }
9036 #line 9037 "src/parser.c"
9039 yych
= *(mrk
= ++cur
);
9041 case 'u': goto yy545
;
9046 yych
= *(mrk
= ++cur
);
9049 case 'e': goto yy546
;
9054 yych
= *(mrk
= ++cur
);
9057 case 'r': goto yy547
;
9062 yych
= *(mrk
= ++cur
);
9065 case 't': goto yy548
;
9070 yych
= *(mrk
= ++cur
);
9135 case 0x7F: goto yy542
;
9136 case '\\': goto yy138
;
9140 #line 434 "src/parser.re"
9141 { NEWTOKEN(PSI_T_TO_OBJECT
); goto start
; }
9142 #line 9143 "src/parser.c"
9145 yych
= *(mrk
= ++cur
);
9210 case 0x7F: goto yy544
;
9211 case '\\': goto yy138
;
9215 #line 436 "src/parser.re"
9216 { NEWTOKEN(PSI_T_TO_STRING
); goto start
; }
9217 #line 9218 "src/parser.c"
9220 yych
= *(mrk
= ++cur
);
9222 case 't': goto yy550
;
9227 yych
= *(mrk
= ++cur
);
9230 case 'x': goto yy551
;
9235 yych
= *(mrk
= ++cur
);
9238 case 't': goto yy552
;
9243 yych
= *(mrk
= ++cur
);
9308 case 0x7F: goto yy549
;
9309 case '\\': goto yy138
;
9313 #line 418 "src/parser.re"
9314 { NEWTOKEN(PSI_T_PRE_ASSERT
); goto start
; }
9315 #line 9316 "src/parser.c"
9318 yych
= *(mrk
= ++cur
);
9320 case 'e': goto yy554
;
9325 yych
= *(mrk
= ++cur
);
9328 case 't': goto yy555
;
9333 yych
= *(mrk
= ++cur
);
9398 case 0x7F: goto yy553
;
9399 case '\\': goto yy138
;
9403 #line 419 "src/parser.re"
9404 { NEWTOKEN(PSI_T_POST_ASSERT
); goto start
; }
9405 #line 9406 "src/parser.c"
9408 yych
= *(mrk
= ++cur
);
9410 case '_': goto yy557
;
9415 yych
= *(mrk
= ++cur
);
9480 case 0x7F: goto yy556
;
9481 case '\\': goto yy138
;
9485 #line 380 "src/parser.re"
9486 { NEWTOKEN(PSI_T_INCLUDE_NEXT
); goto start
; }
9487 #line 9488 "src/parser.c"
9490 yych
= *(mrk
= ++cur
);
9492 case '_': goto yy558
;
9498 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9563 case 0x7F: goto yy53
;
9564 case '(': goto yy560
;
9565 case '\\': goto yy138
;
9566 default: goto yy558
;
9571 case '(': goto yy561
;
9572 default: goto yy106
;
9576 #line 446 "src/parser.re"
9577 { parens
= 2; goto cpp_attribute
; }
9578 #line 9579 "src/parser.c"
9580 #line 452 "src/parser.re"
9585 #line 9586 "src/parser.c"
9588 if ((lim
- cur
) < 2) if (cur
>= lim
) goto done
;;
9592 case '\r': goto yy567
;
9593 case '*': goto yy569
;
9594 default: goto yy565
;
9599 #line 459 "src/parser.re"
9601 #line 9602 "src/parser.c"
9604 #line 457 "src/parser.re"
9605 { NEWLINE(); goto comment
; }
9606 #line 9607 "src/parser.c"
9610 case '/': goto yy570
;
9611 default: goto yy566
;
9615 #line 458 "src/parser.re"
9616 { NEWTOKEN(PSI_T_COMMENT
); goto start
; }
9617 #line 9618 "src/parser.c"
9619 #line 461 "src/parser.re"
9624 #line 9625 "src/parser.c"
9627 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9631 case '\r': goto yy576
;
9632 default: goto yy574
;
9636 #line 467 "src/parser.re"
9637 { goto comment_sl
; }
9638 #line 9639 "src/parser.c"
9641 #line 466 "src/parser.re"
9642 { NEWTOKEN(PSI_T_COMMENT
); NEWLINE(); goto start
; }
9643 #line 9644 "src/parser.c"
9645 #line 469 "src/parser.re"
9651 #line 9652 "src/parser.c"
9654 if (lim
<= cur
) if (cur
>= lim
) goto done
;;
9658 case '\r': goto yy582
;
9659 case '(': goto yy584
;
9660 case ')': goto yy586
;
9661 default: goto yy580
;
9665 #line 478 "src/parser.re"
9666 { goto cpp_attribute
; }
9667 #line 9668 "src/parser.c"
9670 #line 477 "src/parser.re"
9671 { NEWLINE(); goto cpp_attribute
; }
9672 #line 9673 "src/parser.c"
9675 #line 475 "src/parser.re"
9676 { ++parens
; goto cpp_attribute
; }
9677 #line 9678 "src/parser.c"
9680 #line 476 "src/parser.re"
9681 { if (parens
== 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE
); goto start
; } else { --parens
; goto cpp_attribute
; } }
9682 #line 9683 "src/parser.c"
9684 #line 480 "src/parser.re"
9688 P
->error(PSI_DATA(P
), token
, PSI_WARNING
, "PSI syntax error: unexpected input (%d) '%.*s' at col %tu",
9689 token
->type
, token
->size
, token
->text
, tok
- eol
+ 1);
9690 psi_plist_free(tokens
);
9695 PSI_DEBUG_PRINT(P
, "PSI: EOF cur=%p lim=%p\n", cur
, lim
);