1 /* Generated by re2c 1.1.1 on Mon Dec 3 16:17:20 2018 */
2 #line 1 "src/parser_scan.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>
36 # define YYMAXFILL 256
39 size_t psi_parser_maxfill(void) {
47 #define NEWTOKEN(t) do { \
48 if (t == PSI_T_COMMENT || t == PSI_T_WHITESPACE) { \
49 token = psi_token_init(t, "", 0, tok - eol + 1, I->lines, I->file); \
51 token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
53 tokens = psi_plist_add(tokens, &token); \
54 PSI_DEBUG_PRINT(P, "PSI: scanned < "); \
55 PSI_DEBUG_DUMP(P, psi_token_dump, token); \
58 #define CHECKEOF() if (cur >= lim - YYMAXFILL) goto done
60 struct psi_plist
*psi_parser_scan(struct psi_parser
*P
, struct psi_parser_input
*I
)
62 struct psi_plist
*tokens
;
63 struct psi_token
*token
;
64 const char *tok
, *cur
, *lim
, *mrk
, *eol
, *ctxmrk
;
69 PSI_DEBUG_PRINT(P
, "PSI: scanning %s\n", I
->file
->val
);
71 tok
= mrk
= eol
= cur
= I
->buffer
;
72 lim
= I
->buffer
+ I
->length
+ YYMAXFILL
;
74 tokens
= psi_plist_init((psi_plist_dtor
) psi_token_free
);
84 #line 85 "src/parser_scan.c"
87 unsigned int yyaccept
= 0;
88 if ((lim
- cur
) < 15) CHECKEOF();;
133 case '\'': goto yy20
;
184 case '\\': goto yy77
;
202 case '}': goto yy100
;
203 case '~': goto yy102
;
209 #line 250 "src/parser_scan.re"
210 { CHECKEOF(); NEWTOKEN(-2); goto error
; }
211 #line 212 "src/parser_scan.c"
214 if (lim
<= cur
) CHECKEOF();;
223 #line 249 "src/parser_scan.re"
224 { NEWTOKEN(PSI_T_WHITESPACE
); goto start
; }
225 #line 226 "src/parser_scan.c"
228 #line 248 "src/parser_scan.re"
229 { NEWTOKEN(PSI_T_EOL
); NEWLINE(); goto start
; }
230 #line 231 "src/parser_scan.c"
234 case '=': goto yy104
;
238 #line 151 "src/parser_scan.re"
239 { NEWTOKEN(PSI_T_NOT
); goto start
; }
240 #line 241 "src/parser_scan.c"
243 #line 124 "src/parser_scan.re"
244 { escaped
= false; tok
+= 1; goto string
; }
245 #line 246 "src/parser_scan.c"
249 case '#': goto yy106
;
253 #line 134 "src/parser_scan.re"
254 { NEWTOKEN(PSI_T_HASH
); goto start
; }
255 #line 256 "src/parser_scan.c"
328 #line 152 "src/parser_scan.re"
329 { NEWTOKEN(PSI_T_MODULO
); goto start
; }
330 #line 331 "src/parser_scan.c"
334 case '&': goto yy111
;
338 #line 153 "src/parser_scan.re"
339 { NEWTOKEN(PSI_T_AMPERSAND
); goto start
; }
340 #line 341 "src/parser_scan.c"
343 #line 123 "src/parser_scan.re"
344 { escaped
= false; tok
+= 1; goto character
; }
345 #line 346 "src/parser_scan.c"
348 #line 135 "src/parser_scan.re"
349 { NEWTOKEN(PSI_T_LPAREN
); goto start
; }
350 #line 351 "src/parser_scan.c"
353 #line 136 "src/parser_scan.re"
354 { NEWTOKEN(PSI_T_RPAREN
); goto start
; }
355 #line 356 "src/parser_scan.c"
358 #line 149 "src/parser_scan.re"
359 { NEWTOKEN(PSI_T_ASTERISK
); goto start
; }
360 #line 361 "src/parser_scan.c"
363 #line 154 "src/parser_scan.re"
364 { NEWTOKEN(PSI_T_PLUS
); goto start
; }
365 #line 366 "src/parser_scan.c"
368 #line 138 "src/parser_scan.re"
369 { NEWTOKEN(PSI_T_COMMA
); goto start
; }
370 #line 371 "src/parser_scan.c"
373 #line 155 "src/parser_scan.re"
374 { NEWTOKEN(PSI_T_MINUS
); goto start
; }
375 #line 376 "src/parser_scan.c"
378 yych
= *(mrk
= ++cur
);
380 case '.': goto yy113
;
390 case '9': goto yy115
;
394 #line 166 "src/parser_scan.re"
395 { NEWTOKEN(PSI_T_PERIOD
); goto start
; }
396 #line 397 "src/parser_scan.c"
400 case '*': goto yy118
;
401 case '/': goto yy120
;
405 #line 156 "src/parser_scan.re"
406 { NEWTOKEN(PSI_T_SLASH
); goto start
; }
407 #line 408 "src/parser_scan.c"
410 yych
= *(mrk
= ++cur
);
412 case '.': goto yy122
;
414 case 'e': goto yy126
;
416 case 'x': goto yy131
;
420 #line 110 "src/parser_scan.re"
421 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
; goto start
; }
422 #line 423 "src/parser_scan.c"
426 if ((lim
- cur
) < 3) CHECKEOF();;
429 case '.': goto yy122
;
441 case 'e': goto yy126
;
443 case 'l': goto yy127
;
445 case 'u': goto yy129
;
450 #line 139 "src/parser_scan.re"
451 { NEWTOKEN(PSI_T_COLON
); goto start
; }
452 #line 453 "src/parser_scan.c"
455 #line 137 "src/parser_scan.re"
456 { NEWTOKEN(PSI_T_EOS
); goto start
; }
457 #line 458 "src/parser_scan.c"
460 yych
= *(mrk
= ++cur
);
527 case 'z': goto yy132
;
528 case '<': goto yy134
;
529 case '=': goto yy136
;
533 #line 164 "src/parser_scan.re"
534 { NEWTOKEN(PSI_T_LCHEVR
); goto start
; }
535 #line 536 "src/parser_scan.c"
539 case '=': goto yy138
;
543 #line 148 "src/parser_scan.re"
544 { NEWTOKEN(PSI_T_EQUALS
); goto start
; }
545 #line 546 "src/parser_scan.c"
549 case '=': goto yy140
;
550 case '>': goto yy142
;
554 #line 165 "src/parser_scan.re"
555 { NEWTOKEN(PSI_T_RCHEVR
); goto start
; }
556 #line 557 "src/parser_scan.c"
559 #line 168 "src/parser_scan.re"
560 { NEWTOKEN(PSI_T_IIF
); goto start
; }
561 #line 562 "src/parser_scan.c"
564 yych
= *(mrk
= ++cur
);
567 case 'r': goto yy144
;
569 case 's': goto yy145
;
573 #line 243 "src/parser_scan.re"
574 { NEWTOKEN(PSI_T_NAME
); goto start
; }
575 #line 576 "src/parser_scan.c"
578 yych
= *(mrk
= ++cur
);
581 case 'o': goto yy148
;
586 yych
= *(mrk
= ++cur
);
589 case 'a': goto yy149
;
591 case 'o': goto yy150
;
596 yych
= *(mrk
= ++cur
);
599 case 'e': goto yy151
;
604 yych
= *(mrk
= ++cur
);
607 case 'l': goto yy152
;
609 case 'n': goto yy153
;
611 case 'r': goto yy154
;
616 yych
= *(mrk
= ++cur
);
619 case 'a': goto yy155
;
621 case 'l': goto yy156
;
623 case 'r': goto yy157
;
625 case 'u': goto yy158
;
631 if (lim
<= cur
) CHECKEOF();;
698 case 0x7F: goto yy55
;
699 case '\\': goto yy147
;
704 yych
= *(mrk
= ++cur
);
707 case 'f': goto yy159
;
709 case 'n': goto yy161
;
714 yych
= *(mrk
= ++cur
);
717 case '\'': goto yy162
;
719 case 'e': goto yy164
;
721 case 'i': goto yy165
;
726 yych
= *(mrk
= ++cur
);
729 case 'i': goto yy166
;
734 yych
= *(mrk
= ++cur
);
737 case 'u': goto yy167
;
742 yych
= *(mrk
= ++cur
);
745 case 'b': goto yy168
;
750 yych
= *(mrk
= ++cur
);
753 case 'a': goto yy169
;
755 case 'o': goto yy170
;
757 case 'r': goto yy171
;
762 yych
= *(mrk
= ++cur
);
765 case 'e': goto yy172
;
770 yych
= *(mrk
= ++cur
);
773 case 'e': goto yy173
;
775 case 't': goto yy174
;
780 yych
= *(mrk
= ++cur
);
783 case 'e': goto yy175
;
785 case 'o': goto yy176
;
787 case 'r': goto yy177
;
792 yych
= *(mrk
= ++cur
);
795 case '\'': goto yy178
;
797 case 'n': goto yy180
;
802 yych
= *(mrk
= ++cur
);
805 case 'a': goto yy181
;
810 yych
= *(mrk
= ++cur
);
813 case 'v': goto yy182
;
818 #line 142 "src/parser_scan.re"
819 { NEWTOKEN(PSI_T_LBRACKET
); goto start
; }
820 #line 821 "src/parser_scan.c"
898 case 0x7F: goto yy78
;
902 #line 157 "src/parser_scan.re"
903 { NEWTOKEN(PSI_T_BSLASH
); goto start
; }
904 #line 905 "src/parser_scan.c"
907 #line 143 "src/parser_scan.re"
908 { NEWTOKEN(PSI_T_RBRACKET
); goto start
; }
909 #line 910 "src/parser_scan.c"
912 #line 159 "src/parser_scan.re"
913 { NEWTOKEN(PSI_T_CARET
); goto start
; }
914 #line 915 "src/parser_scan.c"
917 yych
= *(mrk
= ++cur
);
919 case '_': goto yy186
;
924 yych
= *(mrk
= ++cur
);
926 case 'O': goto yy148
;
927 case 'o': goto yy187
;
932 yych
= *(mrk
= ++cur
);
935 case 'a': goto yy149
;
936 case 'O': goto yy150
;
937 case 'h': goto yy188
;
938 case 'o': goto yy189
;
943 yych
= *(mrk
= ++cur
);
946 case 'e': goto yy151
;
947 case 'o': goto yy190
;
952 yych
= *(mrk
= ++cur
);
955 case 'l': goto yy152
;
956 case 'N': goto yy153
;
958 case 'r': goto yy154
;
959 case 'n': goto yy191
;
964 yych
= *(mrk
= ++cur
);
967 case 'a': goto yy155
;
968 case 'L': goto yy156
;
970 case 'r': goto yy157
;
972 case 'u': goto yy158
;
973 case 'l': goto yy192
;
978 yych
= *(mrk
= ++cur
);
981 case 'f': goto yy159
;
982 case 'N': goto yy161
;
983 case 'n': goto yy193
;
988 yych
= *(mrk
= ++cur
);
991 case 'e': goto yy164
;
992 case 'I': goto yy165
;
993 case 'i': goto yy194
;
994 case 'o': goto yy195
;
999 yych
= *(mrk
= ++cur
);
1002 case 'a': goto yy169
;
1004 case 'o': goto yy170
;
1005 case 'R': goto yy171
;
1006 case 'r': goto yy196
;
1011 yych
= *(mrk
= ++cur
);
1014 case 'e': goto yy173
;
1015 case 'T': goto yy174
;
1016 case 'h': goto yy197
;
1017 case 'i': goto yy198
;
1018 case 't': goto yy199
;
1023 yych
= *(mrk
= ++cur
);
1026 case 'e': goto yy175
;
1028 case 'o': goto yy176
;
1030 case 'r': goto yy177
;
1031 case 'y': goto yy200
;
1036 yych
= *(mrk
= ++cur
);
1039 case '\'': goto yy201
;
1040 case '8': goto yy203
;
1041 case 'N': goto yy180
;
1042 case 'n': goto yy204
;
1047 yych
= *(mrk
= ++cur
);
1049 case 'o': goto yy205
;
1054 #line 140 "src/parser_scan.re"
1055 { NEWTOKEN(PSI_T_LBRACE
); goto start
; }
1056 #line 1057 "src/parser_scan.c"
1060 case '|': goto yy206
;
1064 #line 158 "src/parser_scan.re"
1065 { NEWTOKEN(PSI_T_PIPE
); goto start
; }
1066 #line 1067 "src/parser_scan.c"
1069 #line 141 "src/parser_scan.re"
1070 { NEWTOKEN(PSI_T_RBRACE
); goto start
; }
1071 #line 1072 "src/parser_scan.c"
1074 #line 150 "src/parser_scan.re"
1075 { NEWTOKEN(PSI_T_TILDE
); goto start
; }
1076 #line 1077 "src/parser_scan.c"
1079 #line 144 "src/parser_scan.re"
1080 { NEWTOKEN(PSI_T_CMP_NE
); goto start
; }
1081 #line 1082 "src/parser_scan.c"
1084 #line 133 "src/parser_scan.re"
1085 { NEWTOKEN(PSI_T_CPP_PASTE
); goto start
; }
1086 #line 1087 "src/parser_scan.c"
1089 if (lim
<= cur
) CHECKEOF();;
1156 case 0x7F: goto yy110
;
1157 default: goto yy108
;
1160 #line 245 "src/parser_scan.re"
1161 { NEWTOKEN(PSI_T_DOLLAR_NAME
); goto start
; }
1162 #line 1163 "src/parser_scan.c"
1165 #line 146 "src/parser_scan.re"
1166 { NEWTOKEN(PSI_T_AND
); goto start
; }
1167 #line 1168 "src/parser_scan.c"
1171 case '.': goto yy208
;
1172 default: goto yy114
;
1187 case 10: goto yy244
;
1188 case 11: goto yy253
;
1189 case 12: goto yy274
;
1190 case 13: goto yy306
;
1191 case 14: goto yy308
;
1192 case 15: goto yy314
;
1193 case 16: goto yy322
;
1194 case 17: goto yy334
;
1195 case 18: goto yy342
;
1196 case 19: goto yy346
;
1197 case 20: goto yy353
;
1198 case 21: goto yy355
;
1199 case 22: goto yy359
;
1200 case 23: goto yy363
;
1201 case 24: goto yy365
;
1202 case 25: goto yy375
;
1203 case 26: goto yy378
;
1204 case 27: goto yy385
;
1205 case 28: goto yy388
;
1206 case 29: goto yy390
;
1207 case 30: goto yy392
;
1208 case 31: goto yy396
;
1209 case 32: goto yy401
;
1210 case 33: goto yy419
;
1211 case 34: goto yy422
;
1212 case 35: goto yy427
;
1213 case 36: goto yy430
;
1214 case 37: goto yy434
;
1215 case 38: goto yy440
;
1216 case 39: goto yy444
;
1217 case 40: goto yy449
;
1218 case 41: goto yy451
;
1219 case 42: goto yy455
;
1220 case 43: goto yy458
;
1221 case 44: goto yy460
;
1222 case 45: goto yy462
;
1223 case 46: goto yy467
;
1224 case 47: goto yy469
;
1225 case 48: goto yy471
;
1226 case 49: goto yy473
;
1227 case 50: goto yy475
;
1228 case 51: goto yy480
;
1229 case 52: goto yy489
;
1230 case 53: goto yy491
;
1231 case 54: goto yy493
;
1232 case 55: goto yy495
;
1233 case 56: goto yy497
;
1234 case 57: goto yy499
;
1235 case 58: goto yy504
;
1236 case 59: goto yy508
;
1237 case 60: goto yy512
;
1238 case 61: goto yy514
;
1239 case 62: goto yy519
;
1240 case 63: goto yy524
;
1241 case 64: goto yy532
;
1242 case 65: goto yy536
;
1243 case 66: goto yy538
;
1244 case 67: goto yy540
;
1245 case 68: goto yy542
;
1246 case 69: goto yy547
;
1247 case 70: goto yy549
;
1248 case 71: goto yy558
;
1249 case 72: goto yy560
;
1250 case 73: goto yy565
;
1251 case 74: goto yy567
;
1252 case 75: goto yy575
;
1253 case 76: goto yy579
;
1254 case 77: goto yy583
;
1255 case 78: goto yy587
;
1256 case 79: goto yy589
;
1257 default: goto yy594
;
1262 if ((lim
- cur
) < 2) CHECKEOF();;
1274 case '9': goto yy115
;
1276 case 'd': goto yy210
;
1278 case 'f': goto yy211
;
1280 case 'l': goto yy213
;
1281 default: goto yy117
;
1284 #line 116 "src/parser_scan.re"
1285 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
; goto start
; }
1286 #line 1287 "src/parser_scan.c"
1289 #line 130 "src/parser_scan.re"
1291 #line 1292 "src/parser_scan.c"
1294 #line 131 "src/parser_scan.re"
1295 { goto comment_sl
; }
1296 #line 1297 "src/parser_scan.c"
1300 if ((lim
- cur
) < 3) CHECKEOF();;
1312 case '9': goto yy122
;
1314 case 'd': goto yy210
;
1316 case 'e': goto yy126
;
1318 case 'f': goto yy211
;
1320 case 'l': goto yy213
;
1321 default: goto yy117
;
1325 if ((lim
- cur
) < 3) CHECKEOF();;
1336 case '7': goto yy124
;
1338 case 'l': goto yy127
;
1340 case 'u': goto yy129
;
1347 case '-': goto yy215
;
1357 case '9': goto yy115
;
1358 default: goto yy114
;
1362 yych
= *(mrk
= ++cur
);
1365 case 'l': goto yy216
;
1367 case 'u': goto yy217
;
1368 default: goto yy128
;
1372 #line 112 "src/parser_scan.re"
1373 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
1374 #line 1375 "src/parser_scan.c"
1379 case 'l': goto yy219
;
1380 default: goto yy130
;
1384 #line 111 "src/parser_scan.re"
1385 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_U
; cur
+= 1; goto start
; }
1386 #line 1387 "src/parser_scan.c"
1411 case 'f': goto yy220
;
1412 default: goto yy114
;
1416 if (lim
<= cur
) CHECKEOF();;
1484 case 'z': goto yy132
;
1485 case '>': goto yy222
;
1486 default: goto yy114
;
1490 #line 160 "src/parser_scan.re"
1491 { NEWTOKEN(PSI_T_LSHIFT
); goto start
; }
1492 #line 1493 "src/parser_scan.c"
1495 #line 162 "src/parser_scan.re"
1496 { NEWTOKEN(PSI_T_CMP_LE
); goto start
; }
1497 #line 1498 "src/parser_scan.c"
1500 #line 145 "src/parser_scan.re"
1501 { NEWTOKEN(PSI_T_CMP_EQ
); goto start
; }
1502 #line 1503 "src/parser_scan.c"
1505 #line 163 "src/parser_scan.re"
1506 { NEWTOKEN(PSI_T_CMP_GE
); goto start
; }
1507 #line 1508 "src/parser_scan.c"
1510 #line 161 "src/parser_scan.re"
1511 { NEWTOKEN(PSI_T_RSHIFT
); goto start
; }
1512 #line 1513 "src/parser_scan.c"
1515 yych
= *(mrk
= ++cur
);
1518 case 'r': goto yy224
;
1523 yych
= *(mrk
= ++cur
);
1588 case 0x7F: goto yy146
;
1589 case '\\': goto yy147
;
1593 #line 223 "src/parser_scan.re"
1594 { NEWTOKEN(PSI_T_AS
); goto start
; }
1595 #line 1596 "src/parser_scan.c"
1598 if (lim
<= cur
) CHECKEOF();;
1675 case 0x7F: goto yy114
;
1676 default: goto yy183
;
1680 yych
= *(mrk
= ++cur
);
1683 case 'o': goto yy225
;
1688 yych
= *(mrk
= ++cur
);
1691 case 'l': goto yy226
;
1696 yych
= *(mrk
= ++cur
);
1699 case 'u': goto yy227
;
1704 yych
= *(mrk
= ++cur
);
1707 case 'f': goto yy228
;
1712 yych
= *(mrk
= ++cur
);
1715 case 'i': goto yy229
;
1717 case 's': goto yy230
;
1722 yych
= *(mrk
= ++cur
);
1725 case 'd': goto yy231
;
1730 yych
= *(mrk
= ++cur
);
1733 case 'r': goto yy232
;
1738 yych
= *(mrk
= ++cur
);
1741 case 'l': goto yy233
;
1746 yych
= *(mrk
= ++cur
);
1749 case 'o': goto yy234
;
1754 yych
= *(mrk
= ++cur
);
1757 case 'e': goto yy235
;
1762 yych
= *(mrk
= ++cur
);
1765 case 'n': goto yy236
;
1770 yych
= *(mrk
= ++cur
);
1835 case 0x7F: goto yy160
;
1837 case 'd': goto yy237
;
1839 case 'n': goto yy238
;
1840 case '\\': goto yy147
;
1844 #line 193 "src/parser_scan.re"
1845 { NEWTOKEN(PSI_T_IF
); goto start
; }
1846 #line 1847 "src/parser_scan.c"
1849 yych
= *(mrk
= ++cur
);
1852 case 'c': goto yy239
;
1854 case 't': goto yy240
;
1860 #line 128 "src/parser_scan.re"
1861 { char_width
= sizeof(wchar_t)/8; }
1862 #line 1863 "src/parser_scan.c"
1865 yych
= *(mrk
= ++cur
);
1868 case 't': goto yy241
;
1873 yych
= *(mrk
= ++cur
);
1876 case 'b': goto yy243
;
1881 yych
= *(mrk
= ++cur
);
1884 case 'x': goto yy245
;
1889 yych
= *(mrk
= ++cur
);
1892 case 'l': goto yy246
;
1897 yych
= *(mrk
= ++cur
);
1900 case 'j': goto yy247
;
1905 yych
= *(mrk
= ++cur
);
1908 case 't': goto yy248
;
1913 yych
= *(mrk
= ++cur
);
1916 case 's': goto yy249
;
1921 yych
= *(mrk
= ++cur
);
1924 case 'e': goto yy250
;
1929 yych
= *(mrk
= ++cur
);
1932 case 't': goto yy251
;
1937 yych
= *(mrk
= ++cur
);
1940 case 't': goto yy252
;
1945 yych
= *(mrk
= ++cur
);
1948 case 'a': goto yy254
;
1950 case 'r': goto yy255
;
1955 yych
= *(mrk
= ++cur
);
1958 case 'm': goto yy256
;
1963 yych
= *(mrk
= ++cur
);
1965 case '_': goto yy257
;
1970 yych
= *(mrk
= ++cur
);
1973 case 'u': goto yy258
;
1979 #line 127 "src/parser_scan.re"
1981 #line 1982 "src/parser_scan.c"
1984 yych
= *(mrk
= ++cur
);
1987 case 'd': goto yy259
;
1992 yych
= *(mrk
= ++cur
);
1995 case 'r': goto yy260
;
2000 yych
= *(mrk
= ++cur
);
2003 case 'a': goto yy261
;
2009 if (lim
<= cur
) CHECKEOF();;
2075 case 0x7F: goto yy185
;
2076 case '\\': goto yy147
;
2077 default: goto yy183
;
2080 #line 244 "src/parser_scan.re"
2081 { NEWTOKEN(PSI_T_NSNAME
); goto start
; }
2082 #line 2083 "src/parser_scan.c"
2085 yych
= *(mrk
= ++cur
);
2087 case 'a': goto yy262
;
2088 case 'e': goto yy263
;
2089 case 'i': goto yy264
;
2090 case 'r': goto yy265
;
2095 yych
= *(mrk
= ++cur
);
2097 case 'O': goto yy225
;
2098 case 'o': goto yy266
;
2103 yych
= *(mrk
= ++cur
);
2105 case 'a': goto yy267
;
2110 yych
= *(mrk
= ++cur
);
2113 case 'u': goto yy227
;
2114 case 'n': goto yy268
;
2119 yych
= *(mrk
= ++cur
);
2121 case 'u': goto yy269
;
2126 yych
= *(mrk
= ++cur
);
2129 case 'd': goto yy231
;
2130 case 'u': goto yy270
;
2135 yych
= *(mrk
= ++cur
);
2137 case 'O': goto yy234
;
2138 case 'o': goto yy271
;
2143 yych
= *(mrk
= ++cur
);
2146 case 'c': goto yy239
;
2147 case 'T': goto yy240
;
2148 case 'l': goto yy272
;
2149 case 't': goto yy273
;
2154 yych
= *(mrk
= ++cur
);
2157 case 'b': goto yy243
;
2158 case 'n': goto yy275
;
2163 yych
= *(mrk
= ++cur
);
2165 case 'n': goto yy276
;
2170 yych
= *(mrk
= ++cur
);
2173 case 'e': goto yy250
;
2174 case 'a': goto yy277
;
2179 yych
= *(mrk
= ++cur
);
2181 case 'o': goto yy278
;
2186 yych
= *(mrk
= ++cur
);
2188 case 'g': goto yy279
;
2189 case 'z': goto yy280
;
2194 yych
= *(mrk
= ++cur
);
2197 case 'a': goto yy254
;
2198 case 'R': goto yy255
;
2199 case 'r': goto yy281
;
2204 yych
= *(mrk
= ++cur
);
2206 case 'p': goto yy282
;
2212 #line 126 "src/parser_scan.re"
2214 #line 2215 "src/parser_scan.c"
2217 yych
= *(mrk
= ++cur
);
2219 case '"': goto yy283
;
2224 yych
= *(mrk
= ++cur
);
2227 case 'd': goto yy259
;
2228 case 'i': goto yy285
;
2229 case 's': goto yy286
;
2234 yych
= *(mrk
= ++cur
);
2236 case 'i': goto yy287
;
2237 case 'l': goto yy288
;
2242 #line 147 "src/parser_scan.re"
2243 { NEWTOKEN(PSI_T_OR
); goto start
; }
2244 #line 2245 "src/parser_scan.c"
2247 #line 167 "src/parser_scan.re"
2248 { NEWTOKEN(PSI_T_ELLIPSIS
); goto start
; }
2249 #line 2250 "src/parser_scan.c"
2254 case 'd': goto yy289
;
2256 case 'f': goto yy291
;
2258 case 'l': goto yy293
;
2259 default: goto yy114
;
2264 #line 117 "src/parser_scan.re"
2265 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_F
; cur
+= 1; goto start
; }
2266 #line 2267 "src/parser_scan.c"
2270 #line 118 "src/parser_scan.re"
2271 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_L
; cur
+= 1; goto start
; }
2272 #line 2273 "src/parser_scan.c"
2285 case '9': goto yy115
;
2286 default: goto yy114
;
2292 case 'u': goto yy295
;
2293 default: goto yy114
;
2299 #line 113 "src/parser_scan.re"
2300 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_INT
| PSI_NUMBER_UL
; cur
+= 2; goto start
; }
2301 #line 2302 "src/parser_scan.c"
2306 case 'l': goto yy295
;
2307 default: goto yy218
;
2312 if ((lim
- cur
) < 3) CHECKEOF();;
2315 case '.': goto yy297
;
2337 case 'f': goto yy220
;
2339 case 'l': goto yy127
;
2341 case 'p': goto yy126
;
2343 case 'u': goto yy129
;
2348 #line 246 "src/parser_scan.re"
2349 { tok
+= 1; cur
-= 1; NEWTOKEN(PSI_T_CPP_HEADER
); cur
+= 1; goto start
; }
2350 #line 2351 "src/parser_scan.c"
2353 yych
= *(mrk
= ++cur
);
2356 case 'a': goto yy299
;
2358 case 'v': goto yy300
;
2363 yych
= *(mrk
= ++cur
);
2366 case 'l': goto yy301
;
2371 yych
= *(mrk
= ++cur
);
2374 case 'l': goto yy302
;
2379 yych
= *(mrk
= ++cur
);
2382 case 'n': goto yy303
;
2387 yych
= *(mrk
= ++cur
);
2390 case 'i': goto yy304
;
2395 yych
= *(mrk
= ++cur
);
2398 case 'f': goto yy305
;
2403 yych
= *(mrk
= ++cur
);
2406 case 'e': goto yy307
;
2411 yych
= *(mrk
= ++cur
);
2414 case 'i': goto yy309
;
2419 yych
= *(mrk
= ++cur
);
2422 case 'o': goto yy310
;
2427 yych
= *(mrk
= ++cur
);
2430 case 's': goto yy311
;
2435 yych
= *(mrk
= ++cur
);
2438 case 'a': goto yy312
;
2443 yych
= *(mrk
= ++cur
);
2446 case 'e': goto yy313
;
2451 yych
= *(mrk
= ++cur
);
2454 case 'c': goto yy315
;
2459 yych
= *(mrk
= ++cur
);
2462 case 'e': goto yy316
;
2467 yych
= *(mrk
= ++cur
);
2470 case 'd': goto yy317
;
2475 yych
= *(mrk
= ++cur
);
2478 case 'l': goto yy318
;
2483 yych
= *(mrk
= ++cur
);
2486 case 'v': goto yy319
;
2491 yych
= *(mrk
= ++cur
);
2556 case 0x7F: goto yy242
;
2557 case '\\': goto yy147
;
2561 #line 218 "src/parser_scan.re"
2562 { NEWTOKEN(PSI_T_LET
); goto start
; }
2563 #line 2564 "src/parser_scan.c"
2566 yych
= *(mrk
= ++cur
);
2631 case 0x7F: goto yy244
;
2632 case '\\': goto yy147
;
2636 #line 217 "src/parser_scan.re"
2637 { NEWTOKEN(PSI_T_LIB
); goto start
; }
2638 #line 2639 "src/parser_scan.c"
2641 yych
= *(mrk
= ++cur
);
2644 case 'e': goto yy320
;
2649 yych
= *(mrk
= ++cur
);
2652 case 'l': goto yy321
;
2657 yych
= *(mrk
= ++cur
);
2660 case 'e': goto yy323
;
2662 case 'v': goto yy324
;
2667 yych
= *(mrk
= ++cur
);
2670 case 'h': goto yy325
;
2675 yych
= *(mrk
= ++cur
);
2678 case 't': goto yy326
;
2683 yych
= *(mrk
= ++cur
);
2685 case '_': goto yy327
;
2690 yych
= *(mrk
= ++cur
);
2693 case 'u': goto yy328
;
2698 yych
= *(mrk
= ++cur
);
2763 case 0x7F: goto yy253
;
2764 case '\\': goto yy147
;
2768 #line 219 "src/parser_scan.re"
2769 { NEWTOKEN(PSI_T_SET
); goto start
; }
2770 #line 2771 "src/parser_scan.c"
2773 yych
= *(mrk
= ++cur
);
2776 case 't': goto yy329
;
2781 yych
= *(mrk
= ++cur
);
2784 case 'i': goto yy330
;
2786 case 'l': goto yy331
;
2788 case 'v': goto yy332
;
2793 yych
= *(mrk
= ++cur
);
2796 case 'p': goto yy333
;
2801 yych
= *(mrk
= ++cur
);
2804 case 'a': goto yy335
;
2806 case 'b': goto yy336
;
2808 case 'f': goto yy337
;
2810 case 'i': goto yy338
;
2812 case 'o': goto yy339
;
2814 case 's': goto yy340
;
2819 yych
= *(mrk
= ++cur
);
2822 case 'e': goto yy341
;
2827 yych
= *(mrk
= ++cur
);
2830 case 'e': goto yy343
;
2835 yych
= *(mrk
= ++cur
);
2838 case 'n': goto yy344
;
2843 yych
= *(mrk
= ++cur
);
2846 case 'l': goto yy345
;
2851 yych
= *(mrk
= ++cur
);
2853 case 's': goto yy347
;
2854 case 't': goto yy348
;
2859 yych
= *(mrk
= ++cur
);
2861 case 'x': goto yy349
;
2866 yych
= *(mrk
= ++cur
);
2868 case 'n': goto yy350
;
2873 yych
= *(mrk
= ++cur
);
2875 case 'e': goto yy351
;
2880 yych
= *(mrk
= ++cur
);
2882 case 'L': goto yy301
;
2883 case 'l': goto yy352
;
2888 yych
= *(mrk
= ++cur
);
2890 case 'r': goto yy354
;
2895 yych
= *(mrk
= ++cur
);
2897 case 's': goto yy356
;
2902 yych
= *(mrk
= ++cur
);
2904 case 'b': goto yy357
;
2909 yych
= *(mrk
= ++cur
);
2911 case 'm': goto yy358
;
2916 yych
= *(mrk
= ++cur
);
2918 case 'A': goto yy312
;
2919 case 'a': goto yy360
;
2924 yych
= *(mrk
= ++cur
);
2926 case 'i': goto yy361
;
2931 yych
= *(mrk
= ++cur
);
2996 case 0x7F: goto yy274
;
2998 case 'v': goto yy319
;
2999 case '\\': goto yy147
;
3003 #line 187 "src/parser_scan.re"
3004 { NEWTOKEN(PSI_T_INT
); goto start
; }
3005 #line 3006 "src/parser_scan.c"
3008 yych
= *(mrk
= ++cur
);
3010 case 'e': goto yy362
;
3015 yych
= *(mrk
= ++cur
);
3017 case 'g': goto yy364
;
3022 yych
= *(mrk
= ++cur
);
3024 case 'g': goto yy366
;
3029 yych
= *(mrk
= ++cur
);
3031 case 'r': goto yy367
;
3036 yych
= *(mrk
= ++cur
);
3038 case 'n': goto yy368
;
3043 yych
= *(mrk
= ++cur
);
3045 case 'e': goto yy369
;
3050 yych
= *(mrk
= ++cur
);
3053 case 'i': goto yy330
;
3055 case 'l': goto yy331
;
3057 case 'v': goto yy332
;
3058 case 'u': goto yy370
;
3063 yych
= *(mrk
= ++cur
);
3065 case 'e': goto yy371
;
3071 #line 125 "src/parser_scan.re"
3073 #line 3074 "src/parser_scan.c"
3076 yych
= *(mrk
= ++cur
);
3078 case 'o': goto yy372
;
3083 yych
= *(mrk
= ++cur
);
3085 case 'i': goto yy373
;
3090 yych
= *(mrk
= ++cur
);
3092 case 'd': goto yy374
;
3097 yych
= *(mrk
= ++cur
);
3099 case 'a': goto yy376
;
3105 #line 120 "src/parser_scan.re"
3106 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DD
; cur
+= 2; goto start
; }
3107 #line 3108 "src/parser_scan.c"
3111 #line 119 "src/parser_scan.re"
3112 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DF
; cur
+= 2; goto start
; }
3113 #line 3114 "src/parser_scan.c"
3117 #line 121 "src/parser_scan.re"
3118 { NEWTOKEN(PSI_T_NUMBER
); token
->flags
= PSI_NUMBER_FLT
| PSI_NUMBER_DL
; cur
+= 2; goto start
; }
3119 #line 3120 "src/parser_scan.c"