#pragma lib
[m6w6/ext-psi] / src / parser_scan.c
index 262496b..58abfc7 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 1.1.1 on Mon Dec 10 08:53:39 2018 */
+/* Generated by re2c 1.1.1 on Mon Dec 10 13:51:37 2018 */
 #line 1 "src/parser_scan.re"
 /*******************************************************************************
  Copyright (c) 2016, Michael Wallner <mike@php.net>.
@@ -69,9 +69,8 @@ struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input
        struct psi_plist *tokens;
        struct psi_token *token;
        const char *tok, *cur, *lim, *mrk, *eol, *ctxmrk;
-       unsigned parens, lines = 1;
+       unsigned char_width, parens, lines = 1;
        bool escaped;
-       token_t char_width;
 
        PSI_DEBUG_PRINT(P, "PSI: scanning %s\n", I->file->val);
 
@@ -87,7 +86,7 @@ struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input
                (void) ctxmrk;
 
                
-#line 91 "src/parser_scan.c"
+#line 90 "src/parser_scan.c"
                {
                        unsigned char yych;
                        unsigned int yyaccept = 0;
@@ -212,9 +211,9 @@ struct psi_plist *psi_parser_scan(struct psi_parser *P, struct psi_parser_input
 yy2:
                        ++cur;
 yy3:
-#line 256 "src/parser_scan.re"
+#line 254 "src/parser_scan.re"
                        { CHECKEOF(); NEWTOKEN(-2); goto error; }
-#line 218 "src/parser_scan.c"
+#line 217 "src/parser_scan.c"
 yy4:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -226,14 +225,14 @@ yy4:
                        default:        goto yy6;
                        }
 yy6:
-#line 255 "src/parser_scan.re"
+#line 253 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_WHITESPACE); goto start; }
-#line 232 "src/parser_scan.c"
+#line 231 "src/parser_scan.c"
 yy7:
                        ++cur;
-#line 254 "src/parser_scan.re"
+#line 252 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EOL); NEWLINE(); goto start; }
-#line 237 "src/parser_scan.c"
+#line 236 "src/parser_scan.c"
 yy9:
                        yych = *++cur;
                        switch (yych) {
@@ -241,14 +240,14 @@ yy9:
                        default:        goto yy10;
                        }
 yy10:
-#line 157 "src/parser_scan.re"
+#line 156 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NOT); goto start; }
-#line 247 "src/parser_scan.c"
+#line 246 "src/parser_scan.c"
 yy11:
                        ++cur;
-#line 130 "src/parser_scan.re"
+#line 129 "src/parser_scan.re"
                        { escaped = false; tok += 1; goto string; }
-#line 252 "src/parser_scan.c"
+#line 251 "src/parser_scan.c"
 yy13:
                        yych = *++cur;
                        switch (yych) {
@@ -256,9 +255,9 @@ yy13:
                        default:        goto yy14;
                        }
 yy14:
-#line 140 "src/parser_scan.re"
+#line 139 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_HASH); goto start; }
-#line 262 "src/parser_scan.c"
+#line 261 "src/parser_scan.c"
 yy15:
                        yych = *++cur;
                        switch (yych) {
@@ -331,9 +330,9 @@ yy15:
                        }
 yy16:
                        ++cur;
-#line 158 "src/parser_scan.re"
+#line 157 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MODULO); goto start; }
-#line 337 "src/parser_scan.c"
+#line 336 "src/parser_scan.c"
 yy18:
                        yych = *++cur;
                        switch (yych) {
@@ -341,44 +340,44 @@ yy18:
                        default:        goto yy19;
                        }
 yy19:
-#line 159 "src/parser_scan.re"
+#line 158 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AMPERSAND); goto start; }
-#line 347 "src/parser_scan.c"
+#line 346 "src/parser_scan.c"
 yy20:
                        ++cur;
-#line 129 "src/parser_scan.re"
+#line 128 "src/parser_scan.re"
                        { escaped = false; tok += 1; goto character; }
-#line 352 "src/parser_scan.c"
+#line 351 "src/parser_scan.c"
 yy22:
                        ++cur;
-#line 141 "src/parser_scan.re"
+#line 140 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LPAREN); goto start; }
-#line 357 "src/parser_scan.c"
+#line 356 "src/parser_scan.c"
 yy24:
                        ++cur;
-#line 142 "src/parser_scan.re"
+#line 141 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RPAREN); goto start; }
-#line 362 "src/parser_scan.c"
+#line 361 "src/parser_scan.c"
 yy26:
                        ++cur;
-#line 155 "src/parser_scan.re"
+#line 154 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ASTERISK); goto start; }
-#line 367 "src/parser_scan.c"
+#line 366 "src/parser_scan.c"
 yy28:
                        ++cur;
-#line 160 "src/parser_scan.re"
+#line 159 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PLUS); goto start; }
-#line 372 "src/parser_scan.c"
+#line 371 "src/parser_scan.c"
 yy30:
                        ++cur;
-#line 144 "src/parser_scan.re"
+#line 143 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMA); goto start; }
-#line 377 "src/parser_scan.c"
+#line 376 "src/parser_scan.c"
 yy32:
                        ++cur;
-#line 161 "src/parser_scan.re"
+#line 160 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MINUS); goto start; }
-#line 382 "src/parser_scan.c"
+#line 381 "src/parser_scan.c"
 yy34:
                        yyaccept = 0;
                        yych = *(mrk = ++cur);
@@ -397,9 +396,9 @@ yy34:
                        default:        goto yy35;
                        }
 yy35:
-#line 172 "src/parser_scan.re"
+#line 171 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PERIOD); goto start; }
-#line 403 "src/parser_scan.c"
+#line 402 "src/parser_scan.c"
 yy36:
                        yych = *++cur;
                        switch (yych) {
@@ -408,9 +407,9 @@ yy36:
                        default:        goto yy37;
                        }
 yy37:
-#line 162 "src/parser_scan.re"
+#line 161 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SLASH); goto start; }
-#line 414 "src/parser_scan.c"
+#line 413 "src/parser_scan.c"
 yy38:
                        yyaccept = 1;
                        yych = *(mrk = ++cur);
@@ -423,9 +422,9 @@ yy38:
                        default:        goto yy125;
                        }
 yy39:
-#line 116 "src/parser_scan.re"
+#line 115 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT; goto start; }
-#line 429 "src/parser_scan.c"
+#line 428 "src/parser_scan.c"
 yy40:
                        yyaccept = 1;
                        mrk = ++cur;
@@ -453,14 +452,14 @@ yy40:
                        }
 yy42:
                        ++cur;
-#line 145 "src/parser_scan.re"
+#line 144 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COLON); goto start; }
-#line 459 "src/parser_scan.c"
+#line 458 "src/parser_scan.c"
 yy44:
                        ++cur;
-#line 143 "src/parser_scan.re"
+#line 142 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EOS); goto start; }
-#line 464 "src/parser_scan.c"
+#line 463 "src/parser_scan.c"
 yy46:
                        yyaccept = 2;
                        yych = *(mrk = ++cur);
@@ -536,9 +535,9 @@ yy46:
                        default:        goto yy47;
                        }
 yy47:
-#line 170 "src/parser_scan.re"
+#line 169 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LCHEVR); goto start; }
-#line 542 "src/parser_scan.c"
+#line 541 "src/parser_scan.c"
 yy48:
                        yych = *++cur;
                        switch (yych) {
@@ -546,9 +545,9 @@ yy48:
                        default:        goto yy49;
                        }
 yy49:
-#line 154 "src/parser_scan.re"
+#line 153 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_EQUALS); goto start; }
-#line 552 "src/parser_scan.c"
+#line 551 "src/parser_scan.c"
 yy50:
                        yych = *++cur;
                        switch (yych) {
@@ -557,14 +556,14 @@ yy50:
                        default:        goto yy51;
                        }
 yy51:
-#line 171 "src/parser_scan.re"
+#line 170 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RCHEVR); goto start; }
-#line 563 "src/parser_scan.c"
+#line 562 "src/parser_scan.c"
 yy52:
                        ++cur;
-#line 174 "src/parser_scan.re"
+#line 173 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IIF); goto start; }
-#line 568 "src/parser_scan.c"
+#line 567 "src/parser_scan.c"
 yy54:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -576,9 +575,9 @@ yy54:
                        default:        goto yy62;
                        }
 yy55:
-#line 249 "src/parser_scan.re"
+#line 247 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NAME); goto start; }
-#line 582 "src/parser_scan.c"
+#line 581 "src/parser_scan.c"
 yy56:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -821,9 +820,9 @@ yy74:
                        }
 yy75:
                        ++cur;
-#line 148 "src/parser_scan.re"
+#line 147 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LBRACKET); goto start; }
-#line 827 "src/parser_scan.c"
+#line 826 "src/parser_scan.c"
 yy77:
                        yych = *++cur;
                        switch (yych) {
@@ -905,19 +904,19 @@ yy77:
                        default:        goto yy183;
                        }
 yy78:
-#line 163 "src/parser_scan.re"
+#line 162 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BSLASH); goto start; }
-#line 911 "src/parser_scan.c"
+#line 910 "src/parser_scan.c"
 yy79:
                        ++cur;
-#line 149 "src/parser_scan.re"
+#line 148 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RBRACKET); goto start; }
-#line 916 "src/parser_scan.c"
+#line 915 "src/parser_scan.c"
 yy81:
                        ++cur;
-#line 165 "src/parser_scan.re"
+#line 164 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CARET); goto start; }
-#line 921 "src/parser_scan.c"
+#line 920 "src/parser_scan.c"
 yy83:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1057,9 +1056,9 @@ yy95:
                        }
 yy96:
                        ++cur;
-#line 146 "src/parser_scan.re"
+#line 145 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LBRACE); goto start; }
-#line 1063 "src/parser_scan.c"
+#line 1062 "src/parser_scan.c"
 yy98:
                        yych = *++cur;
                        switch (yych) {
@@ -1067,29 +1066,29 @@ yy98:
                        default:        goto yy99;
                        }
 yy99:
-#line 164 "src/parser_scan.re"
+#line 163 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PIPE); goto start; }
-#line 1073 "src/parser_scan.c"
+#line 1072 "src/parser_scan.c"
 yy100:
                        ++cur;
-#line 147 "src/parser_scan.re"
+#line 146 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RBRACE); goto start; }
-#line 1078 "src/parser_scan.c"
+#line 1077 "src/parser_scan.c"
 yy102:
                        ++cur;
-#line 156 "src/parser_scan.re"
+#line 155 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TILDE); goto start; }
-#line 1083 "src/parser_scan.c"
+#line 1082 "src/parser_scan.c"
 yy104:
                        ++cur;
-#line 150 "src/parser_scan.re"
+#line 149 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_NE); goto start; }
-#line 1088 "src/parser_scan.c"
+#line 1087 "src/parser_scan.c"
 yy106:
                        ++cur;
-#line 139 "src/parser_scan.re"
+#line 138 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_PASTE); goto start; }
-#line 1093 "src/parser_scan.c"
+#line 1092 "src/parser_scan.c"
 yy108:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -1163,14 +1162,14 @@ yy108:
                        default:        goto yy108;
                        }
 yy110:
-#line 251 "src/parser_scan.re"
+#line 249 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DOLLAR_NAME); goto start; }
-#line 1169 "src/parser_scan.c"
+#line 1168 "src/parser_scan.c"
 yy111:
                        ++cur;
-#line 152 "src/parser_scan.re"
+#line 151 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AND); goto start; }
-#line 1174 "src/parser_scan.c"
+#line 1173 "src/parser_scan.c"
 yy113:
                        yych = *++cur;
                        switch (yych) {
@@ -1244,23 +1243,22 @@ yy114:
                        case 61:        goto yy514;
                        case 62:        goto yy519;
                        case 63:        goto yy524;
-                       case 64:        goto yy532;
-                       case 65:        goto yy536;
-                       case 66:        goto yy538;
-                       case 67:        goto yy540;
-                       case 68:        goto yy542;
-                       case 69:        goto yy547;
-                       case 70:        goto yy549;
-                       case 71:        goto yy558;
-                       case 72:        goto yy560;
-                       case 73:        goto yy565;
-                       case 74:        goto yy567;
-                       case 75:        goto yy575;
-                       case 76:        goto yy579;
-                       case 77:        goto yy583;
-                       case 78:        goto yy587;
-                       case 79:        goto yy589;
-                       default:        goto yy594;
+                       case 64:        goto yy530;
+                       case 65:        goto yy534;
+                       case 66:        goto yy536;
+                       case 67:        goto yy538;
+                       case 68:        goto yy540;
+                       case 69:        goto yy545;
+                       case 70:        goto yy547;
+                       case 71:        goto yy554;
+                       case 72:        goto yy556;
+                       case 73:        goto yy561;
+                       case 74:        goto yy563;
+                       case 75:        goto yy570;
+                       case 76:        goto yy574;
+                       case 77:        goto yy577;
+                       case 78:        goto yy581;
+                       default:        goto yy586;
                        }
 yy115:
                        yyaccept = 4;
@@ -1287,19 +1285,19 @@ yy115:
                        default:        goto yy117;
                        }
 yy117:
-#line 122 "src/parser_scan.re"
+#line 121 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT; goto start; }
-#line 1293 "src/parser_scan.c"
+#line 1291 "src/parser_scan.c"
 yy118:
                        ++cur;
-#line 136 "src/parser_scan.re"
+#line 135 "src/parser_scan.re"
                        { goto comment; }
-#line 1298 "src/parser_scan.c"
+#line 1296 "src/parser_scan.c"
 yy120:
                        ++cur;
-#line 137 "src/parser_scan.re"
+#line 136 "src/parser_scan.re"
                        { goto comment_sl; }
-#line 1303 "src/parser_scan.c"
+#line 1301 "src/parser_scan.c"
 yy122:
                        yyaccept = 4;
                        mrk = ++cur;
@@ -1375,9 +1373,9 @@ yy127:
                        }
 yy128:
                        cur -= 1;
-#line 118 "src/parser_scan.re"
+#line 117 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_L; cur += 1; goto start; }
-#line 1381 "src/parser_scan.c"
+#line 1379 "src/parser_scan.c"
 yy129:
                        yych = *++cur;
                        switch (yych) {
@@ -1387,9 +1385,9 @@ yy129:
                        }
 yy130:
                        cur -= 1;
-#line 117 "src/parser_scan.re"
+#line 116 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_U; cur += 1; goto start; }
-#line 1393 "src/parser_scan.c"
+#line 1391 "src/parser_scan.c"
 yy131:
                        yych = *++cur;
                        switch (yych) {
@@ -1493,29 +1491,29 @@ yy132:
                        }
 yy134:
                        ++cur;
-#line 166 "src/parser_scan.re"
+#line 165 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LSHIFT); goto start; }
-#line 1499 "src/parser_scan.c"
+#line 1497 "src/parser_scan.c"
 yy136:
                        ++cur;
-#line 168 "src/parser_scan.re"
+#line 167 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_LE); goto start; }
-#line 1504 "src/parser_scan.c"
+#line 1502 "src/parser_scan.c"
 yy138:
                        ++cur;
-#line 151 "src/parser_scan.re"
+#line 150 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_EQ); goto start; }
-#line 1509 "src/parser_scan.c"
+#line 1507 "src/parser_scan.c"
 yy140:
                        ++cur;
-#line 169 "src/parser_scan.re"
+#line 168 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CMP_GE); goto start; }
-#line 1514 "src/parser_scan.c"
+#line 1512 "src/parser_scan.c"
 yy142:
                        ++cur;
-#line 167 "src/parser_scan.re"
+#line 166 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RSHIFT); goto start; }
-#line 1519 "src/parser_scan.c"
+#line 1517 "src/parser_scan.c"
 yy144:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1596,9 +1594,9 @@ yy145:
                        default:        goto yy61;
                        }
 yy146:
-#line 229 "src/parser_scan.re"
+#line 227 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_AS); goto start; }
-#line 1602 "src/parser_scan.c"
+#line 1600 "src/parser_scan.c"
 yy147:
                        ++cur;
                        if (lim <= cur) CHECKEOF();;
@@ -1847,9 +1845,9 @@ yy159:
                        default:        goto yy61;
                        }
 yy160:
-#line 199 "src/parser_scan.re"
+#line 197 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IF); goto start; }
-#line 1853 "src/parser_scan.c"
+#line 1851 "src/parser_scan.c"
 yy161:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1863,9 +1861,9 @@ yy161:
 yy162:
                        ++cur;
                        cur -= 1;
-#line 134 "src/parser_scan.re"
+#line 133 "src/parser_scan.re"
                        { char_width = sizeof(wchar_t); }
-#line 1869 "src/parser_scan.c"
+#line 1867 "src/parser_scan.c"
 yy164:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -1982,9 +1980,9 @@ yy177:
 yy178:
                        ++cur;
                        cur -= 1;
-#line 133 "src/parser_scan.re"
+#line 132 "src/parser_scan.re"
                        { char_width = 4; }
-#line 1988 "src/parser_scan.c"
+#line 1986 "src/parser_scan.c"
 yy180:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2083,9 +2081,9 @@ yy183:
                        default:        goto yy183;
                        }
 yy185:
-#line 250 "src/parser_scan.re"
+#line 248 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NSNAME); goto start; }
-#line 2089 "src/parser_scan.c"
+#line 2087 "src/parser_scan.c"
 yy186:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2215,9 +2213,9 @@ yy200:
 yy201:
                        ++cur;
                        cur -= 1;
-#line 132 "src/parser_scan.re"
+#line 131 "src/parser_scan.re"
                        { char_width = 2; }
-#line 2221 "src/parser_scan.c"
+#line 2219 "src/parser_scan.c"
 yy203:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2245,14 +2243,14 @@ yy205:
                        }
 yy206:
                        ++cur;
-#line 153 "src/parser_scan.re"
+#line 152 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OR); goto start; }
-#line 2251 "src/parser_scan.c"
+#line 2249 "src/parser_scan.c"
 yy208:
                        ++cur;
-#line 173 "src/parser_scan.re"
+#line 172 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELLIPSIS); goto start; }
-#line 2256 "src/parser_scan.c"
+#line 2254 "src/parser_scan.c"
 yy210:
                        yych = *++cur;
                        switch (yych) {
@@ -2267,15 +2265,15 @@ yy210:
 yy211:
                        ++cur;
                        cur -= 1;
-#line 123 "src/parser_scan.re"
+#line 122 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_F; cur += 1; goto start; }
-#line 2273 "src/parser_scan.c"
+#line 2271 "src/parser_scan.c"
 yy213:
                        ++cur;
                        cur -= 1;
-#line 124 "src/parser_scan.re"
+#line 123 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_L; cur += 1; goto start; }
-#line 2279 "src/parser_scan.c"
+#line 2277 "src/parser_scan.c"
 yy215:
                        yych = *++cur;
                        switch (yych) {
@@ -2302,9 +2300,9 @@ yy217:
                        ++cur;
 yy218:
                        cur -= 2;
-#line 119 "src/parser_scan.re"
+#line 118 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_UL; cur += 2; goto start; }
-#line 2308 "src/parser_scan.c"
+#line 2306 "src/parser_scan.c"
 yy219:
                        yych = *++cur;
                        switch (yych) {
@@ -2351,9 +2349,9 @@ yy220:
                        }
 yy222:
                        ++cur;
-#line 252 "src/parser_scan.re"
+#line 250 "src/parser_scan.re"
                        { tok += 1; cur -= 1; NEWTOKEN(PSI_T_CPP_HEADER); cur += 1; goto start; }
-#line 2357 "src/parser_scan.c"
+#line 2355 "src/parser_scan.c"
 yy224:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2564,9 +2562,9 @@ yy241:
                        default:        goto yy61;
                        }
 yy242:
-#line 224 "src/parser_scan.re"
+#line 222 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LET); goto start; }
-#line 2570 "src/parser_scan.c"
+#line 2568 "src/parser_scan.c"
 yy243:
                        yyaccept = 10;
                        yych = *(mrk = ++cur);
@@ -2639,9 +2637,9 @@ yy243:
                        default:        goto yy61;
                        }
 yy244:
-#line 223 "src/parser_scan.re"
+#line 221 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LIB); goto start; }
-#line 2645 "src/parser_scan.c"
+#line 2643 "src/parser_scan.c"
 yy245:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -2771,9 +2769,9 @@ yy252:
                        default:        goto yy61;
                        }
 yy253:
-#line 225 "src/parser_scan.re"
+#line 223 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SET); goto start; }
-#line 2777 "src/parser_scan.c"
+#line 2775 "src/parser_scan.c"
 yy254:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3006,9 +3004,9 @@ yy273:
                        default:        goto yy61;
                        }
 yy274:
-#line 193 "src/parser_scan.re"
+#line 191 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INT); goto start; }
-#line 3012 "src/parser_scan.c"
+#line 3010 "src/parser_scan.c"
 yy275:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3074,9 +3072,9 @@ yy282:
 yy283:
                        ++cur;
                        cur -= 1;
-#line 131 "src/parser_scan.re"
+#line 130 "src/parser_scan.re"
                        { char_width = 1; }
-#line 3080 "src/parser_scan.c"
+#line 3078 "src/parser_scan.c"
 yy285:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3108,27 +3106,27 @@ yy288:
 yy289:
                        ++cur;
                        cur -= 2;
-#line 126 "src/parser_scan.re"
+#line 125 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DD; cur += 2; goto start; }
-#line 3114 "src/parser_scan.c"
+#line 3112 "src/parser_scan.c"
 yy291:
                        ++cur;
                        cur -= 2;
-#line 125 "src/parser_scan.re"
+#line 124 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DF; cur += 2; goto start; }
-#line 3120 "src/parser_scan.c"
+#line 3118 "src/parser_scan.c"
 yy293:
                        ++cur;
                        cur -= 2;
-#line 127 "src/parser_scan.re"
+#line 126 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DL; cur += 2; goto start; }
-#line 3126 "src/parser_scan.c"
+#line 3124 "src/parser_scan.c"
 yy295:
                        ++cur;
                        cur -= 3;
-#line 120 "src/parser_scan.re"
+#line 119 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_ULL; cur += 3; goto start; }
-#line 3132 "src/parser_scan.c"
+#line 3130 "src/parser_scan.c"
 yy297:
                        ++cur;
                        if ((lim - cur) < 3) CHECKEOF();;
@@ -3284,9 +3282,9 @@ yy305:
                        default:        goto yy61;
                        }
 yy306:
-#line 203 "src/parser_scan.re"
+#line 201 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELIF); goto start; }
-#line 3290 "src/parser_scan.c"
+#line 3288 "src/parser_scan.c"
 yy307:
                        yyaccept = 14;
                        yych = *(mrk = ++cur);
@@ -3359,9 +3357,9 @@ yy307:
                        default:        goto yy61;
                        }
 yy308:
-#line 202 "src/parser_scan.re"
+#line 200 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ELSE); goto start; }
-#line 3365 "src/parser_scan.c"
+#line 3363 "src/parser_scan.c"
 yy309:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3466,9 +3464,9 @@ yy313:
                        default:        goto yy61;
                        }
 yy314:
-#line 230 "src/parser_scan.re"
+#line 228 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FREE); goto start; }
-#line 3472 "src/parser_scan.c"
+#line 3470 "src/parser_scan.c"
 yy315:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3589,9 +3587,9 @@ yy321:
                        default:        goto yy61;
                        }
 yy322:
-#line 214 "src/parser_scan.re"
+#line 212 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_NULL); goto start; }
-#line 3595 "src/parser_scan.c"
+#line 3593 "src/parser_scan.c"
 yy323:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3743,9 +3741,9 @@ yy333:
                        default:        goto yy61;
                        }
 yy334:
-#line 231 "src/parser_scan.re"
+#line 229 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TEMP); goto start; }
-#line 3749 "src/parser_scan.c"
+#line 3747 "src/parser_scan.c"
 yy335:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3866,9 +3864,9 @@ yy341:
                        default:        goto yy61;
                        }
 yy342:
-#line 212 "src/parser_scan.re"
+#line 210 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TRUE); goto start; }
-#line 3872 "src/parser_scan.c"
+#line 3870 "src/parser_scan.c"
 yy343:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -3957,9 +3955,9 @@ yy345:
                        default:        goto yy61;
                        }
 yy346:
-#line 240 "src/parser_scan.re"
+#line 238 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ZVAL); goto start; }
-#line 3963 "src/parser_scan.c"
+#line 3961 "src/parser_scan.c"
 yy347:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4069,9 +4067,9 @@ yy352:
                        default:        goto yy61;
                        }
 yy353:
-#line 190 "src/parser_scan.re"
+#line 188 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BOOL); goto start; }
-#line 4075 "src/parser_scan.c"
+#line 4073 "src/parser_scan.c"
 yy354:
                        yyaccept = 21;
                        yych = *(mrk = ++cur);
@@ -4144,9 +4142,9 @@ yy354:
                        default:        goto yy61;
                        }
 yy355:
-#line 191 "src/parser_scan.re"
+#line 189 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CHAR); goto start; }
-#line 4150 "src/parser_scan.c"
+#line 4148 "src/parser_scan.c"
 yy356:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4233,9 +4231,9 @@ yy358:
                        default:        goto yy61;
                        }
 yy359:
-#line 187 "src/parser_scan.re"
+#line 185 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ENUM); goto start; }
-#line 4239 "src/parser_scan.c"
+#line 4237 "src/parser_scan.c"
 yy360:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4323,9 +4321,9 @@ yy362:
                        default:        goto yy61;
                        }
 yy363:
-#line 183 "src/parser_scan.re"
+#line 181 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LINE); goto start; }
-#line 4329 "src/parser_scan.c"
+#line 4327 "src/parser_scan.c"
 yy364:
                        yyaccept = 24;
                        yych = *(mrk = ++cur);
@@ -4398,9 +4396,9 @@ yy364:
                        default:        goto yy61;
                        }
 yy365:
-#line 194 "src/parser_scan.re"
+#line 192 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_LONG); goto start; }
-#line 4404 "src/parser_scan.c"
+#line 4402 "src/parser_scan.c"
 yy366:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4529,9 +4527,9 @@ yy374:
                        default:        goto yy61;
                        }
 yy375:
-#line 189 "src/parser_scan.re"
+#line 187 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_VOID); goto start; }
-#line 4535 "src/parser_scan.c"
+#line 4533 "src/parser_scan.c"
 yy376:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4611,9 +4609,9 @@ yy377:
                        default:        goto yy61;
                        }
 yy378:
-#line 218 "src/parser_scan.re"
+#line 216 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ARRAY); goto start; }
-#line 4617 "src/parser_scan.c"
+#line 4615 "src/parser_scan.c"
 yy379:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4726,9 +4724,9 @@ yy384:
                        default:        goto yy61;
                        }
 yy385:
-#line 241 "src/parser_scan.re"
+#line 239 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COUNT); goto start; }
-#line 4732 "src/parser_scan.c"
+#line 4730 "src/parser_scan.c"
 yy386:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -4809,9 +4807,9 @@ yy387:
                        default:        goto yy61;
                        }
 yy388:
-#line 204 "src/parser_scan.re"
+#line 202 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ENDIF); goto start; }
-#line 4815 "src/parser_scan.c"
+#line 4813 "src/parser_scan.c"
 yy389:
                        yyaccept = 29;
                        yych = *(mrk = ++cur);
@@ -4884,9 +4882,9 @@ yy389:
                        default:        goto yy61;
                        }
 yy390:
-#line 209 "src/parser_scan.re"
+#line 207 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ERROR); goto start; }
-#line 4890 "src/parser_scan.c"
+#line 4888 "src/parser_scan.c"
 yy391:
                        yyaccept = 30;
                        yych = *(mrk = ++cur);
@@ -4959,9 +4957,9 @@ yy391:
                        default:        goto yy61;
                        }
 yy392:
-#line 213 "src/parser_scan.re"
+#line 211 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FALSE); goto start; }
-#line 4965 "src/parser_scan.c"
+#line 4963 "src/parser_scan.c"
 yy393:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5050,9 +5048,9 @@ yy395:
                        default:        goto yy61;
                        }
 yy396:
-#line 200 "src/parser_scan.re"
+#line 198 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IFDEF); goto start; }
-#line 5056 "src/parser_scan.c"
+#line 5054 "src/parser_scan.c"
 yy397:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5149,9 +5147,9 @@ yy400:
                        default:        goto yy61;
                        }
 yy401:
-#line 215 "src/parser_scan.re"
+#line 213 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_MIXED); goto start; }
-#line 5155 "src/parser_scan.c"
+#line 5153 "src/parser_scan.c"
 yy402:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5352,9 +5350,9 @@ yy418:
                        default:        goto yy61;
                        }
 yy419:
-#line 207 "src/parser_scan.re"
+#line 205 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_UNDEF); goto start; }
-#line 5358 "src/parser_scan.c"
+#line 5356 "src/parser_scan.c"
 yy420:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5436,9 +5434,9 @@ yy421:
                        default:        goto yy61;
                        }
 yy422:
-#line 180 "src/parser_scan.re"
+#line 178 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_ASM); goto start; }
-#line 5442 "src/parser_scan.c"
+#line 5440 "src/parser_scan.c"
 yy423:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5532,9 +5530,9 @@ yy426:
                        default:        goto yy61;
                        }
 yy427:
-#line 188 "src/parser_scan.re"
+#line 186 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CONST); goto start; }
-#line 5538 "src/parser_scan.c"
+#line 5536 "src/parser_scan.c"
 yy428:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5616,9 +5614,9 @@ yy429:
                        default:        goto yy61;
                        }
 yy430:
-#line 195 "src/parser_scan.re"
+#line 193 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FLOAT); goto start; }
-#line 5622 "src/parser_scan.c"
+#line 5620 "src/parser_scan.c"
 yy431:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5705,9 +5703,9 @@ yy433:
                        default:        goto yy61;
                        }
 yy434:
-#line 192 "src/parser_scan.re"
+#line 190 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SHORT); goto start; }
-#line 5711 "src/parser_scan.c"
+#line 5709 "src/parser_scan.c"
 yy435:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5808,9 +5806,9 @@ yy439:
                        default:        goto yy61;
                        }
 yy440:
-#line 186 "src/parser_scan.re"
+#line 184 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_UNION); goto start; }
-#line 5814 "src/parser_scan.c"
+#line 5812 "src/parser_scan.c"
 yy441:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5897,9 +5895,9 @@ yy443:
                        default:        goto yy61;
                        }
 yy444:
-#line 238 "src/parser_scan.re"
+#line 236 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_ARRVAL); goto start; }
-#line 5903 "src/parser_scan.c"
+#line 5901 "src/parser_scan.c"
 yy445:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -5996,9 +5994,9 @@ yy448:
                        default:        goto yy61;
                        }
 yy449:
-#line 242 "src/parser_scan.re"
+#line 240 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CALLOC); goto start; }
-#line 6002 "src/parser_scan.c"
+#line 6000 "src/parser_scan.c"
 yy450:
                        yyaccept = 41;
                        yych = *(mrk = ++cur);
@@ -6073,9 +6071,9 @@ yy450:
                        default:        goto yy61;
                        }
 yy451:
-#line 205 "src/parser_scan.re"
+#line 203 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DEFINE); goto start; }
-#line 6079 "src/parser_scan.c"
+#line 6077 "src/parser_scan.c"
 yy452:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6164,9 +6162,9 @@ yy454:
                        default:        goto yy61;
                        }
 yy455:
-#line 201 "src/parser_scan.re"
+#line 199 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_IFNDEF); goto start; }
-#line 6170 "src/parser_scan.c"
+#line 6168 "src/parser_scan.c"
 yy456:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6247,9 +6245,9 @@ yy457:
                        default:        goto yy61;
                        }
 yy458:
-#line 235 "src/parser_scan.re"
+#line 233 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INTVAL); goto start; }
-#line 6253 "src/parser_scan.c"
+#line 6251 "src/parser_scan.c"
 yy459:
                        yyaccept = 44;
                        yych = *(mrk = ++cur);
@@ -6322,9 +6320,9 @@ yy459:
                        default:        goto yy61;
                        }
 yy460:
-#line 219 "src/parser_scan.re"
+#line 217 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OBJECT); goto start; }
-#line 6328 "src/parser_scan.c"
+#line 6326 "src/parser_scan.c"
 yy461:
                        yyaccept = 45;
                        yych = *(mrk = ++cur);
@@ -6397,9 +6395,9 @@ yy461:
                        default:        goto yy61;
                        }
 yy462:
-#line 239 "src/parser_scan.re"
+#line 237 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_OBJVAL); goto start; }
-#line 6403 "src/parser_scan.c"
+#line 6401 "src/parser_scan.c"
 yy463:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6496,9 +6494,9 @@ yy466:
                        default:        goto yy61;
                        }
 yy467:
-#line 228 "src/parser_scan.re"
+#line 226 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_RETURN); goto start; }
-#line 6502 "src/parser_scan.c"
+#line 6500 "src/parser_scan.c"
 yy468:
                        yyaccept = 47;
                        yych = *(mrk = ++cur);
@@ -6571,9 +6569,9 @@ yy468:
                        default:        goto yy61;
                        }
 yy469:
-#line 221 "src/parser_scan.re"
+#line 219 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STATIC); goto start; }
-#line 6577 "src/parser_scan.c"
+#line 6575 "src/parser_scan.c"
 yy470:
                        yyaccept = 48;
                        yych = *(mrk = ++cur);
@@ -6646,9 +6644,9 @@ yy470:
                        default:        goto yy61;
                        }
 yy471:
-#line 217 "src/parser_scan.re"
+#line 215 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRING); goto start; }
-#line 6652 "src/parser_scan.c"
+#line 6650 "src/parser_scan.c"
 yy472:
                        yyaccept = 49;
                        yych = *(mrk = ++cur);
@@ -6721,9 +6719,9 @@ yy472:
                        default:        goto yy61;
                        }
 yy473:
-#line 232 "src/parser_scan.re"
+#line 230 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRLEN); goto start; }
-#line 6727 "src/parser_scan.c"
+#line 6725 "src/parser_scan.c"
 yy474:
                        yyaccept = 50;
                        yych = *(mrk = ++cur);
@@ -6796,9 +6794,9 @@ yy474:
                        default:        goto yy61;
                        }
 yy475:
-#line 233 "src/parser_scan.re"
+#line 231 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRVAL); goto start; }
-#line 6802 "src/parser_scan.c"
+#line 6800 "src/parser_scan.c"
 yy476:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -6895,9 +6893,9 @@ yy479:
                        default:        goto yy61;
                        }
 yy480:
-#line 246 "src/parser_scan.re"
+#line 244 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_INT); goto start; }
-#line 6901 "src/parser_scan.c"
+#line 6899 "src/parser_scan.c"
 yy481:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
@@ -7022,9 +7020,9 @@ yy488:
                        default:        goto yy61;
                        }
 yy489:
-#line 196 "src/parser_scan.re"
+#line 194 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DOUBLE); goto start; }
-#line 7028 "src/parser_scan.c"
+#line 7026 "src/parser_scan.c"
 yy490:
                        yyaccept = 53;
                        yych = *(mrk = ++cur);
@@ -7097,9 +7095,9 @@ yy490:
                        default:        goto yy61;
                        }
 yy491:
-#line 177 "src/parser_scan.re"
+#line 175 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_INLINE); goto start; }
-#line 7103 "src/parser_scan.c"
+#line 7101 "src/parser_scan.c"
 yy492:
                        yyaccept = 54;
                        yych = *(mrk = ++cur);
@@ -7169,12 +7167,12 @@ yy492:
                        case '~':
                        case 0x7F:      goto yy493;
                        case '\\':      goto yy147;
-                       default:        goto yy529;
+                       default:        goto yy61;
                        }
 yy493:
-#line 175 "src/parser_scan.re"
+#line 174 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PRAGMA); goto start; }
-#line 7178 "src/parser_scan.c"
+#line 7176 "src/parser_scan.c"
 yy494:
                        yyaccept = 55;
                        yych = *(mrk = ++cur);
@@ -7247,9 +7245,9 @@ yy494:
                        default:        goto yy61;
                        }
 yy495:
-#line 198 "src/parser_scan.re"
+#line 196 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SIGNED); goto start; }
-#line 7253 "src/parser_scan.c"
+#line 7251 "src/parser_scan.c"
 yy496:
                        yyaccept = 56;
                        yych = *(mrk = ++cur);
@@ -7322,9 +7320,9 @@ yy496:
                        default:        goto yy61;
                        }
 yy497:
-#line 182 "src/parser_scan.re"
+#line 180 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_SIZEOF); goto start; }
-#line 7328 "src/parser_scan.c"
+#line 7326 "src/parser_scan.c"
 yy498:
                        yyaccept = 57;
                        yych = *(mrk = ++cur);
@@ -7397,28 +7395,28 @@ yy498:
                        default:        goto yy61;
                        }
 yy499:
-#line 185 "src/parser_scan.re"
+#line 183 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_STRUCT); goto start; }
-#line 7403 "src/parser_scan.c"
+#line 7401 "src/parser_scan.c"
 yy500:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'f':       goto yy531;
+                       case 'f':       goto yy529;
                        default:        goto yy62;
                        }
 yy501:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'e':       goto yy533;
+                       case 'e':       goto yy531;
                        default:        goto yy62;
                        }
 yy502:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'l':       goto yy534;
+                       case 'l':       goto yy532;
                        default:        goto yy62;
                        }
 yy503:
@@ -7493,15 +7491,15 @@ yy503:
                        default:        goto yy61;
                        }
 yy504:
-#line 237 "src/parser_scan.re"
+#line 235 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_BOOLVAL); goto start; }
-#line 7499 "src/parser_scan.c"
+#line 7497 "src/parser_scan.c"
 yy505:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'E':
-                       case 'e':       goto yy535;
+                       case 'e':       goto yy533;
                        default:        goto yy62;
                        }
 yy506:
@@ -7509,7 +7507,7 @@ yy506:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'K':
-                       case 'k':       goto yy537;
+                       case 'k':       goto yy535;
                        default:        goto yy62;
                        }
 yy507:
@@ -7584,15 +7582,15 @@ yy507:
                        default:        goto yy61;
                        }
 yy508:
-#line 206 "src/parser_scan.re"
+#line 204 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_DEFINED); goto start; }
-#line 7590 "src/parser_scan.c"
+#line 7588 "src/parser_scan.c"
 yy509:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'L':
-                       case 'l':       goto yy539;
+                       case 'l':       goto yy537;
                        default:        goto yy62;
                        }
 yy510:
@@ -7600,7 +7598,7 @@ yy510:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'N':
-                       case 'n':       goto yy541;
+                       case 'n':       goto yy539;
                        default:        goto yy62;
                        }
 yy511:
@@ -7672,13 +7670,13 @@ yy511:
                        case '~':
                        case 0x7F:      goto yy512;
                        case '\\':      goto yy147;
-                       case '_':       goto yy543;
+                       case '_':       goto yy541;
                        default:        goto yy61;
                        }
 yy512:
-#line 210 "src/parser_scan.re"
+#line 208 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INCLUDE); goto start; }
-#line 7682 "src/parser_scan.c"
+#line 7680 "src/parser_scan.c"
 yy513:
                        yyaccept = 61;
                        yych = *(mrk = ++cur);
@@ -7751,15 +7749,15 @@ yy513:
                        default:        goto yy61;
                        }
 yy514:
-#line 234 "src/parser_scan.re"
+#line 232 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_PATHVAL); goto start; }
-#line 7757 "src/parser_scan.c"
+#line 7755 "src/parser_scan.c"
 yy515:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'S':
-                       case 's':       goto yy544;
+                       case 's':       goto yy542;
                        default:        goto yy62;
                        }
 yy516:
@@ -7767,7 +7765,7 @@ yy516:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'E':
-                       case 'e':       goto yy545;
+                       case 'e':       goto yy543;
                        default:        goto yy62;
                        }
 yy517:
@@ -7775,7 +7773,7 @@ yy517:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'Y':
-                       case 'y':       goto yy546;
+                       case 'y':       goto yy544;
                        default:        goto yy62;
                        }
 yy518:
@@ -7850,15 +7848,15 @@ yy518:
                        default:        goto yy61;
                        }
 yy519:
-#line 248 "src/parser_scan.re"
+#line 246 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_BOOL); goto start; }
-#line 7856 "src/parser_scan.c"
+#line 7854 "src/parser_scan.c"
 yy520:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'T':
-                       case 't':       goto yy548;
+                       case 't':       goto yy546;
                        default:        goto yy62;
                        }
 yy521:
@@ -7866,7 +7864,7 @@ yy521:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'C':
-                       case 'c':       goto yy550;
+                       case 'c':       goto yy548;
                        default:        goto yy62;
                        }
 yy522:
@@ -7874,7 +7872,7 @@ yy522:
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'N':
-                       case 'n':       goto yy551;
+                       case 'n':       goto yy549;
                        default:        goto yy62;
                        }
 yy523:
@@ -7949,9 +7947,9 @@ yy523:
                        default:        goto yy61;
                        }
 yy524:
-#line 208 "src/parser_scan.re"
+#line 206 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_WARNING); goto start; }
-#line 7955 "src/parser_scan.c"
+#line 7953 "src/parser_scan.c"
 yy525:
                        yyaccept = 34;
                        yych = *(mrk = ++cur);
@@ -8027,28 +8025,26 @@ yy526:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'b':       goto yy552;
+                       case 'b':       goto yy550;
                        default:        goto yy62;
                        }
 yy527:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 's':       goto yy553;
+                       case 's':       goto yy551;
                        default:        goto yy62;
                        }
 yy528:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'i':       goto yy554;
+                       case 'i':       goto yy552;
                        default:        goto yy62;
                        }
 yy529:
-                       yyaccept = 3;
-                       mrk = ++cur;
-                       if (lim <= cur) CHECKEOF();;
-                       yych = *cur;
+                       yyaccept = 64;
+                       yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
                        case 0x01:
@@ -8113,13 +8109,30 @@ yy529:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy55;
+                       case 0x7F:      goto yy530;
                        case '\\':      goto yy147;
-                       case 'o':       goto yy555;
-                       default:        goto yy529;
+                       default:        goto yy61;
                        }
+yy530:
+#line 182 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_TYPEDEF); goto start; }
+#line 8120 "src/parser_scan.c"
 yy531:
-                       yyaccept = 64;
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'd':       goto yy553;
+                       default:        goto yy62;
+                       }
+yy532:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'e':       goto yy555;
+                       default:        goto yy62;
+                       }
+yy533:
+                       yyaccept = 65;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -8185,30 +8198,16 @@ yy531:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy532;
+                       case 0x7F:      goto yy534;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy532:
-#line 184 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_TYPEDEF); goto start; }
-#line 8196 "src/parser_scan.c"
-yy533:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'd':       goto yy557;
-                       default:        goto yy62;
-                       }
 yy534:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'e':       goto yy559;
-                       default:        goto yy62;
-                       }
+#line 214 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_CALLABLE); goto start; }
+#line 8209 "src/parser_scan.c"
 yy535:
-                       yyaccept = 65;
+                       yyaccept = 66;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -8279,11 +8278,11 @@ yy535:
                        default:        goto yy61;
                        }
 yy536:
-#line 216 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_CALLABLE); goto start; }
-#line 8285 "src/parser_scan.c"
+#line 218 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_CALLBACK); goto start; }
+#line 8284 "src/parser_scan.c"
 yy537:
-                       yyaccept = 66;
+                       yyaccept = 67;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -8354,11 +8353,11 @@ yy537:
                        default:        goto yy61;
                        }
 yy538:
-#line 220 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_CALLBACK); goto start; }
-#line 8360 "src/parser_scan.c"
+#line 234 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_FLOATVAL); goto start; }
+#line 8359 "src/parser_scan.c"
 yy539:
-                       yyaccept = 67;
+                       yyaccept = 68;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -8429,109 +8428,34 @@ yy539:
                        default:        goto yy61;
                        }
 yy540:
-#line 236 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_FLOATVAL); goto start; }
-#line 8435 "src/parser_scan.c"
-yy541:
-                       yyaccept = 68;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 0x00:
-                       case 0x01:
-                       case 0x02:
-                       case 0x03:
-                       case 0x04:
-                       case 0x05:
-                       case 0x06:
-                       case 0x07:
-                       case 0x08:
-                       case '\t':
-                       case '\n':
-                       case '\v':
-                       case '\f':
-                       case '\r':
-                       case 0x0E:
-                       case 0x0F:
-                       case 0x10:
-                       case 0x11:
-                       case 0x12:
-                       case 0x13:
-                       case 0x14:
-                       case 0x15:
-                       case 0x16:
-                       case 0x17:
-                       case 0x18:
-                       case 0x19:
-                       case 0x1A:
-                       case 0x1B:
-                       case 0x1C:
-                       case 0x1D:
-                       case 0x1E:
-                       case 0x1F:
-                       case ' ':
-                       case '!':
-                       case '"':
-                       case '#':
-                       case '$':
-                       case '%':
-                       case '&':
-                       case '\'':
-                       case '(':
-                       case ')':
-                       case '*':
-                       case '+':
-                       case ',':
-                       case '-':
-                       case '.':
-                       case '/':
-                       case ':':
-                       case ';':
-                       case '<':
-                       case '=':
-                       case '>':
-                       case '?':
-                       case '@':
-                       case '[':
-                       case ']':
-                       case '^':
-                       case '`':
-                       case '{':
-                       case '|':
-                       case '}':
-                       case '~':
-                       case 0x7F:      goto yy542;
-                       case '\\':      goto yy147;
-                       default:        goto yy61;
-                       }
-yy542:
-#line 222 "src/parser_scan.re"
+#line 220 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_FUNCTION); goto start; }
-#line 8510 "src/parser_scan.c"
-yy543:
+#line 8434 "src/parser_scan.c"
+yy541:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'N':
-                       case 'n':       goto yy561;
+                       case 'n':       goto yy557;
                        default:        goto yy62;
                        }
-yy544:
+yy542:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'E':
-                       case 'e':       goto yy562;
+                       case 'e':       goto yy558;
                        default:        goto yy62;
                        }
-yy545:
+yy543:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'R':
-                       case 'r':       goto yy563;
+                       case 'r':       goto yy559;
                        default:        goto yy62;
                        }
-yy546:
+yy544:
                        yyaccept = 69;
                        yych = *(mrk = ++cur);
                        switch (yych) {
@@ -8598,15 +8522,15 @@ yy546:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy547;
+                       case 0x7F:      goto yy545;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy547:
-#line 244 "src/parser_scan.re"
+yy545:
+#line 242 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_ARRAY); goto start; }
-#line 8609 "src/parser_scan.c"
-yy548:
+#line 8533 "src/parser_scan.c"
+yy546:
                        yyaccept = 70;
                        yych = *(mrk = ++cur);
                        switch (yych) {
@@ -8673,377 +8597,53 @@ yy548:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy549;
+                       case 0x7F:      goto yy547;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy549:
-#line 247 "src/parser_scan.re"
+yy547:
+#line 245 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_TO_FLOAT); goto start; }
-#line 8684 "src/parser_scan.c"
-yy550:
+#line 8608 "src/parser_scan.c"
+yy548:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'T':
-                       case 't':       goto yy564;
+                       case 't':       goto yy560;
                        default:        goto yy62;
                        }
-yy551:
+yy549:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'G':
-                       case 'g':       goto yy566;
-                       default:        goto yy62;
-                       }
-yy552:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'u':       goto yy568;
-                       default:        goto yy62;
-                       }
-yy553:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'i':       goto yy569;
-                       default:        goto yy62;
-                       }
-yy554:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'c':       goto yy570;
-                       default:        goto yy62;
-                       }
-yy555:
-                       yyaccept = 3;
-                       mrk = ++cur;
-                       if (lim <= cur) CHECKEOF();;
-                       yych = *cur;
-                       switch (yych) {
-                       case 0x00:
-                       case 0x01:
-                       case 0x02:
-                       case 0x03:
-                       case 0x04:
-                       case 0x05:
-                       case 0x06:
-                       case 0x07:
-                       case 0x08:
-                       case '\t':
-                       case '\n':
-                       case '\v':
-                       case '\f':
-                       case '\r':
-                       case 0x0E:
-                       case 0x0F:
-                       case 0x10:
-                       case 0x11:
-                       case 0x12:
-                       case 0x13:
-                       case 0x14:
-                       case 0x15:
-                       case 0x16:
-                       case 0x17:
-                       case 0x18:
-                       case 0x19:
-                       case 0x1A:
-                       case 0x1B:
-                       case 0x1C:
-                       case 0x1D:
-                       case 0x1E:
-                       case 0x1F:
-                       case ' ':
-                       case '!':
-                       case '"':
-                       case '#':
-                       case '$':
-                       case '%':
-                       case '&':
-                       case '\'':
-                       case '(':
-                       case ')':
-                       case '*':
-                       case '+':
-                       case ',':
-                       case '-':
-                       case '.':
-                       case '/':
-                       case ':':
-                       case ';':
-                       case '<':
-                       case '=':
-                       case '>':
-                       case '?':
-                       case '@':
-                       case '[':
-                       case ']':
-                       case '^':
-                       case '`':
-                       case '{':
-                       case '|':
-                       case '}':
-                       case '~':
-                       case 0x7F:      goto yy55;
-                       case '\\':      goto yy147;
-                       case 'n':       goto yy571;
-                       case 'o':       goto yy555;
-                       default:        goto yy529;
-                       }
-yy557:
-                       yyaccept = 71;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 0x00:
-                       case 0x01:
-                       case 0x02:
-                       case 0x03:
-                       case 0x04:
-                       case 0x05:
-                       case 0x06:
-                       case 0x07:
-                       case 0x08:
-                       case '\t':
-                       case '\n':
-                       case '\v':
-                       case '\f':
-                       case '\r':
-                       case 0x0E:
-                       case 0x0F:
-                       case 0x10:
-                       case 0x11:
-                       case 0x12:
-                       case 0x13:
-                       case 0x14:
-                       case 0x15:
-                       case 0x16:
-                       case 0x17:
-                       case 0x18:
-                       case 0x19:
-                       case 0x1A:
-                       case 0x1B:
-                       case 0x1C:
-                       case 0x1D:
-                       case 0x1E:
-                       case 0x1F:
-                       case ' ':
-                       case '!':
-                       case '"':
-                       case '#':
-                       case '$':
-                       case '%':
-                       case '&':
-                       case '\'':
-                       case '(':
-                       case ')':
-                       case '*':
-                       case '+':
-                       case ',':
-                       case '-':
-                       case '.':
-                       case '/':
-                       case ':':
-                       case ';':
-                       case '<':
-                       case '=':
-                       case '>':
-                       case '?':
-                       case '@':
-                       case '[':
-                       case ']':
-                       case '^':
-                       case '`':
-                       case '{':
-                       case '|':
-                       case '}':
-                       case '~':
-                       case 0x7F:      goto yy558;
-                       case '\\':      goto yy147;
-                       default:        goto yy61;
-                       }
-yy558:
-#line 197 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_UNSIGNED); goto start; }
-#line 8871 "src/parser_scan.c"
-yy559:
-                       yyaccept = 72;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 0x00:
-                       case 0x01:
-                       case 0x02:
-                       case 0x03:
-                       case 0x04:
-                       case 0x05:
-                       case 0x06:
-                       case 0x07:
-                       case 0x08:
-                       case '\t':
-                       case '\n':
-                       case '\v':
-                       case '\f':
-                       case '\r':
-                       case 0x0E:
-                       case 0x0F:
-                       case 0x10:
-                       case 0x11:
-                       case 0x12:
-                       case 0x13:
-                       case 0x14:
-                       case 0x15:
-                       case 0x16:
-                       case 0x17:
-                       case 0x18:
-                       case 0x19:
-                       case 0x1A:
-                       case 0x1B:
-                       case 0x1C:
-                       case 0x1D:
-                       case 0x1E:
-                       case 0x1F:
-                       case ' ':
-                       case '!':
-                       case '"':
-                       case '#':
-                       case '$':
-                       case '%':
-                       case '&':
-                       case '\'':
-                       case '(':
-                       case ')':
-                       case '*':
-                       case '+':
-                       case ',':
-                       case '-':
-                       case '.':
-                       case '/':
-                       case ':':
-                       case ';':
-                       case '<':
-                       case '=':
-                       case '>':
-                       case '?':
-                       case '@':
-                       case '[':
-                       case ']':
-                       case '^':
-                       case '`':
-                       case '{':
-                       case '|':
-                       case '}':
-                       case '~':
-                       case 0x7F:      goto yy560;
-                       case '\\':      goto yy147;
-                       default:        goto yy61;
-                       }
-yy560:
-#line 181 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_VOLATILE); goto start; }
-#line 8946 "src/parser_scan.c"
-yy561:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'E':
-                       case 'e':       goto yy572;
+                       case 'g':       goto yy562;
                        default:        goto yy62;
                        }
-yy562:
+yy550:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'R':
-                       case 'r':       goto yy573;
+                       case 'u':       goto yy564;
                        default:        goto yy62;
                        }
-yy563:
+yy551:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'T':
-                       case 't':       goto yy574;
+                       case 'i':       goto yy565;
                        default:        goto yy62;
                        }
-yy564:
-                       yyaccept = 73;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 0x00:
-                       case 0x01:
-                       case 0x02:
-                       case 0x03:
-                       case 0x04:
-                       case 0x05:
-                       case 0x06:
-                       case 0x07:
-                       case 0x08:
-                       case '\t':
-                       case '\n':
-                       case '\v':
-                       case '\f':
-                       case '\r':
-                       case 0x0E:
-                       case 0x0F:
-                       case 0x10:
-                       case 0x11:
-                       case 0x12:
-                       case 0x13:
-                       case 0x14:
-                       case 0x15:
-                       case 0x16:
-                       case 0x17:
-                       case 0x18:
-                       case 0x19:
-                       case 0x1A:
-                       case 0x1B:
-                       case 0x1C:
-                       case 0x1D:
-                       case 0x1E:
-                       case 0x1F:
-                       case ' ':
-                       case '!':
-                       case '"':
-                       case '#':
-                       case '$':
-                       case '%':
-                       case '&':
-                       case '\'':
-                       case '(':
-                       case ')':
-                       case '*':
-                       case '+':
-                       case ',':
-                       case '-':
-                       case '.':
-                       case '/':
-                       case ':':
-                       case ';':
-                       case '<':
-                       case '=':
-                       case '>':
-                       case '?':
-                       case '@':
-                       case '[':
-                       case ']':
-                       case '^':
-                       case '`':
-                       case '{':
-                       case '|':
-                       case '}':
-                       case '~':
-                       case 0x7F:      goto yy565;
-                       case '\\':      goto yy147;
-                       default:        goto yy61;
+yy552:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'c':       goto yy566;
+                       default:        goto yy62;
                        }
-yy565:
-#line 243 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_TO_OBJECT); goto start; }
-#line 9045 "src/parser_scan.c"
-yy566:
-                       yyaccept = 74;
+yy553:
+                       yyaccept = 71;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9109,41 +8709,18 @@ yy566:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy567;
+                       case 0x7F:      goto yy554;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy567:
-#line 245 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_TO_STRING); goto start; }
-#line 9120 "src/parser_scan.c"
-yy568:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 't':       goto yy576;
-                       default:        goto yy62;
-                       }
-yy569:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'o':       goto yy577;
-                       default:        goto yy62;
-                       }
-yy570:
-                       yyaccept = 3;
+yy554:
+#line 195 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_UNSIGNED); goto start; }
+#line 8720 "src/parser_scan.c"
+yy555:
+                       yyaccept = 72;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 't':       goto yy578;
-                       default:        goto yy62;
-                       }
-yy571:
-                       yyaccept = 3;
-                       mrk = ++cur;
-                       if (lim <= cur) CHECKEOF();;
-                       yych = *cur;
-                       switch (yych) {
                        case 0x00:
                        case 0x01:
                        case 0x02:
@@ -9207,30 +8784,40 @@ yy571:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy55;
+                       case 0x7F:      goto yy556;
                        case '\\':      goto yy147;
-                       case 'c':       goto yy580;
-                       case 'o':       goto yy555;
-                       default:        goto yy529;
+                       default:        goto yy61;
                        }
-yy572:
+yy556:
+#line 179 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_VOLATILE); goto start; }
+#line 8795 "src/parser_scan.c"
+yy557:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'X':
-                       case 'x':       goto yy581;
+                       case 'E':
+                       case 'e':       goto yy567;
                        default:        goto yy62;
                        }
-yy573:
+yy558:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'R':
+                       case 'r':       goto yy568;
+                       default:        goto yy62;
+                       }
+yy559:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 'T':
-                       case 't':       goto yy582;
+                       case 't':       goto yy569;
                        default:        goto yy62;
                        }
-yy574:
-                       yyaccept = 75;
+yy560:
+                       yyaccept = 73;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9296,30 +8883,16 @@ yy574:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy575;
+                       case 0x7F:      goto yy561;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy575:
-#line 226 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_PRE_ASSERT); goto start; }
-#line 9307 "src/parser_scan.c"
-yy576:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'e':       goto yy584;
-                       default:        goto yy62;
-                       }
-yy577:
-                       yyaccept = 3;
-                       yych = *(mrk = ++cur);
-                       switch (yych) {
-                       case 'n':       goto yy585;
-                       default:        goto yy62;
-                       }
-yy578:
-                       yyaccept = 76;
+yy561:
+#line 241 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_TO_OBJECT); goto start; }
+#line 8894 "src/parser_scan.c"
+yy562:
+                       yyaccept = 74;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9385,19 +8958,54 @@ yy578:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy579;
+                       case 0x7F:      goto yy563;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy579:
-#line 178 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_CPP_RESTRICT); goto start; }
-#line 9396 "src/parser_scan.c"
-yy580:
+yy563:
+#line 243 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_TO_STRING); goto start; }
+#line 8969 "src/parser_scan.c"
+yy564:
                        yyaccept = 3;
-                       mrk = ++cur;
-                       if (lim <= cur) CHECKEOF();;
-                       yych = *cur;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 't':       goto yy571;
+                       default:        goto yy62;
+                       }
+yy565:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'o':       goto yy572;
+                       default:        goto yy62;
+                       }
+yy566:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 't':       goto yy573;
+                       default:        goto yy62;
+                       }
+yy567:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'X':
+                       case 'x':       goto yy575;
+                       default:        goto yy62;
+                       }
+yy568:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'T':
+                       case 't':       goto yy576;
+                       default:        goto yy62;
+                       }
+yy569:
+                       yyaccept = 75;
+                       yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
                        case 0x01:
@@ -9462,22 +9070,30 @@ yy580:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy55;
+                       case 0x7F:      goto yy570;
                        case '\\':      goto yy147;
-                       case 'e':       goto yy586;
-                       case 'o':       goto yy555;
-                       default:        goto yy529;
+                       default:        goto yy61;
                        }
-yy581:
+yy570:
+#line 224 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_PRE_ASSERT); goto start; }
+#line 9081 "src/parser_scan.c"
+yy571:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case 'T':
-                       case 't':       goto yy588;
+                       case 'e':       goto yy578;
                        default:        goto yy62;
                        }
-yy582:
-                       yyaccept = 77;
+yy572:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case 'n':       goto yy579;
+                       default:        goto yy62;
+                       }
+yy573:
+                       yyaccept = 76;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9543,34 +9159,26 @@ yy582:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy583;
+                       case 0x7F:      goto yy574;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy583:
-#line 227 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_POST_ASSERT); goto start; }
-#line 9554 "src/parser_scan.c"
-yy584:
+yy574:
+#line 176 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_CPP_RESTRICT); goto start; }
+#line 9170 "src/parser_scan.c"
+yy575:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case '_':       goto yy590;
+                       case 'T':
+                       case 't':       goto yy580;
                        default:        goto yy62;
                        }
-yy585:
-                       yyaccept = 3;
+yy576:
+                       yyaccept = 77;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case '_':       goto yy591;
-                       default:        goto yy62;
-                       }
-yy586:
-                       yyaccept = 78;
-                       mrk = ++cur;
-                       if (lim <= cur) CHECKEOF();;
-                       yych = *cur;
-                       switch (yych) {
                        case 0x00:
                        case 0x01:
                        case 0x02:
@@ -9634,17 +9242,30 @@ yy586:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy587;
+                       case 0x7F:      goto yy577;
                        case '\\':      goto yy147;
-                       case 'o':       goto yy555;
-                       default:        goto yy529;
+                       default:        goto yy61;
                        }
-yy587:
-#line 176 "src/parser_scan.re"
-                       { NEWTOKEN(PSI_T_PRAGMA_ONCE); goto start; }
-#line 9646 "src/parser_scan.c"
-yy588:
-                       yyaccept = 79;
+yy577:
+#line 225 "src/parser_scan.re"
+                       { NEWTOKEN(PSI_T_POST_ASSERT); goto start; }
+#line 9253 "src/parser_scan.c"
+yy578:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case '_':       goto yy582;
+                       default:        goto yy62;
+                       }
+yy579:
+                       yyaccept = 3;
+                       yych = *(mrk = ++cur);
+                       switch (yych) {
+                       case '_':       goto yy583;
+                       default:        goto yy62;
+                       }
+yy580:
+                       yyaccept = 78;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9710,40 +9331,40 @@ yy588:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy589;
+                       case 0x7F:      goto yy581;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy589:
-#line 211 "src/parser_scan.re"
+yy581:
+#line 209 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_INCLUDE_NEXT); goto start; }
-#line 9721 "src/parser_scan.c"
-yy590:
+#line 9342 "src/parser_scan.c"
+yy582:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case '_':       goto yy592;
+                       case '_':       goto yy584;
                        default:        goto yy62;
                        }
-yy591:
+yy583:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
-                       case '_':       goto yy593;
+                       case '_':       goto yy585;
                        default:        goto yy62;
                        }
-yy592:
+yy584:
                        yyaccept = 3;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case '\t':
                        case '\f':
-                       case ' ':       goto yy595;
-                       case '(':       goto yy597;
+                       case ' ':       goto yy587;
+                       case '(':       goto yy589;
                        default:        goto yy62;
                        }
-yy593:
-                       yyaccept = 80;
+yy585:
+                       yyaccept = 79;
                        yych = *(mrk = ++cur);
                        switch (yych) {
                        case 0x00:
@@ -9809,67 +9430,67 @@ yy593:
                        case '|':
                        case '}':
                        case '~':
-                       case 0x7F:      goto yy594;
+                       case 0x7F:      goto yy586;
                        case '\\':      goto yy147;
                        default:        goto yy61;
                        }
-yy594:
-#line 179 "src/parser_scan.re"
+yy586:
+#line 177 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_CPP_EXTENSION); goto start; }
-#line 9820 "src/parser_scan.c"
-yy595:
+#line 9441 "src/parser_scan.c"
+yy587:
                        ++cur;
                        if ((lim - cur) < 2) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\t':
                        case '\f':
-                       case ' ':       goto yy595;
-                       case '(':       goto yy597;
+                       case ' ':       goto yy587;
+                       case '(':       goto yy589;
                        default:        goto yy114;
                        }
-yy597:
+yy589:
                        yych = *++cur;
                        switch (yych) {
-                       case '(':       goto yy598;
+                       case '(':       goto yy590;
                        default:        goto yy114;
                        }
-yy598:
+yy590:
                        ++cur;
-#line 253 "src/parser_scan.re"
+#line 251 "src/parser_scan.re"
                        { parens = 2; goto cpp_attribute; }
-#line 9842 "src/parser_scan.c"
+#line 9463 "src/parser_scan.c"
                }
-#line 259 "src/parser_scan.re"
+#line 257 "src/parser_scan.re"
 
 
        character: ;
                
-#line 9849 "src/parser_scan.c"
+#line 9470 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\n':
-                       case '\r':      goto yy604;
-                       case '\'':      goto yy606;
-                       case '\\':      goto yy608;
-                       default:        goto yy602;
+                       case '\r':      goto yy596;
+                       case '\'':      goto yy598;
+                       case '\\':      goto yy600;
+                       default:        goto yy594;
                        }
-yy602:
+yy594:
                        ++cur;
-#line 277 "src/parser_scan.re"
+#line 275 "src/parser_scan.re"
                        { escaped = false; goto character; }
-#line 9865 "src/parser_scan.c"
-yy604:
+#line 9486 "src/parser_scan.c"
+yy596:
                        ++cur;
-#line 264 "src/parser_scan.re"
+#line 262 "src/parser_scan.re"
                        { NEWLINE(); goto character; }
-#line 9870 "src/parser_scan.c"
-yy606:
+#line 9491 "src/parser_scan.c"
+yy598:
                        ++cur;
-#line 266 "src/parser_scan.re"
+#line 264 "src/parser_scan.re"
                        {
                        if (escaped) {
                                escaped = false;
@@ -9881,43 +9502,43 @@ yy606:
                        token->flags = char_width;
                        goto start;
                }
-#line 9885 "src/parser_scan.c"
-yy608:
+#line 9506 "src/parser_scan.c"
+yy600:
                        ++cur;
-#line 265 "src/parser_scan.re"
+#line 263 "src/parser_scan.re"
                        { escaped = !escaped;  goto character; }
-#line 9890 "src/parser_scan.c"
+#line 9511 "src/parser_scan.c"
                }
-#line 279 "src/parser_scan.re"
+#line 277 "src/parser_scan.re"
 
 
        string: ;
                
-#line 9897 "src/parser_scan.c"
+#line 9518 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\n':
-                       case '\r':      goto yy614;
-                       case '"':       goto yy616;
-                       case '\\':      goto yy618;
-                       default:        goto yy612;
+                       case '\r':      goto yy606;
+                       case '"':       goto yy608;
+                       case '\\':      goto yy610;
+                       default:        goto yy604;
                        }
-yy612:
+yy604:
                        ++cur;
-#line 297 "src/parser_scan.re"
+#line 295 "src/parser_scan.re"
                        { escaped = false; goto string; }
-#line 9913 "src/parser_scan.c"
-yy614:
+#line 9534 "src/parser_scan.c"
+yy606:
                        ++cur;
-#line 284 "src/parser_scan.re"
+#line 282 "src/parser_scan.re"
                        { NEWLINE(); goto string; }
-#line 9918 "src/parser_scan.c"
-yy616:
+#line 9539 "src/parser_scan.c"
+yy608:
                        ++cur;
-#line 286 "src/parser_scan.re"
+#line 284 "src/parser_scan.re"
                        {
                        if (escaped) {
                                escaped = false;
@@ -9929,118 +9550,118 @@ yy616:
                        token->flags = char_width;
                        goto start;
                }
-#line 9933 "src/parser_scan.c"
-yy618:
+#line 9554 "src/parser_scan.c"
+yy610:
                        ++cur;
-#line 285 "src/parser_scan.re"
+#line 283 "src/parser_scan.re"
                        { escaped = !escaped; goto string; }
-#line 9938 "src/parser_scan.c"
+#line 9559 "src/parser_scan.c"
                }
-#line 299 "src/parser_scan.re"
+#line 297 "src/parser_scan.re"
 
 
        comment: ;
                
-#line 9945 "src/parser_scan.c"
+#line 9566 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if ((lim - cur) < 2) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\n':
-                       case '\r':      goto yy624;
-                       case '*':       goto yy626;
-                       default:        goto yy622;
+                       case '\r':      goto yy616;
+                       case '*':       goto yy618;
+                       default:        goto yy614;
                        }
-yy622:
+yy614:
                        ++cur;
-yy623:
-#line 306 "src/parser_scan.re"
+yy615:
+#line 304 "src/parser_scan.re"
                        { goto comment; }
-#line 9961 "src/parser_scan.c"
-yy624:
+#line 9582 "src/parser_scan.c"
+yy616:
                        ++cur;
-#line 304 "src/parser_scan.re"
+#line 302 "src/parser_scan.re"
                        { NEWLINE(); goto comment; }
-#line 9966 "src/parser_scan.c"
-yy626:
+#line 9587 "src/parser_scan.c"
+yy618:
                        yych = *++cur;
                        switch (yych) {
-                       case '/':       goto yy627;
-                       default:        goto yy623;
+                       case '/':       goto yy619;
+                       default:        goto yy615;
                        }
-yy627:
+yy619:
                        ++cur;
-#line 305 "src/parser_scan.re"
+#line 303 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMENT); goto start; }
-#line 9977 "src/parser_scan.c"
+#line 9598 "src/parser_scan.c"
                }
-#line 308 "src/parser_scan.re"
+#line 306 "src/parser_scan.re"
 
 
        comment_sl: ;
                
-#line 9984 "src/parser_scan.c"
+#line 9605 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\n':
-                       case '\r':      goto yy633;
-                       default:        goto yy631;
+                       case '\r':      goto yy625;
+                       default:        goto yy623;
                        }
-yy631:
+yy623:
                        ++cur;
-#line 314 "src/parser_scan.re"
+#line 312 "src/parser_scan.re"
                        { goto comment_sl; }
-#line 9998 "src/parser_scan.c"
-yy633:
+#line 9619 "src/parser_scan.c"
+yy625:
                        ++cur;
-#line 313 "src/parser_scan.re"
+#line 311 "src/parser_scan.re"
                        { NEWTOKEN(PSI_T_COMMENT); tok = cur - 1; NEWTOKEN(PSI_T_EOL); NEWLINE(); goto start; }
-#line 10003 "src/parser_scan.c"
+#line 9624 "src/parser_scan.c"
                }
-#line 316 "src/parser_scan.re"
+#line 314 "src/parser_scan.re"
 
 
        cpp_attribute: ;
 
                
-#line 10011 "src/parser_scan.c"
+#line 9632 "src/parser_scan.c"
                {
                        unsigned char yych;
                        if (lim <= cur) CHECKEOF();;
                        yych = *cur;
                        switch (yych) {
                        case '\n':
-                       case '\r':      goto yy639;
-                       case '(':       goto yy641;
-                       case ')':       goto yy643;
-                       default:        goto yy637;
+                       case '\r':      goto yy631;
+                       case '(':       goto yy633;
+                       case ')':       goto yy635;
+                       default:        goto yy629;
                        }
-yy637:
+yy629:
                        ++cur;
-#line 325 "src/parser_scan.re"
+#line 323 "src/parser_scan.re"
                        { goto cpp_attribute; }
-#line 10027 "src/parser_scan.c"
-yy639:
+#line 9648 "src/parser_scan.c"
+yy631:
                        ++cur;
-#line 324 "src/parser_scan.re"
+#line 322 "src/parser_scan.re"
                        { NEWLINE(); goto cpp_attribute; }
-#line 10032 "src/parser_scan.c"
-yy641:
+#line 9653 "src/parser_scan.c"
+yy633:
                        ++cur;
-#line 322 "src/parser_scan.re"
+#line 320 "src/parser_scan.re"
                        { ++parens; goto cpp_attribute; }
-#line 10037 "src/parser_scan.c"
-yy643:
+#line 9658 "src/parser_scan.c"
+yy635:
                        ++cur;
-#line 323 "src/parser_scan.re"
+#line 321 "src/parser_scan.re"
                        { if (parens == 1) { NEWTOKEN(PSI_T_CPP_ATTRIBUTE); goto start; } else { --parens; goto cpp_attribute; } }
-#line 10042 "src/parser_scan.c"
+#line 9663 "src/parser_scan.c"
                }
-#line 327 "src/parser_scan.re"
+#line 325 "src/parser_scan.re"
 
 error: ;