]> granicus.if.org Git - re2c/commitdiff
Renamed configurations and updated tests.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 6 Oct 2016 15:28:38 +0000 (16:28 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 6 Oct 2016 15:28:38 +0000 (16:28 +0100)
    'tags:line' -> 'tags:format'
    'tags:sep' -> 'tags:separator'

28 files changed:
re2c/bootstrap/src/parse/lex.cc
re2c/src/codegen/output.cc
re2c/src/codegen/output.h
re2c/src/parse/lex.re
re2c/test/tags/conf1.i--tags--input(custom).c
re2c/test/tags/conf1.i--tags--input(custom).re
re2c/test/tags/conf1.i--tags.c
re2c/test/tags/conf1.i--tags.re
re2c/test/tags/conf2.i--tags--input(custom).c
re2c/test/tags/conf2.i--tags--input(custom).re
re2c/test/tags/conf2.i--tags.c
re2c/test/tags/conf2.i--tags.re
re2c/test/tags/conf3.i--tags--input(custom).c
re2c/test/tags/conf3.i--tags--input(custom).re
re2c/test/tags/conf3.i--tags.c
re2c/test/tags/conf3.i--tags.re
re2c/test/tags/conf4.i--tags--input(custom).c [deleted file]
re2c/test/tags/conf4.i--tags--input(custom).re [deleted file]
re2c/test/tags/conf4.i--tags.c [deleted file]
re2c/test/tags/conf4.i--tags.re [deleted file]
re2c/test/tags/conf5.i--tags--input(custom).c [deleted file]
re2c/test/tags/conf5.i--tags--input(custom).re [deleted file]
re2c/test/tags/conf5.i--tags.c [deleted file]
re2c/test/tags/conf5.i--tags.re [deleted file]
re2c/test/tags/conf6.--tags--input(custom).c [deleted file]
re2c/test/tags/conf6.--tags--input(custom).re [deleted file]
re2c/test/tags/conf6.--tags.c [deleted file]
re2c/test/tags/conf6.--tags.re [deleted file]

index dc23c0c7e2651a1c54d5fd831b957c4af60658d7..be92270ffd4006d8ed42bf3878d57f20bcd2745e 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.16 on Mon Sep 26 12:27:15 2016 */
+/* Generated by re2c 0.16 on Thu Oct  6 15:19:41 2016 */
 #line 1 "../src/parse/lex.re"
 #include "src/util/c99_stdint.h"
 #include <stddef.h>
@@ -754,7 +754,7 @@ void Scanner::lex_tags()
                  0,   0,   0,   0,   0,   0,   0,   0, 
                  0,   0,   0,   0,   0,   0,   0,   0, 
        };
-       if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+       if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
                goto yy130;
@@ -766,9 +766,9 @@ void Scanner::lex_tags()
                        if (yych == '\r') goto yy135;
                }
        } else {
-               if (yych <= 'l') {
+               if (yych <= 'f') {
                        if (yych <= '*') goto yy136;
-                       if (yych >= 'l') goto yy137;
+                       if (yych >= 'f') goto yy137;
                } else {
                        if (yych == 's') goto yy138;
                }
@@ -803,7 +803,7 @@ yy136:
        goto yy129;
 yy137:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == 'i') goto yy141;
+       if (yych == 'o') goto yy141;
        goto yy129;
 yy138:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
@@ -823,7 +823,7 @@ yy139:
 #line 824 "src/parse/lex.cc"
 yy141:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy144;
+       if (yych == 'r') goto yy144;
 yy142:
        YYCURSOR = YYMARKER;
        goto yy129;
@@ -833,18 +833,44 @@ yy143:
        goto yy142;
 yy144:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy147;
+       if (yych == 'm') goto yy146;
        goto yy142;
 yy145:
-       ++YYCURSOR;
-#line 204 "../src/parse/lex.re"
-       { conf.sep  = lex_conf_string(); continue; }
-#line 843 "src/parse/lex.cc"
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy147;
+       goto yy142;
+yy146:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy148;
+       goto yy142;
 yy147:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'r') goto yy149;
+       goto yy142;
+yy148:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 't') goto yy150;
+       goto yy142;
+yy149:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych == 'a') goto yy152;
+       goto yy142;
+yy150:
        ++YYCURSOR;
 #line 203 "../src/parse/lex.re"
-       { conf.line = lex_conf_string(); continue; }
-#line 848 "src/parse/lex.cc"
+       { conf.format    = lex_conf_string(); continue; }
+#line 863 "src/parse/lex.cc"
+yy152:
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 't') goto yy142;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'o') goto yy142;
+       yych = (YYCTYPE)*++YYCURSOR;
+       if (yych != 'r') goto yy142;
+       ++YYCURSOR;
+#line 204 "../src/parse/lex.re"
+       { conf.separator = lex_conf_string(); continue; }
+#line 874 "src/parse/lex.cc"
 }
 #line 216 "../src/parse/lex.re"
 }
@@ -866,7 +892,7 @@ scan:
 
 start:
 
-#line 870 "src/parse/lex.cc"
+#line 896 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -907,99 +933,99 @@ start:
        if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy153;
+               goto yy161;
        }
        if (yych <= '9') {
                if (yych <= '&') {
                        if (yych <= '\r') {
-                               if (yych <= 0x08) goto yy151;
-                               if (yych <= '\n') goto yy156;
-                               if (yych >= '\r') goto yy158;
+                               if (yych <= 0x08) goto yy159;
+                               if (yych <= '\n') goto yy164;
+                               if (yych >= '\r') goto yy166;
                        } else {
                                if (yych <= '"') {
-                                       if (yych >= '"') goto yy159;
+                                       if (yych >= '"') goto yy167;
                                } else {
-                                       if (yych == '%') goto yy161;
+                                       if (yych == '%') goto yy169;
                                }
                        }
                } else {
                        if (yych <= '+') {
-                               if (yych <= '\'') goto yy162;
-                               if (yych <= ')') goto yy164;
-                               if (yych <= '*') goto yy166;
-                               goto yy168;
+                               if (yych <= '\'') goto yy170;
+                               if (yych <= ')') goto yy172;
+                               if (yych <= '*') goto yy174;
+                               goto yy176;
                        } else {
                                if (yych <= '-') {
-                                       if (yych <= ',') goto yy164;
+                                       if (yych <= ',') goto yy172;
                                } else {
-                                       if (yych <= '.') goto yy170;
-                                       if (yych <= '/') goto yy172;
-                                       goto yy173;
+                                       if (yych <= '.') goto yy178;
+                                       if (yych <= '/') goto yy180;
+                                       goto yy181;
                                }
                        }
                }
        } else {
                if (yych <= '\\') {
                        if (yych <= '>') {
-                               if (yych <= ':') goto yy174;
-                               if (yych == '<') goto yy175;
-                               goto yy164;
+                               if (yych <= ':') goto yy182;
+                               if (yych == '<') goto yy183;
+                               goto yy172;
                        } else {
                                if (yych <= '@') {
-                                       if (yych <= '?') goto yy168;
-                                       goto yy176;
+                                       if (yych <= '?') goto yy176;
+                                       goto yy184;
                                } else {
-                                       if (yych <= 'Z') goto yy173;
-                                       if (yych <= '[') goto yy177;
-                                       goto yy164;
+                                       if (yych <= 'Z') goto yy181;
+                                       if (yych <= '[') goto yy185;
+                                       goto yy172;
                                }
                        }
                } else {
                        if (yych <= 'q') {
-                               if (yych == '_') goto yy173;
-                               if (yych >= 'a') goto yy173;
+                               if (yych == '_') goto yy181;
+                               if (yych >= 'a') goto yy181;
                        } else {
                                if (yych <= 'z') {
-                                       if (yych <= 'r') goto yy179;
-                                       goto yy173;
+                                       if (yych <= 'r') goto yy187;
+                                       goto yy181;
                                } else {
-                                       if (yych <= '{') goto yy180;
-                                       if (yych <= '|') goto yy164;
+                                       if (yych <= '{') goto yy188;
+                                       if (yych <= '|') goto yy172;
                                }
                        }
                }
        }
-yy151:
+yy159:
        ++YYCURSOR;
-yy152:
+yy160:
 #line 398 "../src/parse/lex.re"
        {
                                        fatalf("unexpected character: '%c'", *tok);
                                        goto scan;
                                }
-#line 981 "src/parse/lex.cc"
-yy153:
+#line 1007 "src/parse/lex.cc"
+yy161:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy153;
+               goto yy161;
        }
 #line 382 "../src/parse/lex.re"
        {
                                        goto scan;
                                }
-#line 993 "src/parse/lex.cc"
-yy156:
+#line 1019 "src/parse/lex.cc"
+yy164:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy182;
+               if (yych == '\t') goto yy190;
        } else {
-               if (yych <= ' ') goto yy182;
-               if (yych == '#') goto yy185;
+               if (yych <= ' ') goto yy190;
+               if (yych == '#') goto yy193;
        }
-yy157:
+yy165:
 #line 391 "../src/parse/lex.re"
        {
                                        if (cur == eof) return 0;
@@ -1007,188 +1033,188 @@ yy157:
                                        cline++;
                                        goto scan;
                                }
-#line 1011 "src/parse/lex.cc"
-yy158:
+#line 1037 "src/parse/lex.cc"
+yy166:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy156;
-       goto yy152;
-yy159:
+       if (yych == '\n') goto yy164;
+       goto yy160;
+yy167:
        ++YYCURSOR;
 #line 265 "../src/parse/lex.re"
        { yylval.regexp = lex_str('"',  opts->bCaseInsensitive ||  opts->bCaseInverted); return TOKEN_REGEXP; }
-#line 1020 "src/parse/lex.cc"
-yy161:
+#line 1046 "src/parse/lex.cc"
+yy169:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '}') goto yy187;
-       goto yy152;
-yy162:
+       if (yych == '}') goto yy195;
+       goto yy160;
+yy170:
        ++YYCURSOR;
 #line 264 "../src/parse/lex.re"
        { yylval.regexp = lex_str('\'', opts->bCaseInsensitive || !opts->bCaseInverted); return TOKEN_REGEXP; }
-#line 1029 "src/parse/lex.cc"
-yy164:
+#line 1055 "src/parse/lex.cc"
+yy172:
        ++YYCURSOR;
-yy165:
+yy173:
 #line 285 "../src/parse/lex.re"
        {
                                        return *tok;
                                }
-#line 1037 "src/parse/lex.cc"
-yy166:
+#line 1063 "src/parse/lex.cc"
+yy174:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy187;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy195;
 #line 289 "../src/parse/lex.re"
        {
                                        yylval.op = *tok;
                                        return TOKEN_STAR;
                                }
-#line 1046 "src/parse/lex.cc"
-yy168:
+#line 1072 "src/parse/lex.cc"
+yy176:
        ++YYCURSOR;
 #line 293 "../src/parse/lex.re"
        {
                                        yylval.op = *tok;
                                        return TOKEN_CLOSE;
                                }
-#line 1054 "src/parse/lex.cc"
-yy170:
+#line 1080 "src/parse/lex.cc"
+yy178:
        ++YYCURSOR;
 #line 377 "../src/parse/lex.re"
        {
                                        yylval.regexp = mkDot();
                                        return TOKEN_REGEXP;
                                }
-#line 1062 "src/parse/lex.cc"
-yy172:
+#line 1088 "src/parse/lex.cc"
+yy180:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '*') goto yy189;
-       if (yych == '/') goto yy191;
-       goto yy165;
-yy173:
+       if (yych == '*') goto yy197;
+       if (yych == '/') goto yy199;
+       goto yy173;
+yy181:
        yych = (YYCTYPE)*++YYCURSOR;
-       goto yy199;
-yy174:
+       goto yy207;
+yy182:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '=') goto yy200;
-       goto yy152;
-yy175:
+       if (yych == '=') goto yy208;
+       goto yy160;
+yy183:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '!') goto yy202;
-       if (yych == '>') goto yy204;
-       goto yy165;
-yy176:
+       if (yych == '!') goto yy210;
+       if (yych == '>') goto yy212;
+       goto yy173;
+yy184:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'Z') {
-               if (yych <= '/') goto yy152;
-               if (yych <= '9') goto yy205;
-               if (yych <= '@') goto yy152;
-               goto yy205;
+               if (yych <= '/') goto yy160;
+               if (yych <= '9') goto yy213;
+               if (yych <= '@') goto yy160;
+               goto yy213;
        } else {
                if (yych <= '_') {
-                       if (yych <= '^') goto yy152;
-                       goto yy205;
+                       if (yych <= '^') goto yy160;
+                       goto yy213;
                } else {
-                       if (yych <= '`') goto yy152;
-                       if (yych <= 'z') goto yy205;
-                       goto yy152;
+                       if (yych <= '`') goto yy160;
+                       if (yych <= 'z') goto yy213;
+                       goto yy160;
                }
        }
-yy177:
+yy185:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) == '^') goto yy208;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '^') goto yy216;
 #line 266 "../src/parse/lex.re"
        { yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
-#line 1103 "src/parse/lex.cc"
-yy179:
+#line 1129 "src/parse/lex.cc"
+yy187:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy210;
-       goto yy199;
-yy180:
+       if (yych == 'e') goto yy218;
+       goto yy207;
+yy188:
        yyaccept = 2;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 64) {
-               goto yy213;
+               goto yy221;
        }
        if (yych <= 'Z') {
-               if (yych == ',') goto yy211;
-               if (yych >= 'A') goto yy215;
+               if (yych == ',') goto yy219;
+               if (yych >= 'A') goto yy223;
        } else {
                if (yych <= '_') {
-                       if (yych >= '_') goto yy215;
+                       if (yych >= '_') goto yy223;
                } else {
-                       if (yych <= '`') goto yy181;
-                       if (yych <= 'z') goto yy215;
+                       if (yych <= '`') goto yy189;
+                       if (yych <= 'z') goto yy223;
                }
        }
-yy181:
+yy189:
 #line 235 "../src/parse/lex.re"
        {
                                        depth = 1;
                                        goto code;
                                }
-#line 1131 "src/parse/lex.cc"
-yy182:
+#line 1157 "src/parse/lex.cc"
+yy190:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy182;
+               if (yych == '\t') goto yy190;
        } else {
-               if (yych <= ' ') goto yy182;
-               if (yych == '#') goto yy185;
+               if (yych <= ' ') goto yy190;
+               if (yych == '#') goto yy193;
        }
-yy184:
+yy192:
        YYCURSOR = YYMARKER;
        if (yyaccept <= 1) {
                if (yyaccept == 0) {
-                       goto yy157;
-               } else {
                        goto yy165;
+               } else {
+                       goto yy173;
                }
        } else {
                if (yyaccept == 2) {
-                       goto yy181;
+                       goto yy189;
                } else {
-                       goto yy212;
+                       goto yy220;
                }
        }
-yy185:
+yy193:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy185;
-               goto yy184;
+               if (yych == '\t') goto yy193;
+               goto yy192;
        } else {
-               if (yych <= ' ') goto yy185;
-               if (yych == 'l') goto yy217;
-               goto yy184;
+               if (yych <= ' ') goto yy193;
+               if (yych == 'l') goto yy225;
+               goto yy192;
        }
-yy187:
+yy195:
        ++YYCURSOR;
 #line 259 "../src/parse/lex.re"
        {
                                        tok = cur;
                                        return 0;
                                }
-#line 1176 "src/parse/lex.cc"
-yy189:
+#line 1202 "src/parse/lex.cc"
+yy197:
        ++YYCURSOR;
 #line 253 "../src/parse/lex.re"
        {
                                        depth = 1;
                                        goto comment;
                                }
-#line 1184 "src/parse/lex.cc"
-yy191:
+#line 1210 "src/parse/lex.cc"
+yy199:
        ++YYCURSOR;
 #line 250 "../src/parse/lex.re"
        {
                                goto nextLine;
                        }
-#line 1191 "src/parse/lex.cc"
-yy193:
+#line 1217 "src/parse/lex.cc"
+yy201:
        ++YYCURSOR;
        YYCURSOR -= 1;
 #line 361 "../src/parse/lex.re"
@@ -1207,11 +1233,11 @@ yy193:
                                                return TOKEN_REGEXP;
                                        }
                                }
-#line 1211 "src/parse/lex.cc"
-yy195:
+#line 1237 "src/parse/lex.cc"
+yy203:
        yych = (YYCTYPE)*++YYCURSOR;
-       goto yy221;
-yy196:
+       goto yy229;
+yy204:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 356 "../src/parse/lex.re"
@@ -1219,102 +1245,102 @@ yy196:
                                        yylval.str = new std::string (tok, tok_len ());
                                        return TOKEN_ID;
                                }
-#line 1223 "src/parse/lex.cc"
-yy198:
+#line 1249 "src/parse/lex.cc"
+yy206:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
-yy199:
+yy207:
        if (yybm[0+yych] & 32) {
-               goto yy198;
+               goto yy206;
        }
        if (yych <= ' ') {
                if (yych == '\t') {
                        YYCTXMARKER = YYCURSOR;
-                       goto yy195;
+                       goto yy203;
                }
-               if (yych <= 0x1F) goto yy193;
+               if (yych <= 0x1F) goto yy201;
                YYCTXMARKER = YYCURSOR;
-               goto yy195;
+               goto yy203;
        } else {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy193;
+                       if (yych <= '+') goto yy201;
                        YYCTXMARKER = YYCURSOR;
-                       goto yy196;
+                       goto yy204;
                } else {
-                       if (yych <= '<') goto yy193;
+                       if (yych <= '<') goto yy201;
                        if (yych <= '>') {
                                YYCTXMARKER = YYCURSOR;
-                               goto yy196;
+                               goto yy204;
                        }
-                       goto yy193;
+                       goto yy201;
                }
        }
-yy200:
+yy208:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy222;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy230;
 #line 244 "../src/parse/lex.re"
        {
                                        tok += 2; /* skip ":=" */
                                        depth = 0;
                                        goto code;
                                }
-#line 1263 "src/parse/lex.cc"
-yy202:
+#line 1289 "src/parse/lex.cc"
+yy210:
        ++YYCURSOR;
 #line 272 "../src/parse/lex.re"
        {
                                        return TOKEN_SETUP;
                                }
-#line 1270 "src/parse/lex.cc"
-yy204:
+#line 1296 "src/parse/lex.cc"
+yy212:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '9') {
                if (yych <= '\t') {
-                       if (yych <= 0x08) goto yy184;
+                       if (yych <= 0x08) goto yy192;
                        YYCTXMARKER = YYCURSOR;
-                       goto yy224;
+                       goto yy232;
                } else {
                        if (yych == ' ') {
                                YYCTXMARKER = YYCURSOR;
-                               goto yy224;
+                               goto yy232;
                        }
-                       goto yy184;
+                       goto yy192;
                }
        } else {
                if (yych <= '=') {
                        if (yych <= ':') {
                                YYCTXMARKER = YYCURSOR;
-                               goto yy226;
+                               goto yy234;
                        }
-                       if (yych <= '<') goto yy184;
+                       if (yych <= '<') goto yy192;
                        YYCTXMARKER = YYCURSOR;
-                       goto yy227;
+                       goto yy235;
                } else {
                        if (yych == '{') {
                                YYCTXMARKER = YYCURSOR;
-                               goto yy228;
+                               goto yy236;
                        }
-                       goto yy184;
+                       goto yy192;
                }
        }
-yy205:
+yy213:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'Z') {
-               if (yych <= '/') goto yy207;
-               if (yych <= '9') goto yy205;
-               if (yych >= 'A') goto yy205;
+               if (yych <= '/') goto yy215;
+               if (yych <= '9') goto yy213;
+               if (yych >= 'A') goto yy213;
        } else {
                if (yych <= '_') {
-                       if (yych >= '_') goto yy205;
+                       if (yych >= '_') goto yy213;
                } else {
-                       if (yych <= '`') goto yy207;
-                       if (yych <= 'z') goto yy205;
+                       if (yych <= '`') goto yy215;
+                       if (yych <= 'z') goto yy213;
                }
        }
-yy207:
+yy215:
 #line 276 "../src/parse/lex.re"
        {
                if (!opts->tags) {
@@ -1324,74 +1350,74 @@ yy207:
                yylval.regexp = RegExp::make_tag(name);
                return TOKEN_REGEXP;
        }
-#line 1328 "src/parse/lex.cc"
-yy208:
+#line 1354 "src/parse/lex.cc"
+yy216:
        ++YYCURSOR;
 #line 267 "../src/parse/lex.re"
        { yylval.regexp = lex_cls(true);  return TOKEN_REGEXP; }
-#line 1333 "src/parse/lex.cc"
-yy210:
+#line 1359 "src/parse/lex.cc"
+yy218:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '2') goto yy230;
-       goto yy199;
-yy211:
+       if (yych == '2') goto yy238;
+       goto yy207;
+yy219:
        ++YYCURSOR;
-yy212:
+yy220:
 #line 329 "../src/parse/lex.re"
        {
                                        fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
                                }
-#line 1345 "src/parse/lex.cc"
-yy213:
+#line 1371 "src/parse/lex.cc"
+yy221:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy213;
+               goto yy221;
        }
        if (yych <= '^') {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy184;
-                       goto yy231;
+                       if (yych <= '+') goto yy192;
+                       goto yy239;
                } else {
-                       if (yych <= '@') goto yy184;
-                       if (yych >= '[') goto yy184;
+                       if (yych <= '@') goto yy192;
+                       if (yych >= '[') goto yy192;
                }
        } else {
                if (yych <= 'z') {
-                       if (yych == '`') goto yy184;
+                       if (yych == '`') goto yy192;
                } else {
-                       if (yych == '}') goto yy232;
-                       goto yy184;
+                       if (yych == '}') goto yy240;
+                       goto yy192;
                }
        }
-yy215:
+yy223:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '^') {
                if (yych <= '9') {
-                       if (yych <= '/') goto yy184;
-                       goto yy215;
+                       if (yych <= '/') goto yy192;
+                       goto yy223;
                } else {
-                       if (yych <= '@') goto yy184;
-                       if (yych <= 'Z') goto yy215;
-                       goto yy184;
+                       if (yych <= '@') goto yy192;
+                       if (yych <= 'Z') goto yy223;
+                       goto yy192;
                }
        } else {
                if (yych <= 'z') {
-                       if (yych == '`') goto yy184;
-                       goto yy215;
+                       if (yych == '`') goto yy192;
+                       goto yy223;
                } else {
-                       if (yych == '}') goto yy234;
-                       goto yy184;
+                       if (yych == '}') goto yy242;
+                       goto yy192;
                }
        }
-yy217:
+yy225:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'i') goto yy236;
-       goto yy184;
-yy218:
+       if (yych == 'i') goto yy244;
+       goto yy192;
+yy226:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 343 "../src/parse/lex.re"
@@ -1407,83 +1433,83 @@ yy218:
                                                return TOKEN_ID;
                                        }
                                }
-#line 1411 "src/parse/lex.cc"
-yy220:
+#line 1437 "src/parse/lex.cc"
+yy228:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy221:
+yy229:
        if (yych <= ' ') {
-               if (yych == '\t') goto yy220;
-               if (yych <= 0x1F) goto yy218;
-               goto yy220;
+               if (yych == '\t') goto yy228;
+               if (yych <= 0x1F) goto yy226;
+               goto yy228;
        } else {
                if (yych <= ',') {
-                       if (yych <= '+') goto yy218;
-                       goto yy196;
+                       if (yych <= '+') goto yy226;
+                       goto yy204;
                } else {
-                       if (yych <= '<') goto yy218;
-                       if (yych <= '>') goto yy196;
-                       goto yy218;
+                       if (yych <= '<') goto yy226;
+                       if (yych <= '>') goto yy204;
+                       goto yy226;
                }
        }
-yy222:
+yy230:
        ++YYCURSOR;
        YYCURSOR -= 2;
 #line 240 "../src/parse/lex.re"
        {
                                        return *tok;
                                }
-#line 1438 "src/parse/lex.cc"
-yy224:
+#line 1464 "src/parse/lex.cc"
+yy232:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '9') {
                if (yych <= '\t') {
-                       if (yych <= 0x08) goto yy184;
-                       goto yy224;
+                       if (yych <= 0x08) goto yy192;
+                       goto yy232;
                } else {
-                       if (yych == ' ') goto yy224;
-                       goto yy184;
+                       if (yych == ' ') goto yy232;
+                       goto yy192;
                }
        } else {
                if (yych <= '=') {
-                       if (yych <= ':') goto yy226;
-                       if (yych <= '<') goto yy184;
-                       goto yy227;
+                       if (yych <= ':') goto yy234;
+                       if (yych <= '<') goto yy192;
+                       goto yy235;
                } else {
-                       if (yych == '{') goto yy228;
-                       goto yy184;
+                       if (yych == '{') goto yy236;
+                       goto yy192;
                }
        }
-yy226:
+yy234:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '=') goto yy228;
-       goto yy184;
-yy227:
+       if (yych == '=') goto yy236;
+       goto yy192;
+yy235:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != '>') goto yy184;
-yy228:
+       if (yych != '>') goto yy192;
+yy236:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 269 "../src/parse/lex.re"
        {
                                        return TOKEN_NOCOND;
                                }
-#line 1475 "src/parse/lex.cc"
-yy230:
+#line 1501 "src/parse/lex.cc"
+yy238:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'c') goto yy237;
-       goto yy199;
-yy231:
+       if (yych == 'c') goto yy245;
+       goto yy207;
+yy239:
        yyaccept = 3;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy212;
-       if (yych <= '9') goto yy238;
-       if (yych == '}') goto yy240;
-       goto yy212;
-yy232:
+       if (yych <= '/') goto yy220;
+       if (yych <= '9') goto yy246;
+       if (yych == '}') goto yy248;
+       goto yy220;
+yy240:
        ++YYCURSOR;
 #line 298 "../src/parse/lex.re"
        {
@@ -1494,8 +1520,8 @@ yy232:
                                        yylval.extop.max = yylval.extop.min;
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1498 "src/parse/lex.cc"
-yy234:
+#line 1524 "src/parse/lex.cc"
+yy242:
        ++YYCURSOR;
 #line 333 "../src/parse/lex.re"
        {
@@ -1505,24 +1531,24 @@ yy234:
                                        yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
                                        return TOKEN_ID;
                                }
-#line 1509 "src/parse/lex.cc"
-yy236:
+#line 1535 "src/parse/lex.cc"
+yy244:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'n') goto yy242;
-       goto yy184;
-yy237:
+       if (yych == 'n') goto yy250;
+       goto yy192;
+yy245:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == ':') goto yy243;
-       goto yy199;
-yy238:
+       if (yych == ':') goto yy251;
+       goto yy207;
+yy246:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych <= '/') goto yy184;
-       if (yych <= '9') goto yy238;
-       if (yych == '}') goto yy245;
-       goto yy184;
-yy240:
+       if (yych <= '/') goto yy192;
+       if (yych <= '9') goto yy246;
+       if (yych == '}') goto yy253;
+       goto yy192;
+yy248:
        ++YYCURSOR;
 #line 320 "../src/parse/lex.re"
        {
@@ -1533,17 +1559,17 @@ yy240:
                                        yylval.extop.max = std::numeric_limits<uint32_t>::max();
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1537 "src/parse/lex.cc"
-yy242:
+#line 1563 "src/parse/lex.cc"
+yy250:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == 'e') goto yy247;
-       goto yy184;
-yy243:
+       if (yych == 'e') goto yy255;
+       goto yy192;
+yy251:
        ++YYCURSOR;
 #line 341 "../src/parse/lex.re"
        { lex_conf (); return TOKEN_CONF; }
-#line 1546 "src/parse/lex.cc"
-yy245:
+#line 1572 "src/parse/lex.cc"
+yy253:
        ++YYCURSOR;
 #line 307 "../src/parse/lex.re"
        {
@@ -1558,60 +1584,60 @@ yy245:
                                        }
                                        return TOKEN_CLOSESIZE;
                                }
-#line 1562 "src/parse/lex.cc"
-yy247:
+#line 1588 "src/parse/lex.cc"
+yy255:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy249;
-       if (yych <= '9') goto yy184;
-       goto yy249;
-yy248:
+       if (yych <= '0') goto yy257;
+       if (yych <= '9') goto yy192;
+       goto yy257;
+yy256:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy249:
+yy257:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy248;
-               goto yy184;
+               if (yych == '\t') goto yy256;
+               goto yy192;
        } else {
-               if (yych <= ' ') goto yy248;
-               if (yych <= '0') goto yy184;
-               if (yych >= ':') goto yy184;
+               if (yych <= ' ') goto yy256;
+               if (yych <= '0') goto yy192;
+               if (yych >= ':') goto yy192;
                YYCTXMARKER = YYCURSOR;
        }
-yy250:
+yy258:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
-                       if (yych <= 0x08) goto yy184;
+                       if (yych <= 0x08) goto yy192;
                } else {
-                       if (yych <= '\n') goto yy254;
-                       if (yych <= '\f') goto yy184;
-                       goto yy256;
+                       if (yych <= '\n') goto yy262;
+                       if (yych <= '\f') goto yy192;
+                       goto yy264;
                }
        } else {
                if (yych <= ' ') {
-                       if (yych <= 0x1F) goto yy184;
+                       if (yych <= 0x1F) goto yy192;
                } else {
-                       if (yych <= '/') goto yy184;
-                       if (yych <= '9') goto yy250;
-                       goto yy184;
+                       if (yych <= '/') goto yy192;
+                       if (yych <= '9') goto yy258;
+                       goto yy192;
                }
        }
-yy252:
+yy260:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy252;
-               goto yy184;
+               if (yych == '\t') goto yy260;
+               goto yy192;
        } else {
-               if (yych <= ' ') goto yy252;
-               if (yych == '"') goto yy257;
-               goto yy184;
+               if (yych <= ' ') goto yy260;
+               if (yych == '"') goto yy265;
+               goto yy192;
        }
-yy254:
+yy262:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 386 "../src/parse/lex.re"
@@ -1619,52 +1645,52 @@ yy254:
                                        set_sourceline ();
                                        goto scan;
                                }
-#line 1623 "src/parse/lex.cc"
-yy256:
+#line 1649 "src/parse/lex.cc"
+yy264:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy254;
-       goto yy184;
-yy257:
+       if (yych == '\n') goto yy262;
+       goto yy192;
+yy265:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy257;
+               goto yy265;
        }
-       if (yych <= '\n') goto yy184;
-       if (yych >= '#') goto yy260;
+       if (yych <= '\n') goto yy192;
+       if (yych >= '#') goto yy268;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy254;
-       if (yych == '\r') goto yy256;
-       goto yy184;
-yy260:
+       if (yych == '\n') goto yy262;
+       if (yych == '\r') goto yy264;
+       goto yy192;
+yy268:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy184;
-       goto yy257;
+       if (yych == '\n') goto yy192;
+       goto yy265;
 }
 #line 402 "../src/parse/lex.re"
 
 
 flex_name:
 
-#line 1653 "src/parse/lex.cc"
+#line 1679 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy265;
-       if (yych == '\r') goto yy267;
+       if (yych == '\n') goto yy273;
+       if (yych == '\r') goto yy275;
        ++YYCURSOR;
-yy264:
+yy272:
 #line 413 "../src/parse/lex.re"
        {
                YYCURSOR = tok;
                goto start;
        }
-#line 1667 "src/parse/lex.cc"
-yy265:
+#line 1693 "src/parse/lex.cc"
+yy273:
        ++YYCURSOR;
 #line 407 "../src/parse/lex.re"
        {
@@ -1672,18 +1698,18 @@ yy265:
                lexer_state = LEX_NORMAL;
                return TOKEN_FID_END;
        }
-#line 1676 "src/parse/lex.cc"
-yy267:
+#line 1702 "src/parse/lex.cc"
+yy275:
        ++YYCURSOR;
-       if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy265;
-       goto yy264;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy273;
+       goto yy272;
 }
 #line 417 "../src/parse/lex.re"
 
 
 code:
 
-#line 1687 "src/parse/lex.cc"
+#line 1713 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1725,24 +1751,24 @@ code:
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '&') {
                if (yych <= '\n') {
-                       if (yych <= 0x00) goto yy270;
-                       if (yych <= '\t') goto yy272;
-                       goto yy274;
+                       if (yych <= 0x00) goto yy278;
+                       if (yych <= '\t') goto yy280;
+                       goto yy282;
                } else {
-                       if (yych == '"') goto yy276;
-                       goto yy272;
+                       if (yych == '"') goto yy284;
+                       goto yy280;
                }
        } else {
                if (yych <= '{') {
-                       if (yych <= '\'') goto yy277;
-                       if (yych <= 'z') goto yy272;
-                       goto yy278;
+                       if (yych <= '\'') goto yy285;
+                       if (yych <= 'z') goto yy280;
+                       goto yy286;
                } else {
-                       if (yych == '}') goto yy280;
-                       goto yy272;
+                       if (yych == '}') goto yy288;
+                       goto yy280;
                }
        }
-yy270:
+yy278:
        ++YYCURSOR;
 #line 480 "../src/parse/lex.re"
        {
@@ -1756,33 +1782,33 @@ yy270:
                                        }
                                        goto code;
                                }
-#line 1760 "src/parse/lex.cc"
-yy272:
+#line 1786 "src/parse/lex.cc"
+yy280:
        ++YYCURSOR;
-yy273:
+yy281:
 #line 494 "../src/parse/lex.re"
        {
                                        goto code;
                                }
-#line 1768 "src/parse/lex.cc"
-yy274:
+#line 1794 "src/parse/lex.cc"
+yy282:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '\r') {
                if (yych <= '\t') {
-                       if (yych >= '\t') goto yy282;
+                       if (yych >= '\t') goto yy290;
                } else {
-                       if (yych <= '\n') goto yy284;
-                       if (yych >= '\r') goto yy284;
+                       if (yych <= '\n') goto yy292;
+                       if (yych >= '\r') goto yy292;
                }
        } else {
                if (yych <= ' ') {
-                       if (yych >= ' ') goto yy282;
+                       if (yych >= ' ') goto yy290;
                } else {
-                       if (yych == '#') goto yy285;
+                       if (yych == '#') goto yy293;
                }
        }
-yy275:
+yy283:
 #line 461 "../src/parse/lex.re"
        {
                                        if (depth == 0)
@@ -1803,18 +1829,18 @@ yy275:
                                        cline++;
                                        goto code;
                                }
-#line 1807 "src/parse/lex.cc"
-yy276:
+#line 1833 "src/parse/lex.cc"
+yy284:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy273;
-       goto yy289;
-yy277:
+       if (yych == '\n') goto yy281;
+       goto yy297;
+yy285:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy273;
-       goto yy294;
-yy278:
+       if (yych == '\n') goto yy281;
+       goto yy302;
+yy286:
        ++YYCURSOR;
 #line 433 "../src/parse/lex.re"
        {
@@ -1828,8 +1854,8 @@ yy278:
                                        }
                                        goto code;
                                }
-#line 1832 "src/parse/lex.cc"
-yy280:
+#line 1858 "src/parse/lex.cc"
+yy288:
        ++YYCURSOR;
 #line 421 "../src/parse/lex.re"
        {
@@ -1844,17 +1870,17 @@ yy280:
                                        }
                                        goto code;
                                }
-#line 1848 "src/parse/lex.cc"
-yy282:
+#line 1874 "src/parse/lex.cc"
+yy290:
        yyaccept = 2;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy296;
+               if (yych == '\t') goto yy304;
        } else {
-               if (yych <= ' ') goto yy296;
-               if (yych == '#') goto yy285;
+               if (yych <= ' ') goto yy304;
+               if (yych == '#') goto yy293;
        }
-yy283:
+yy291:
        YYCURSOR -= 1;
 #line 448 "../src/parse/lex.re"
        {
@@ -1870,133 +1896,133 @@ yy283:
                                        cline++;
                                        goto code;
                                }
-#line 1874 "src/parse/lex.cc"
-yy284:
+#line 1900 "src/parse/lex.cc"
+yy292:
        yych = (YYCTYPE)*++YYCURSOR;
-       goto yy283;
-yy285:
+       goto yy291;
+yy293:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
-               goto yy285;
+               goto yy293;
        }
-       if (yych == 'l') goto yy298;
-yy287:
+       if (yych == 'l') goto yy306;
+yy295:
        YYCURSOR = YYMARKER;
        if (yyaccept <= 1) {
                if (yyaccept == 0) {
-                       goto yy275;
+                       goto yy283;
                } else {
-                       goto yy273;
+                       goto yy281;
                }
        } else {
-               goto yy283;
+               goto yy291;
        }
-yy288:
+yy296:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy289:
+yy297:
        if (yybm[0+yych] & 32) {
-               goto yy288;
+               goto yy296;
        }
-       if (yych <= '\n') goto yy287;
-       if (yych >= '#') goto yy292;
-yy290:
+       if (yych <= '\n') goto yy295;
+       if (yych >= '#') goto yy300;
+yy298:
        ++YYCURSOR;
 #line 491 "../src/parse/lex.re"
        {
                                        goto code;
                                }
-#line 1913 "src/parse/lex.cc"
-yy292:
+#line 1939 "src/parse/lex.cc"
+yy300:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy287;
-       goto yy288;
-yy293:
+       if (yych == '\n') goto yy295;
+       goto yy296;
+yy301:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy294:
+yy302:
        if (yybm[0+yych] & 64) {
-               goto yy293;
+               goto yy301;
        }
-       if (yych <= '\n') goto yy287;
-       if (yych <= '\'') goto yy290;
+       if (yych <= '\n') goto yy295;
+       if (yych <= '\'') goto yy298;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy287;
-       goto yy293;
-yy296:
+       if (yych == '\n') goto yy295;
+       goto yy301;
+yy304:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy296;
-               goto yy287;
+               if (yych == '\t') goto yy304;
+               goto yy295;
        } else {
-               if (yych <= ' ') goto yy296;
-               if (yych == '#') goto yy285;
-               goto yy287;
+               if (yych <= ' ') goto yy304;
+               if (yych == '#') goto yy293;
+               goto yy295;
        }
-yy298:
+yy306:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy287;
+       if (yych != 'i') goto yy295;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy287;
+       if (yych != 'n') goto yy295;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy287;
+       if (yych != 'e') goto yy295;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy303;
-       if (yych <= '9') goto yy287;
-       goto yy303;
-yy302:
+       if (yych <= '0') goto yy311;
+       if (yych <= '9') goto yy295;
+       goto yy311;
+yy310:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy303:
+yy311:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy302;
-               goto yy287;
+               if (yych == '\t') goto yy310;
+               goto yy295;
        } else {
-               if (yych <= ' ') goto yy302;
-               if (yych <= '0') goto yy287;
-               if (yych >= ':') goto yy287;
+               if (yych <= ' ') goto yy310;
+               if (yych <= '0') goto yy295;
+               if (yych >= ':') goto yy295;
                YYCTXMARKER = YYCURSOR;
        }
-yy304:
+yy312:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy304;
+               goto yy312;
        }
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy287;
-               if (yych <= '\t') goto yy306;
-               if (yych <= '\n') goto yy308;
-               goto yy287;
+               if (yych <= 0x08) goto yy295;
+               if (yych <= '\t') goto yy314;
+               if (yych <= '\n') goto yy316;
+               goto yy295;
        } else {
-               if (yych <= '\r') goto yy310;
-               if (yych != ' ') goto yy287;
+               if (yych <= '\r') goto yy318;
+               if (yych != ' ') goto yy295;
        }
-yy306:
+yy314:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy306;
-               goto yy287;
+               if (yych == '\t') goto yy314;
+               goto yy295;
        } else {
-               if (yych <= ' ') goto yy306;
-               if (yych == '"') goto yy311;
-               goto yy287;
+               if (yych <= ' ') goto yy314;
+               if (yych == '"') goto yy319;
+               goto yy295;
        }
-yy308:
+yy316:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 444 "../src/parse/lex.re"
@@ -2004,41 +2030,41 @@ yy308:
                                        set_sourceline ();
                                        goto code;
                                }
-#line 2008 "src/parse/lex.cc"
-yy310:
+#line 2034 "src/parse/lex.cc"
+yy318:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy308;
-       goto yy287;
-yy311:
+       if (yych == '\n') goto yy316;
+       goto yy295;
+yy319:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
-               if (yych == '\n') goto yy287;
-               goto yy311;
+               if (yych == '\n') goto yy295;
+               goto yy319;
        } else {
-               if (yych <= '"') goto yy313;
-               if (yych == '\\') goto yy314;
-               goto yy311;
+               if (yych <= '"') goto yy321;
+               if (yych == '\\') goto yy322;
+               goto yy319;
        }
-yy313:
+yy321:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy308;
-       if (yych == '\r') goto yy310;
-       goto yy287;
-yy314:
+       if (yych == '\n') goto yy316;
+       if (yych == '\r') goto yy318;
+       goto yy295;
+yy322:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy287;
-       goto yy311;
+       if (yych == '\n') goto yy295;
+       goto yy319;
 }
 #line 497 "../src/parse/lex.re"
 
 
 comment:
 
-#line 2042 "src/parse/lex.cc"
+#line 2068 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2078,13 +2104,13 @@ comment:
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= ')') {
-               if (yych == '\n') goto yy319;
+               if (yych == '\n') goto yy327;
        } else {
-               if (yych <= '*') goto yy321;
-               if (yych == '/') goto yy322;
+               if (yych <= '*') goto yy329;
+               if (yych == '/') goto yy330;
        }
        ++YYCURSOR;
-yy318:
+yy326:
 #line 529 "../src/parse/lex.re"
        {
                                        if (cur == eof)
@@ -2093,14 +2119,14 @@ yy318:
                                        }
                                        goto comment;
                                }
-#line 2097 "src/parse/lex.cc"
-yy319:
+#line 2123 "src/parse/lex.cc"
+yy327:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 32) {
-               goto yy323;
+               goto yy331;
        }
-       if (yych == '#') goto yy326;
-yy320:
+       if (yych == '#') goto yy334;
+yy328:
 #line 520 "../src/parse/lex.re"
        {
                                        if (cur == eof)
@@ -2111,39 +2137,39 @@ yy320:
                                        cline++;
                                        goto comment;
                                }
-#line 2115 "src/parse/lex.cc"
-yy321:
+#line 2141 "src/parse/lex.cc"
+yy329:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '/') goto yy328;
-       goto yy318;
-yy322:
+       if (yych == '/') goto yy336;
+       goto yy326;
+yy330:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '*') goto yy330;
-       goto yy318;
-yy323:
+       if (yych == '*') goto yy338;
+       goto yy326;
+yy331:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 32) {
-               goto yy323;
+               goto yy331;
        }
-       if (yych == '#') goto yy326;
-yy325:
+       if (yych == '#') goto yy334;
+yy333:
        YYCURSOR = YYMARKER;
-       goto yy320;
-yy326:
+       goto yy328;
+yy334:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy326;
-               goto yy325;
+               if (yych == '\t') goto yy334;
+               goto yy333;
        } else {
-               if (yych <= ' ') goto yy326;
-               if (yych == 'l') goto yy332;
-               goto yy325;
+               if (yych <= ' ') goto yy334;
+               if (yych == 'l') goto yy340;
+               goto yy333;
        }
-yy328:
+yy336:
        ++YYCURSOR;
 #line 501 "../src/parse/lex.re"
        {
@@ -2156,8 +2182,8 @@ yy328:
                                                goto comment;
                                        }
                                }
-#line 2160 "src/parse/lex.cc"
-yy330:
+#line 2186 "src/parse/lex.cc"
+yy338:
        ++YYCURSOR;
 #line 511 "../src/parse/lex.re"
        {
@@ -2165,61 +2191,61 @@ yy330:
                                        fatal("ambiguous /* found");
                                        goto comment;
                                }
-#line 2169 "src/parse/lex.cc"
-yy332:
+#line 2195 "src/parse/lex.cc"
+yy340:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'i') goto yy325;
+       if (yych != 'i') goto yy333;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'n') goto yy325;
+       if (yych != 'n') goto yy333;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != 'e') goto yy325;
+       if (yych != 'e') goto yy333;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '0') goto yy337;
-       if (yych <= '9') goto yy325;
-       goto yy337;
-yy336:
+       if (yych <= '0') goto yy345;
+       if (yych <= '9') goto yy333;
+       goto yy345;
+yy344:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy337:
+yy345:
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy336;
-               goto yy325;
+               if (yych == '\t') goto yy344;
+               goto yy333;
        } else {
-               if (yych <= ' ') goto yy336;
-               if (yych <= '0') goto yy325;
-               if (yych >= ':') goto yy325;
+               if (yych <= ' ') goto yy344;
+               if (yych <= '0') goto yy333;
+               if (yych >= ':') goto yy333;
                YYCTXMARKER = YYCURSOR;
        }
-yy338:
+yy346:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy338;
+               goto yy346;
        }
        if (yych <= '\f') {
-               if (yych <= 0x08) goto yy325;
-               if (yych <= '\t') goto yy340;
-               if (yych <= '\n') goto yy342;
-               goto yy325;
+               if (yych <= 0x08) goto yy333;
+               if (yych <= '\t') goto yy348;
+               if (yych <= '\n') goto yy350;
+               goto yy333;
        } else {
-               if (yych <= '\r') goto yy344;
-               if (yych != ' ') goto yy325;
+               if (yych <= '\r') goto yy352;
+               if (yych != ' ') goto yy333;
        }
-yy340:
+yy348:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
-               if (yych == '\t') goto yy340;
-               goto yy325;
+               if (yych == '\t') goto yy348;
+               goto yy333;
        } else {
-               if (yych <= ' ') goto yy340;
-               if (yych == '"') goto yy345;
-               goto yy325;
+               if (yych <= ' ') goto yy348;
+               if (yych == '"') goto yy353;
+               goto yy333;
        }
-yy342:
+yy350:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
 #line 516 "../src/parse/lex.re"
@@ -2227,42 +2253,42 @@ yy342:
                                        set_sourceline ();
                                        goto comment;
                                }
-#line 2231 "src/parse/lex.cc"
-yy344:
+#line 2257 "src/parse/lex.cc"
+yy352:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy342;
-       goto yy325;
-yy345:
+       if (yych == '\n') goto yy350;
+       goto yy333;
+yy353:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
-               goto yy345;
+               goto yy353;
        }
-       if (yych <= '\n') goto yy325;
-       if (yych >= '#') goto yy348;
+       if (yych <= '\n') goto yy333;
+       if (yych >= '#') goto yy356;
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych == '\n') goto yy342;
-       if (yych == '\r') goto yy344;
-       goto yy325;
-yy348:
+       if (yych == '\n') goto yy350;
+       if (yych == '\r') goto yy352;
+       goto yy333;
+yy356:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy325;
-       goto yy345;
+       if (yych == '\n') goto yy333;
+       goto yy353;
 }
 #line 536 "../src/parse/lex.re"
 
 
 nextLine:
 
-#line 2261 "src/parse/lex.cc"
+#line 2287 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy353;
+       if (yych == '\n') goto yy361;
        ++YYCURSOR;
 #line 547 "../src/parse/lex.re"
        {  if(cur == eof) {
@@ -2270,8 +2296,8 @@ nextLine:
                }
                goto nextLine;
             }
-#line 2274 "src/parse/lex.cc"
-yy353:
+#line 2300 "src/parse/lex.cc"
+yy361:
        ++YYCURSOR;
 #line 540 "../src/parse/lex.re"
        { if(cur == eof) {
@@ -2281,7 +2307,7 @@ yy353:
                cline++;
                goto scan;
             }
-#line 2285 "src/parse/lex.cc"
+#line 2311 "src/parse/lex.cc"
 }
 #line 552 "../src/parse/lex.re"
 
@@ -2307,41 +2333,41 @@ const RegExp *Scanner::lex_cls(bool neg)
        uint32_t u, l;
 fst:
        
-#line 2311 "src/parse/lex.cc"
+#line 2337 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == ']') goto yy358;
+       if (yych == ']') goto yy366;
 #line 576 "../src/parse/lex.re"
        { l = lex_cls_chr(); goto snd; }
-#line 2319 "src/parse/lex.cc"
-yy358:
+#line 2345 "src/parse/lex.cc"
+yy366:
        ++YYCURSOR;
 #line 575 "../src/parse/lex.re"
        { goto end; }
-#line 2324 "src/parse/lex.cc"
+#line 2350 "src/parse/lex.cc"
 }
 #line 577 "../src/parse/lex.re"
 
 snd:
        
-#line 2330 "src/parse/lex.cc"
+#line 2356 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
-       if (yych == '-') goto yy363;
-yy362:
+       if (yych == '-') goto yy371;
+yy370:
 #line 580 "../src/parse/lex.re"
        { u = l; goto add; }
-#line 2339 "src/parse/lex.cc"
-yy363:
+#line 2365 "src/parse/lex.cc"
+yy371:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych != ']') goto yy365;
+       if (yych != ']') goto yy373;
        YYCURSOR = YYMARKER;
-       goto yy362;
-yy365:
+       goto yy370;
+yy373:
        ++YYCURSOR;
        YYCURSOR -= 1;
 #line 581 "../src/parse/lex.re"
@@ -2353,7 +2379,7 @@ yy365:
                        }
                        goto add;
                }
-#line 2357 "src/parse/lex.cc"
+#line 2383 "src/parse/lex.cc"
 }
 #line 589 "../src/parse/lex.re"
 
@@ -2374,287 +2400,287 @@ uint32_t Scanner::lex_cls_chr()
 {
        tok = cur;
        
-#line 2378 "src/parse/lex.cc"
+#line 2404 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
        if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy371;
-       if (yych == '\\') goto yy373;
+       if (yych == '\n') goto yy379;
+       if (yych == '\\') goto yy381;
        ++YYCURSOR;
 #line 612 "../src/parse/lex.re"
        { return static_cast<uint8_t>(tok[0]); }
-#line 2389 "src/parse/lex.cc"
-yy371:
+#line 2415 "src/parse/lex.cc"
+yy379:
        ++YYCURSOR;
 #line 607 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error"); }
-#line 2394 "src/parse/lex.cc"
-yy373:
+#line 2420 "src/parse/lex.cc"
+yy381:
        ++YYCURSOR;
        if ((yych = (YYCTYPE)*YYCURSOR) <= '`') {
                if (yych <= '7') {
                        if (yych <= ',') {
-                               if (yych != '\n') goto yy375;
+                               if (yych != '\n') goto yy383;
                        } else {
-                               if (yych <= '-') goto yy377;
-                               if (yych <= '/') goto yy375;
-                               if (yych <= '3') goto yy379;
-                               goto yy381;
+                               if (yych <= '-') goto yy385;
+                               if (yych <= '/') goto yy383;
+                               if (yych <= '3') goto yy387;
+                               goto yy389;
                        }
                } else {
                        if (yych <= 'X') {
-                               if (yych == 'U') goto yy382;
-                               if (yych <= 'W') goto yy375;
-                               goto yy384;
+                               if (yych == 'U') goto yy390;
+                               if (yych <= 'W') goto yy383;
+                               goto yy392;
                        } else {
-                               if (yych <= '[') goto yy375;
-                               if (yych <= '\\') goto yy385;
-                               if (yych <= ']') goto yy387;
-                               goto yy375;
+                               if (yych <= '[') goto yy383;
+                               if (yych <= '\\') goto yy393;
+                               if (yych <= ']') goto yy395;
+                               goto yy383;
                        }
                }
        } else {
                if (yych <= 'q') {
                        if (yych <= 'e') {
-                               if (yych <= 'a') goto yy389;
-                               if (yych <= 'b') goto yy391;
-                               goto yy375;
+                               if (yych <= 'a') goto yy397;
+                               if (yych <= 'b') goto yy399;
+                               goto yy383;
                        } else {
-                               if (yych <= 'f') goto yy393;
-                               if (yych == 'n') goto yy395;
-                               goto yy375;
+                               if (yych <= 'f') goto yy401;
+                               if (yych == 'n') goto yy403;
+                               goto yy383;
                        }
                } else {
                        if (yych <= 'u') {
-                               if (yych <= 'r') goto yy397;
-                               if (yych <= 's') goto yy375;
-                               if (yych <= 't') goto yy399;
-                               goto yy384;
+                               if (yych <= 'r') goto yy405;
+                               if (yych <= 's') goto yy383;
+                               if (yych <= 't') goto yy407;
+                               goto yy392;
                        } else {
-                               if (yych <= 'v') goto yy401;
-                               if (yych == 'x') goto yy403;
-                               goto yy375;
+                               if (yych <= 'v') goto yy409;
+                               if (yych == 'x') goto yy411;
+                               goto yy383;
                        }
                }
        }
 #line 610 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
-#line 2445 "src/parse/lex.cc"
-yy375:
+#line 2471 "src/parse/lex.cc"
+yy383:
        ++YYCURSOR;
 #line 625 "../src/parse/lex.re"
        {
                        warn.useless_escape(tline, tok - pos, tok[1]);
                        return static_cast<uint8_t>(tok[1]);
                }
-#line 2453 "src/parse/lex.cc"
-yy377:
+#line 2479 "src/parse/lex.cc"
+yy385:
        ++YYCURSOR;
 #line 623 "../src/parse/lex.re"
        { return static_cast<uint8_t>('-'); }
-#line 2458 "src/parse/lex.cc"
-yy379:
+#line 2484 "src/parse/lex.cc"
+yy387:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy380;
-       if (yych <= '7') goto yy404;
-yy380:
+       if (yych <= '/') goto yy388;
+       if (yych <= '7') goto yy412;
+yy388:
 #line 609 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
-#line 2467 "src/parse/lex.cc"
-yy381:
+#line 2493 "src/parse/lex.cc"
+yy389:
        yych = (YYCTYPE)*++YYCURSOR;
-       goto yy380;
-yy382:
+       goto yy388;
+yy390:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy383;
-               if (yych <= '9') goto yy406;
+               if (yych <= '/') goto yy391;
+               if (yych <= '9') goto yy414;
        } else {
-               if (yych <= 'F') goto yy406;
-               if (yych <= '`') goto yy383;
-               if (yych <= 'f') goto yy406;
+               if (yych <= 'F') goto yy414;
+               if (yych <= '`') goto yy391;
+               if (yych <= 'f') goto yy414;
        }
-yy383:
+yy391:
 #line 608 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
-#line 2485 "src/parse/lex.cc"
-yy384:
+#line 2511 "src/parse/lex.cc"
+yy392:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy383;
-               if (yych <= '9') goto yy407;
-               goto yy383;
+               if (yych <= '/') goto yy391;
+               if (yych <= '9') goto yy415;
+               goto yy391;
        } else {
-               if (yych <= 'F') goto yy407;
-               if (yych <= '`') goto yy383;
-               if (yych <= 'f') goto yy407;
-               goto yy383;
+               if (yych <= 'F') goto yy415;
+               if (yych <= '`') goto yy391;
+               if (yych <= 'f') goto yy415;
+               goto yy391;
        }
-yy385:
+yy393:
        ++YYCURSOR;
 #line 622 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 2503 "src/parse/lex.cc"
-yy387:
+#line 2529 "src/parse/lex.cc"
+yy395:
        ++YYCURSOR;
 #line 624 "../src/parse/lex.re"
        { return static_cast<uint8_t>(']'); }
-#line 2508 "src/parse/lex.cc"
-yy389:
+#line 2534 "src/parse/lex.cc"
+yy397:
        ++YYCURSOR;
 #line 615 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 2513 "src/parse/lex.cc"
-yy391:
+#line 2539 "src/parse/lex.cc"
+yy399:
        ++YYCURSOR;
 #line 616 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 2518 "src/parse/lex.cc"
-yy393:
+#line 2544 "src/parse/lex.cc"
+yy401:
        ++YYCURSOR;
 #line 617 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 2523 "src/parse/lex.cc"
-yy395:
+#line 2549 "src/parse/lex.cc"
+yy403:
        ++YYCURSOR;
 #line 618 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 2528 "src/parse/lex.cc"
-yy397:
+#line 2554 "src/parse/lex.cc"
+yy405:
        ++YYCURSOR;
 #line 619 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 2533 "src/parse/lex.cc"
-yy399:
+#line 2559 "src/parse/lex.cc"
+yy407:
        ++YYCURSOR;
 #line 620 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 2538 "src/parse/lex.cc"
-yy401:
+#line 2564 "src/parse/lex.cc"
+yy409:
        ++YYCURSOR;
 #line 621 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 2543 "src/parse/lex.cc"
-yy403:
+#line 2569 "src/parse/lex.cc"
+yy411:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy383;
-               if (yych <= '9') goto yy408;
-               goto yy383;
+               if (yych <= '/') goto yy391;
+               if (yych <= '9') goto yy416;
+               goto yy391;
        } else {
-               if (yych <= 'F') goto yy408;
-               if (yych <= '`') goto yy383;
-               if (yych <= 'f') goto yy408;
-               goto yy383;
+               if (yych <= 'F') goto yy416;
+               if (yych <= '`') goto yy391;
+               if (yych <= 'f') goto yy416;
+               goto yy391;
        }
-yy404:
+yy412:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '/') goto yy405;
-       if (yych <= '7') goto yy409;
-yy405:
+       if (yych <= '/') goto yy413;
+       if (yych <= '7') goto yy417;
+yy413:
        YYCURSOR = YYMARKER;
        if (yyaccept == 0) {
-               goto yy380;
+               goto yy388;
        } else {
-               goto yy383;
+               goto yy391;
        }
-yy406:
+yy414:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy411;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy419;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy411;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy411;
-               goto yy405;
+               if (yych <= 'F') goto yy419;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy419;
+               goto yy413;
        }
-yy407:
+yy415:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy412;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy420;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy412;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy412;
-               goto yy405;
+               if (yych <= 'F') goto yy420;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy420;
+               goto yy413;
        }
-yy408:
+yy416:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy413;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy421;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy413;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy413;
-               goto yy405;
+               if (yych <= 'F') goto yy421;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy421;
+               goto yy413;
        }
-yy409:
+yy417:
        ++YYCURSOR;
 #line 614 "../src/parse/lex.re"
        { return unesc_oct(tok, cur); }
-#line 2608 "src/parse/lex.cc"
-yy411:
+#line 2634 "src/parse/lex.cc"
+yy419:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy415;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy423;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy415;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy415;
-               goto yy405;
+               if (yych <= 'F') goto yy423;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy423;
+               goto yy413;
        }
-yy412:
+yy420:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy408;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy416;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy408;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy408;
-               goto yy405;
+               if (yych <= 'F') goto yy416;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy416;
+               goto yy413;
        }
-yy413:
+yy421:
        ++YYCURSOR;
 #line 613 "../src/parse/lex.re"
        { return unesc_hex(tok, cur); }
-#line 2637 "src/parse/lex.cc"
-yy415:
+#line 2663 "src/parse/lex.cc"
+yy423:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych >= ':') goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych >= ':') goto yy413;
        } else {
-               if (yych <= 'F') goto yy416;
-               if (yych <= '`') goto yy405;
-               if (yych >= 'g') goto yy405;
+               if (yych <= 'F') goto yy424;
+               if (yych <= '`') goto yy413;
+               if (yych >= 'g') goto yy413;
        }
-yy416:
+yy424:
        ++YYCURSOR;
        if ((yych = (YYCTYPE)*YYCURSOR) <= '@') {
-               if (yych <= '/') goto yy405;
-               if (yych <= '9') goto yy407;
-               goto yy405;
+               if (yych <= '/') goto yy413;
+               if (yych <= '9') goto yy415;
+               goto yy413;
        } else {
-               if (yych <= 'F') goto yy407;
-               if (yych <= '`') goto yy405;
-               if (yych <= 'f') goto yy407;
-               goto yy405;
+               if (yych <= 'F') goto yy415;
+               if (yych <= '`') goto yy413;
+               if (yych <= 'f') goto yy415;
+               goto yy413;
        }
 }
 #line 629 "../src/parse/lex.re"
@@ -2666,75 +2692,75 @@ uint32_t Scanner::lex_str_chr(char quote, bool &end)
        end = false;
        tok = cur;
        
-#line 2670 "src/parse/lex.cc"
+#line 2696 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
        if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy421;
-       if (yych == '\\') goto yy423;
+       if (yych == '\n') goto yy429;
+       if (yych == '\\') goto yy431;
        ++YYCURSOR;
 #line 642 "../src/parse/lex.re"
        {
                        end = tok[0] == quote;
                        return static_cast<uint8_t>(tok[0]);
                }
-#line 2684 "src/parse/lex.cc"
-yy421:
+#line 2710 "src/parse/lex.cc"
+yy429:
        ++YYCURSOR;
 #line 637 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error"); }
-#line 2689 "src/parse/lex.cc"
-yy423:
+#line 2715 "src/parse/lex.cc"
+yy431:
        ++YYCURSOR;
        if ((yych = (YYCTYPE)*YYCURSOR) <= 'a') {
                if (yych <= 'T') {
                        if (yych <= '/') {
-                               if (yych != '\n') goto yy425;
+                               if (yych != '\n') goto yy433;
                        } else {
-                               if (yych <= '3') goto yy427;
-                               if (yych <= '7') goto yy429;
-                               goto yy425;
+                               if (yych <= '3') goto yy435;
+                               if (yych <= '7') goto yy437;
+                               goto yy433;
                        }
                } else {
                        if (yych <= 'X') {
-                               if (yych <= 'U') goto yy430;
-                               if (yych <= 'W') goto yy425;
-                               goto yy432;
+                               if (yych <= 'U') goto yy438;
+                               if (yych <= 'W') goto yy433;
+                               goto yy440;
                        } else {
-                               if (yych == '\\') goto yy433;
-                               if (yych <= '`') goto yy425;
-                               goto yy435;
+                               if (yych == '\\') goto yy441;
+                               if (yych <= '`') goto yy433;
+                               goto yy443;
                        }
                }
        } else {
                if (yych <= 'r') {
                        if (yych <= 'f') {
-                               if (yych <= 'b') goto yy437;
-                               if (yych <= 'e') goto yy425;
-                               goto yy439;
+                               if (yych <= 'b') goto yy445;
+                               if (yych <= 'e') goto yy433;
+                               goto yy447;
                        } else {
-                               if (yych == 'n') goto yy441;
-                               if (yych <= 'q') goto yy425;
-                               goto yy443;
+                               if (yych == 'n') goto yy449;
+                               if (yych <= 'q') goto yy433;
+                               goto yy451;
                        }
                } else {
                        if (yych <= 'u') {
-                               if (yych <= 's') goto yy425;
-                               if (yych <= 't') goto yy445;
-                               goto yy432;
+                               if (yych <= 's') goto yy433;
+                               if (yych <= 't') goto yy453;
+                               goto yy440;
                        } else {
-                               if (yych <= 'v') goto yy447;
-                               if (yych == 'x') goto yy449;
-                               goto yy425;
+                               if (yych <= 'v') goto yy455;
+                               if (yych == 'x') goto yy457;
+                               goto yy433;
                        }
                }
        }
 #line 640 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
-#line 2737 "src/parse/lex.cc"
-yy425:
+#line 2763 "src/parse/lex.cc"
+yy433:
        ++YYCURSOR;
 #line 656 "../src/parse/lex.re"
        {
@@ -2743,202 +2769,202 @@ yy425:
                        }
                        return static_cast<uint8_t>(tok[1]);
                }
-#line 2747 "src/parse/lex.cc"
-yy427:
+#line 2773 "src/parse/lex.cc"
+yy435:
        yyaccept = 0;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych <= '/') goto yy428;
-       if (yych <= '7') goto yy450;
-yy428:
+       if (yych <= '/') goto yy436;
+       if (yych <= '7') goto yy458;
+yy436:
 #line 639 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
-#line 2756 "src/parse/lex.cc"
-yy429:
+#line 2782 "src/parse/lex.cc"
+yy437:
        yych = (YYCTYPE)*++YYCURSOR;
-       goto yy428;
-yy430:
+       goto yy436;
+yy438:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy431;
-               if (yych <= '9') goto yy452;
+               if (yych <= '/') goto yy439;
+               if (yych <= '9') goto yy460;
        } else {
-               if (yych <= 'F') goto yy452;
-               if (yych <= '`') goto yy431;
-               if (yych <= 'f') goto yy452;
+               if (yych <= 'F') goto yy460;
+               if (yych <= '`') goto yy439;
+               if (yych <= 'f') goto yy460;
        }
-yy431:
+yy439:
 #line 638 "../src/parse/lex.re"
        { fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
-#line 2774 "src/parse/lex.cc"
-yy432:
+#line 2800 "src/parse/lex.cc"
+yy440:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy431;
-               if (yych <= '9') goto yy453;
-               goto yy431;
+               if (yych <= '/') goto yy439;
+               if (yych <= '9') goto yy461;
+               goto yy439;
        } else {
-               if (yych <= 'F') goto yy453;
-               if (yych <= '`') goto yy431;
-               if (yych <= 'f') goto yy453;
-               goto yy431;
+               if (yych <= 'F') goto yy461;
+               if (yych <= '`') goto yy439;
+               if (yych <= 'f') goto yy461;
+               goto yy439;
        }
-yy433:
+yy441:
        ++YYCURSOR;
 #line 655 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\\'); }
-#line 2792 "src/parse/lex.cc"
-yy435:
+#line 2818 "src/parse/lex.cc"
+yy443:
        ++YYCURSOR;
 #line 648 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\a'); }
-#line 2797 "src/parse/lex.cc"
-yy437:
+#line 2823 "src/parse/lex.cc"
+yy445:
        ++YYCURSOR;
 #line 649 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\b'); }
-#line 2802 "src/parse/lex.cc"
-yy439:
+#line 2828 "src/parse/lex.cc"
+yy447:
        ++YYCURSOR;
 #line 650 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\f'); }
-#line 2807 "src/parse/lex.cc"
-yy441:
+#line 2833 "src/parse/lex.cc"
+yy449:
        ++YYCURSOR;
 #line 651 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\n'); }
-#line 2812 "src/parse/lex.cc"
-yy443:
+#line 2838 "src/parse/lex.cc"
+yy451:
        ++YYCURSOR;
 #line 652 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\r'); }
-#line 2817 "src/parse/lex.cc"
-yy445:
+#line 2843 "src/parse/lex.cc"
+yy453:
        ++YYCURSOR;
 #line 653 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\t'); }
-#line 2822 "src/parse/lex.cc"
-yy447:
+#line 2848 "src/parse/lex.cc"
+yy455:
        ++YYCURSOR;
 #line 654 "../src/parse/lex.re"
        { return static_cast<uint8_t>('\v'); }
-#line 2827 "src/parse/lex.cc"
-yy449:
+#line 2853 "src/parse/lex.cc"
+yy457:
        yyaccept = 1;
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
-               if (yych <= '/') goto yy431;
-               if (yych <= '9') goto yy454;
-               goto yy431;
+               if (yych <= '/') goto yy439;
+               if (yych <= '9') goto yy462;
+               goto yy439;
        } else {
-               if (yych <= 'F') goto yy454;
-               if (yych <= '`') goto yy431;
-               if (yych <= 'f') goto yy454;
-               goto yy431;
+               if (yych <= 'F') goto yy462;
+               if (yych <= '`') goto yy439;
+               if (yych <= 'f') goto yy462;
+               goto yy439;
        }
-yy450:
+yy458:
        yych = (YYCTYPE)*++YYCURSOR;
-       if (yych <= '/') goto yy451;
-       if (yych <= '7') goto yy455;
-yy451:
+       if (yych <= '/') goto yy459;
+       if (yych <= '7') goto yy463;
+yy459:
        YYCURSOR = YYMARKER;
        if (yyaccept == 0) {
-               goto yy428;
+               goto yy436;
        } else {
-               goto yy431;
+               goto yy439;
        }
-yy452:
+yy460:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy457;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy465;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy457;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy457;
-               goto yy451;
+               if (yych <= 'F') goto yy465;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy465;
+               goto yy459;
        }
-yy453:
+yy461:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy458;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy466;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy458;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy458;
-               goto yy451;
+               if (yych <= 'F') goto yy466;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy466;
+               goto yy459;
        }
-yy454:
+yy462:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy459;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy467;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy459;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy459;
-               goto yy451;
+               if (yych <= 'F') goto yy467;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy467;
+               goto yy459;
        }
-yy455:
+yy463:
        ++YYCURSOR;
 #line 647 "../src/parse/lex.re"
        { return unesc_oct(tok, cur); }
-#line 2892 "src/parse/lex.cc"
-yy457:
+#line 2918 "src/parse/lex.cc"
+yy465:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy461;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy469;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy461;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy461;
-               goto yy451;
+               if (yych <= 'F') goto yy469;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy469;
+               goto yy459;
        }
-yy458:
+yy466:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy454;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy462;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy454;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy454;
-               goto yy451;
+               if (yych <= 'F') goto yy462;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy462;
+               goto yy459;
        }
-yy459:
+yy467:
        ++YYCURSOR;
 #line 646 "../src/parse/lex.re"
        { return unesc_hex(tok, cur); }
-#line 2921 "src/parse/lex.cc"
-yy461:
+#line 2947 "src/parse/lex.cc"
+yy469:
        yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych >= ':') goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych >= ':') goto yy459;
        } else {
-               if (yych <= 'F') goto yy462;
-               if (yych <= '`') goto yy451;
-               if (yych >= 'g') goto yy451;
+               if (yych <= 'F') goto yy470;
+               if (yych <= '`') goto yy459;
+               if (yych >= 'g') goto yy459;
        }
-yy462:
+yy470:
        ++YYCURSOR;
        if ((yych = (YYCTYPE)*YYCURSOR) <= '@') {
-               if (yych <= '/') goto yy451;
-               if (yych <= '9') goto yy453;
-               goto yy451;
+               if (yych <= '/') goto yy459;
+               if (yych <= '9') goto yy461;
+               goto yy459;
        } else {
-               if (yych <= 'F') goto yy453;
-               if (yych <= '`') goto yy451;
-               if (yych <= 'f') goto yy453;
-               goto yy451;
+               if (yych <= 'F') goto yy461;
+               if (yych <= '`') goto yy459;
+               if (yych <= 'f') goto yy461;
+               goto yy459;
        }
 }
 #line 662 "../src/parse/lex.re"
@@ -2962,7 +2988,7 @@ void Scanner::set_sourceline ()
 sourceline:
        tok = cur;
 
-#line 2966 "src/parse/lex.cc"
+#line 2992 "src/parse/lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -3002,21 +3028,21 @@ sourceline:
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
        yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
-               if (yych == '\n') goto yy467;
+               if (yych == '\n') goto yy475;
        } else {
-               if (yych <= '"') goto yy469;
-               if (yych <= '0') goto yy465;
-               if (yych <= '9') goto yy470;
+               if (yych <= '"') goto yy477;
+               if (yych <= '0') goto yy473;
+               if (yych <= '9') goto yy478;
        }
-yy465:
+yy473:
        ++YYCURSOR;
-yy466:
+yy474:
 #line 705 "../src/parse/lex.re"
        {
                                        goto sourceline;
                                }
-#line 3019 "src/parse/lex.cc"
-yy467:
+#line 3045 "src/parse/lex.cc"
+yy475:
        ++YYCURSOR;
 #line 693 "../src/parse/lex.re"
        {
@@ -3031,17 +3057,17 @@ yy467:
                                        tok = cur;
                                        return; 
                                }
-#line 3035 "src/parse/lex.cc"
-yy469:
+#line 3061 "src/parse/lex.cc"
+yy477:
        yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
-       if (yych == '\n') goto yy466;
-       goto yy474;
-yy470:
+       if (yych == '\n') goto yy474;
+       goto yy482;
+yy478:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
-               goto yy470;
+               goto yy478;
        }
 #line 682 "../src/parse/lex.re"
        {
@@ -3051,35 +3077,35 @@ yy470:
                                        }
                                        goto sourceline; 
                                }
-#line 3055 "src/parse/lex.cc"
-yy473:
+#line 3081 "src/parse/lex.cc"
+yy481:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-yy474:
+yy482:
        if (yybm[0+yych] & 128) {
-               goto yy473;
+               goto yy481;
        }
-       if (yych <= '\n') goto yy475;
-       if (yych <= '"') goto yy476;
-       goto yy478;
-yy475:
+       if (yych <= '\n') goto yy483;
+       if (yych <= '"') goto yy484;
+       goto yy486;
+yy483:
        YYCURSOR = YYMARKER;
-       goto yy466;
-yy476:
+       goto yy474;
+yy484:
        ++YYCURSOR;
 #line 689 "../src/parse/lex.re"
        {
                                        escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes
                                        goto sourceline; 
                                }
-#line 3077 "src/parse/lex.cc"
-yy478:
+#line 3103 "src/parse/lex.cc"
+yy486:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
        yych = (YYCTYPE)*YYCURSOR;
-       if (yych == '\n') goto yy475;
-       goto yy473;
+       if (yych == '\n') goto yy483;
+       goto yy481;
 }
 #line 708 "../src/parse/lex.re"
 
index d49d8f31d780d561c7364f4a50578856e8c2e855..062b77dbc9807b0856defe8d73a7868215eab4e8 100644 (file)
@@ -390,13 +390,13 @@ void output_tags(std::ostream &o, const ConfTags &conf,
                tag = tags.begin(),
                end = tags.end();
        for (;tag != end;) {
-               std::string line = conf.line;
-               strrreplace(line, "@@", *tag);
-               o << line;
+               std::string fmt = conf.format;
+               strrreplace(fmt, "@@", *tag);
+               o << fmt;
                if (++tag == end) {
                        break;
                }
-               o << conf.sep;
+               o << conf.separator;
        }
 }
 
index 497f6313308da3c104bbd2e801664656ab33e6eb..608d7f8ebc439badb0a7dfa1f4911f93b92e9b79 100644 (file)
@@ -20,9 +20,9 @@ namespace re2c
 
 struct ConfTags
 {
-       std::string line;
-       std::string sep;
-       ConfTags(): line("long @@;"), sep("") {}
+       std::string format;
+       std::string separator;
+       ConfTags(): format("long @@;"), separator("") {}
 };
 
 struct OutputFragment
index d2771a2752f155cf4c344bf7e31f73151caf836b..c9dbf400cd08653636239fb416325d4fcd78cb53 100644 (file)
@@ -198,10 +198,10 @@ void Scanner::lex_tags()
 {
        ConfTags conf;
        for (;;) {/*!re2c
-               *      { fatal("unrecognized configuration"); }
+               * { fatal("unrecognized configuration"); }
 
-               "line" { conf.line = lex_conf_string(); continue; }
-               "sep"  { conf.sep  = lex_conf_string(); continue; }
+               "format"    { conf.format    = lex_conf_string(); continue; }
+               "separator" { conf.separator = lex_conf_string(); continue; }
 
                space+ { continue; }
                eol    { ++cline; continue; }
index 4576df3c5a5e51d6c88f3301277a6e65c1e3dea2..2a53d9130ae3dbb744c2b7bbe05fa3001628a6bf 100644 (file)
@@ -22,12 +22,10 @@ static void lex(const char *s)
 #define ZZ_CTX(tag, dist)  tag = basectx + dist
 #define ZZ_DIST()          (s - basectx)
     const char *marker, *basectx, *p1, *p2, *p3;
+    long zz_0p1;long zz_0p2;long zz_0p3;
     
 {
        char yych;
-       long zz_0p1;
-       long zz_0p2;
-       long zz_0p3;
        YYBACKUPCTX ();
        yych = YYPEEK ();
        switch (yych) {
index b5f0a140f329b7f5b40074c8dbbc3dc6f5188296..4f58a3c84c2e2eec5139b321b053c2446a68216e 100644 (file)
@@ -21,6 +21,7 @@ static void lex(const char *s)
 #define ZZ_CTX(tag, dist)  tag = basectx + dist
 #define ZZ_DIST()          (s - basectx)
     const char *marker, *basectx, *p1, *p2, *p3;
+    /*!tags:re2c*/
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 67f35146d0dc34dca7bafc6434dada47ae0546ec..3c7eb852d89148b78374ee3b58e2dd6951b0e759 100644 (file)
@@ -14,12 +14,10 @@ static inline unsigned parse_oct(const char *s, const char *e)
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
+    long zz_0p1;long zz_0p2;long zz_0p3;
     
 {
        char yych;
-       long zz_0p1;
-       long zz_0p2;
-       long zz_0p3;
        YYCTXMARKER = YYCURSOR;
        yych = *YYCURSOR;
        switch (yych) {
index a5c7a81562e81895b815cdbc826f842dac81a303..a33553a8f38c8b18488b7fc9bc7b179813b31090 100644 (file)
@@ -13,6 +13,7 @@ static inline unsigned parse_oct(const char *s, const char *e)
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
+    /*!tags:re2c*/
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
index 2a53d9130ae3dbb744c2b7bbe05fa3001628a6bf..0725e30b41e6a3ea3f3ad2c14db86523ae65f290 100644 (file)
@@ -1,6 +1,6 @@
 /* Generated by re2c */
-#include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 
 static inline unsigned parse_oct(const char *s, const char *e)
 {
@@ -11,24 +11,78 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
-static void lex(const char *s)
+#define YYMAXFILL 16
+
+
+/* at least maximal lexeme length plus YYMAXFILL */
+static const size_t SIZE = YYMAXFILL * 2;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    long yyt1p1;long yyt1p2;long yyt1p3;
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        , yyt1p1(0), yyt1p2(0), yyt1p3(0)
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            printf("\nfill: underflow - 1\n");
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            printf("\nfill: underflow - 2\n");
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in)
 {
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    long zz_0p1;long zz_0p2;long zz_0p3;
+#define YYPEEK()           *in.cur
+#define YYSKIP()           ++in.cur
+#define YYBACKUP()         in.mar = in.cur
+#define YYRESTORE()        in.cur = in.mar
+#define YYBACKUPCTX()      in.tok = in.cur
+#define YYRESTORECTX(dist) in.cur = in.tok + dist
+#define YYTAG(tag, dist)   tag = in.tok + dist
+#define YYDIST()           in.cur - in.tok
+#define YYLESSTHAN(n)      in.lim - in.cur < n
+loop:
+    in.tok = in.cur;
+    const char *p1, *p2, *p3;
     
 {
        char yych;
        YYBACKUPCTX ();
+       if (YYLESSTHAN (16)) if (!in.fill(16)) return false;
        yych = YYPEEK ();
        switch (yych) {
+       case 0x00:      goto yy2;
        case '0':
        case '1':
        case '2':
@@ -38,21 +92,24 @@ static void lex(const char *s)
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
+       case '9':       goto yy6;
+       default:        goto yy4;
        }
 yy2:
        YYSKIP ();
-yy3:
-       { printf("error\n"); return; }
+       { return YYMAXFILL == in.lim - in.tok; }
 yy4:
        YYSKIP ();
+yy5:
+       { return false; }
+yy6:
+       YYSKIP ();
        YYBACKUP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
-               goto yy5;
+               in.yyt1p1 = YYDIST();
+               goto yy7;
        case '0':
        case '1':
        case '2':
@@ -62,10 +119,10 @@ yy4:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
+       case '9':       goto yy9;
+       default:        goto yy5;
        }
-yy5:
+yy7:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -78,19 +135,19 @@ yy5:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
+       case '9':       goto yy10;
+       default:        goto yy8;
        }
-yy6:
+yy8:
        YYRESTORE ();
-       goto yy3;
-yy7:
+       goto yy5;
+yy9:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
-               goto yy5;
+               in.yyt1p1 = YYDIST();
+               goto yy7;
        case '0':
        case '1':
        case '2':
@@ -100,16 +157,16 @@ yy7:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
+       case '9':       goto yy11;
+       default:        goto yy8;
        }
-yy8:
+yy10:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
-               goto yy10;
+               in.yyt1p2 = YYDIST();
+               goto yy12;
        case '0':
        case '1':
        case '2':
@@ -119,19 +176,19 @@ yy8:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
+       case '9':       goto yy13;
+       default:        goto yy8;
        }
-yy9:
+yy11:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
-               goto yy5;
-       default:        goto yy6;
+               in.yyt1p1 = YYDIST();
+               goto yy7;
+       default:        goto yy8;
        }
-yy10:
+yy12:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -144,16 +201,16 @@ yy10:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
+       case '9':       goto yy14;
+       default:        goto yy8;
        }
-yy11:
+yy13:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
-               goto yy10;
+               in.yyt1p2 = YYDIST();
+               goto yy12;
        case '0':
        case '1':
        case '2':
@@ -163,16 +220,16 @@ yy11:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
+       case '9':       goto yy15;
+       default:        goto yy8;
        }
-yy12:
+yy14:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
-               goto yy14;
+               in.yyt1p3 = YYDIST();
+               goto yy16;
        case '0':
        case '1':
        case '2':
@@ -182,19 +239,19 @@ yy12:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
+       case '9':       goto yy17;
+       default:        goto yy8;
        }
-yy13:
+yy15:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
-               goto yy10;
-       default:        goto yy6;
+               in.yyt1p2 = YYDIST();
+               goto yy12;
+       default:        goto yy8;
        }
-yy14:
+yy16:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
@@ -207,16 +264,16 @@ yy14:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
+       case '9':       goto yy18;
+       default:        goto yy8;
        }
-yy15:
+yy17:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
-               goto yy14;
+               in.yyt1p3 = YYDIST();
+               goto yy16;
        case '0':
        case '1':
        case '2':
@@ -226,12 +283,14 @@ yy15:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
+       case '9':       goto yy19;
+       default:        goto yy8;
        }
-yy16:
+yy18:
        YYSKIP ();
-       switch ((yych = YYPEEK ())) {
+       yych = YYPEEK ();
+       switch (yych) {
+       case '\n':      goto yy20;
        case '0':
        case '1':
        case '2':
@@ -241,34 +300,36 @@ yy16:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
+       case '9':       goto yy22;
+       default:        goto yy8;
        }
-yy17:
-       ZZ_CTX(p3, zz_0p3);
-       ZZ_CTX(p2, zz_0p2);
-       ZZ_CTX(p1, zz_0p1);
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-yy18:
+yy19:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
-               goto yy14;
-       default:        goto yy6;
+               in.yyt1p3 = YYDIST();
+               goto yy16;
+       default:        goto yy8;
        }
-yy19:
+yy20:
+       YYSKIP ();
+       YYTAG(p3, in.yyt1p3);
+       YYTAG(p2, in.yyt1p2);
+       YYTAG(p1, in.yyt1p1);
+       {
+            printf("> %u.%u.%u.%u\n",
+                parse_oct(in.tok, p1),
+                parse_oct(p1 + 1, p2),
+                parse_oct(p2 + 1, p3),
+                parse_oct(p3 + 1, in.cur - 1));
+            goto loop;
+        }
+yy22:
        YYSKIP ();
        yych = YYPEEK ();
        switch (yych) {
+       case '\n':      goto yy20;
        case '0':
        case '1':
        case '2':
@@ -278,21 +339,25 @@ yy19:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
+       case '9':       goto yy23;
+       default:        goto yy8;
        }
-yy20:
+yy23:
        YYSKIP ();
-       yych = YYPEEK ();
-       goto yy17;
+       switch ((yych = YYPEEK ())) {
+       case '\n':      goto yy20;
+       default:        goto yy8;
+       }
 }
 
 }
 
-int main(int argc, char **argv)
+int main()
 {
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
+    input_t in;
+    if (!lex(in)) {
+        printf("error\n");
     }
+
     return 0;
 }
index 30768df4608de3aa0143783becc3566e6da3eeea..17dcc3c267d3f19e5692047f0e9f02f2de7810ba 100644 (file)
@@ -1,5 +1,5 @@
-#include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 
 static inline unsigned parse_oct(const char *s, const char *e)
 {
@@ -10,48 +10,101 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
+/*!max:re2c*/
+
+/* at least maximal lexeme length plus YYMAXFILL */
+static const size_t SIZE = YYMAXFILL * 2;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
     /*!tags:re2c*/
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        /*!tags:re2c format = ", @@(0)"; */
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            printf("\nfill: underflow - 1\n");
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            printf("\nfill: underflow - 2\n");
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in)
+{
+#define YYPEEK()           *in.cur
+#define YYSKIP()           ++in.cur
+#define YYBACKUP()         in.mar = in.cur
+#define YYRESTORE()        in.cur = in.mar
+#define YYBACKUPCTX()      in.tok = in.cur
+#define YYRESTORECTX(dist) in.cur = in.tok + dist
+#define YYTAG(tag, dist)   tag = in.tok + dist
+#define YYDIST()           in.cur - in.tok
+#define YYLESSTHAN(n)      in.lim - in.cur < n
+loop:
+    in.tok = in.cur;
+    const char *p1, *p2, *p3;
     /*!re2c
         re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-        re2c:define:YYTAG = "ZZ_CTX";
-        re2c:define:YYDIST = "ZZ_DIST";
-        re2c:tags:prefix = "zz_";
+        re2c:define:YYFILL = "if (!in.fill(@@)) return false;";
+        re2c:define:YYFILL:naked = 1;
+        re2c:tags:expression = "in.@@";
 
+        end = "\x00";
         oct = [0-9]{1,3};
         d   = ".";
 
-        * { printf("error\n"); return; }
-
+        *   { return false; }
+        end { return YYMAXFILL == in.lim - in.tok; }
           oct @p1
         d oct @p2
         d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
+        d oct [\n] {
+            printf("%u.%u.%u.%u\n",
+                parse_oct(in.tok, p1),
                 parse_oct(p1 + 1, p2),
                 parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
+                parse_oct(p3 + 1, in.cur - 1));
+            goto loop;
         }
     */
 }
 
-int main(int argc, char **argv)
+int main()
 {
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
+    input_t in;
+    if (!lex(in)) {
+        printf("error\n");
     }
+
     return 0;
 }
index 3c7eb852d89148b78374ee3b58e2dd6951b0e759..6f64700e3c968d9733eff7c741d7552b0d047368 100644 (file)
@@ -1,6 +1,6 @@
 /* Generated by re2c */
-#include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 
 static inline unsigned parse_oct(const char *s, const char *e)
 {
@@ -11,16 +11,69 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
-static void lex(const char *YYCURSOR)
+#define YYMAXFILL 16
+
+
+/* at least maximal lexeme length plus YYMAXFILL */
+static const size_t SIZE = YYMAXFILL * 2;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
+    long yyt1p1;long yyt1p2;long yyt1p3;
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        , yyt1p1(0), yyt1p2(0), yyt1p3(0)
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            printf("\nfill: underflow - 1\n");
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            printf("\nfill: underflow - 2\n");
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in)
 {
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    long zz_0p1;long zz_0p2;long zz_0p3;
+loop:
+    in.tok = in.cur;
+    const char *p1, *p2, *p3;
     
 {
        char yych;
-       YYCTXMARKER = YYCURSOR;
-       yych = *YYCURSOR;
+       in.tok = in.cur;
+       if ((in.lim - in.cur) < 16) if (!in.fill(16)) return false;
+       yych = *in.cur;
        switch (yych) {
+       case 0x00:      goto yy2;
        case '0':
        case '1':
        case '2':
@@ -30,19 +83,22 @@ static void lex(const char *YYCURSOR)
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
+       case '9':       goto yy6;
+       default:        goto yy4;
        }
 yy2:
-       ++YYCURSOR;
-yy3:
-       { printf("error\n"); return; }
+       ++in.cur;
+       { return YYMAXFILL == in.lim - in.tok; }
 yy4:
-       yych = *(YYMARKER = ++YYCURSOR);
+       ++in.cur;
+yy5:
+       { return false; }
+yy6:
+       yych = *(in.mar = ++in.cur);
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
+               in.yyt1p1 = (in.cur - in.tok);
+               goto yy7;
        case '0':
        case '1':
        case '2':
@@ -52,11 +108,11 @@ yy4:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
+       case '9':       goto yy9;
+       default:        goto yy5;
        }
-yy5:
-       yych = *++YYCURSOR;
+yy7:
+       yych = *++in.cur;
        switch (yych) {
        case '0':
        case '1':
@@ -67,18 +123,18 @@ yy5:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
+       case '9':       goto yy10;
+       default:        goto yy8;
        }
-yy6:
-       YYCURSOR = YYMARKER;
-       goto yy3;
-yy7:
-       yych = *++YYCURSOR;
+yy8:
+       in.cur = in.mar;
+       goto yy5;
+yy9:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
+               in.yyt1p1 = (in.cur - in.tok);
+               goto yy7;
        case '0':
        case '1':
        case '2':
@@ -88,15 +144,15 @@ yy7:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
+       case '9':       goto yy11;
+       default:        goto yy8;
        }
-yy8:
-       yych = *++YYCURSOR;
+yy10:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
+               in.yyt1p2 = (in.cur - in.tok);
+               goto yy12;
        case '0':
        case '1':
        case '2':
@@ -106,19 +162,19 @@ yy8:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
+       case '9':       goto yy13;
+       default:        goto yy8;
        }
-yy9:
-       yych = *++YYCURSOR;
+yy11:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       default:        goto yy6;
+               in.yyt1p1 = (in.cur - in.tok);
+               goto yy7;
+       default:        goto yy8;
        }
-yy10:
-       yych = *++YYCURSOR;
+yy12:
+       yych = *++in.cur;
        switch (yych) {
        case '0':
        case '1':
@@ -129,15 +185,15 @@ yy10:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
+       case '9':       goto yy14;
+       default:        goto yy8;
        }
-yy11:
-       yych = *++YYCURSOR;
+yy13:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
+               in.yyt1p2 = (in.cur - in.tok);
+               goto yy12;
        case '0':
        case '1':
        case '2':
@@ -147,15 +203,15 @@ yy11:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
+       case '9':       goto yy15;
+       default:        goto yy8;
        }
-yy12:
-       yych = *++YYCURSOR;
+yy14:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
+               in.yyt1p3 = (in.cur - in.tok);
+               goto yy16;
        case '0':
        case '1':
        case '2':
@@ -165,19 +221,19 @@ yy12:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
+       case '9':       goto yy17;
+       default:        goto yy8;
        }
-yy13:
-       yych = *++YYCURSOR;
+yy15:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       default:        goto yy6;
+               in.yyt1p2 = (in.cur - in.tok);
+               goto yy12;
+       default:        goto yy8;
        }
-yy14:
-       yych = *++YYCURSOR;
+yy16:
+       yych = *++in.cur;
        switch (yych) {
        case '0':
        case '1':
@@ -188,15 +244,15 @@ yy14:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
+       case '9':       goto yy18;
+       default:        goto yy8;
        }
-yy15:
-       yych = *++YYCURSOR;
+yy17:
+       yych = *++in.cur;
        switch (yych) {
        case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
+               in.yyt1p3 = (in.cur - in.tok);
+               goto yy16;
        case '0':
        case '1':
        case '2':
@@ -206,12 +262,13 @@ yy15:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
+       case '9':       goto yy19;
+       default:        goto yy8;
        }
-yy16:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
+yy18:
+       yych = *++in.cur;
+       switch (yych) {
+       case '\n':      goto yy20;
        case '0':
        case '1':
        case '2':
@@ -221,32 +278,34 @@ yy16:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
+       case '9':       goto yy22;
+       default:        goto yy8;
        }
-yy17:
-       p3 = YYCTXMARKER + zz_0p3;
-       p2 = YYCTXMARKER + zz_0p2;
-       p1 = YYCTXMARKER + zz_0p1;
+yy19:
+       yych = *++in.cur;
+       switch (yych) {
+       case '.':
+               in.yyt1p3 = (in.cur - in.tok);
+               goto yy16;
+       default:        goto yy8;
+       }
+yy20:
+       ++in.cur;
+       p3 = in.tok + in.yyt1p3;
+       p2 = in.tok + in.yyt1p2;
+       p1 = in.tok + in.yyt1p1;
        {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
+            printf("%u.%u.%u.%u\n",
+                parse_oct(in.tok, p1),
                 parse_oct(p1 + 1, p2),
                 parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
+                parse_oct(p3 + 1, in.cur - 1));
+            goto loop;
         }
-yy18:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       yych = *++YYCURSOR;
+yy22:
+       yych = *++in.cur;
        switch (yych) {
+       case '\n':      goto yy20;
        case '0':
        case '1':
        case '2':
@@ -256,21 +315,25 @@ yy19:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
+       case '9':       goto yy23;
+       default:        goto yy8;
+       }
+yy23:
+       ++in.cur;
+       switch ((yych = *in.cur)) {
+       case '\n':      goto yy20;
+       default:        goto yy8;
        }
-yy20:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy17;
 }
 
 }
 
-int main(int argc, char **argv)
+int main()
 {
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
+    input_t in;
+    if (!lex(in)) {
+        printf("error\n");
     }
+
     return 0;
 }
index a297a50921a83606b0cb44f4e3ed33783e4e549e..5ae2ecacf46a7c48b3c553c9fcaf29326e6d1ed8 100644 (file)
@@ -1,5 +1,5 @@
-#include <stddef.h>
 #include <stdio.h>
+#include <string.h>
 
 static inline unsigned parse_oct(const char *s, const char *e)
 {
@@ -10,38 +10,96 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
+/*!max:re2c*/
+
+/* at least maximal lexeme length plus YYMAXFILL */
+static const size_t SIZE = YYMAXFILL * 2;
+
+struct input_t {
+    char buf[SIZE + YYMAXFILL];
+    char *lim;
+    char *cur;
+    char *mar;
+    char *tok;
     /*!tags:re2c*/
+    bool eof;
+
+    input_t()
+        : buf()
+        , lim(buf + SIZE)
+        , cur(lim)
+        , mar(lim)
+        , tok(lim)
+        /*!tags:re2c format = ", @@(0)"; */
+        , eof(false)
+    {}
+    bool fill(size_t need)
+    {
+        if (eof) {
+            printf("\nfill: underflow - 1\n");
+            return false;
+        }
+        const size_t free = tok - buf;
+        if (free < need) {
+            printf("\nfill: underflow - 2\n");
+            return false;
+        }
+        memmove(buf, tok, lim - tok);
+        lim -= free;
+        cur -= free;
+        mar -= free;
+        tok -= free;
+        lim += fread(lim, 1, free, stdin);
+        if (lim < buf + SIZE) {
+            eof = true;
+            memset(lim, 0, YYMAXFILL);
+            lim += YYMAXFILL;
+        }
+        return true;
+    }
+};
+
+static bool lex(input_t & in)
+{
+loop:
+    in.tok = in.cur;
+    const char *p1, *p2, *p3;
     /*!re2c
         re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-        re2c:tags:prefix = "zz_";
+        re2c:define:YYCURSOR = in.cur;
+        re2c:define:YYLIMIT = in.lim;
+        re2c:define:YYMARKER = in.mar;
+        re2c:define:YYCTXMARKER = in.tok;
+        re2c:define:YYFILL = "if (!in.fill(@@)) return false;";
+        re2c:define:YYFILL:naked = 1;
+        re2c:tags:expression = "in.@@";
 
+        end = "\x00";
         oct = [0-9]{1,3};
         d   = ".";
 
-        * { printf("error\n"); return; }
-
+        *   { return false; }
+        end { return YYMAXFILL == in.lim - in.tok; }
           oct @p1
         d oct @p2
         d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
+        d oct [\n] {
+            printf("%u.%u.%u.%u\n",
+                parse_oct(in.tok, p1),
                 parse_oct(p1 + 1, p2),
                 parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
+                parse_oct(p3 + 1, in.cur - 1));
+            goto loop;
         }
     */
 }
 
-int main(int argc, char **argv)
+int main()
 {
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
+    input_t in;
+    if (!lex(in)) {
+        printf("error\n");
     }
+
     return 0;
 }
index 2e463d1f56d1a1c1b03a5e486ee1802945d7846f..bc4c4f4fddc2c245b2fe503f4133f6d2a931437b 100644 (file)
@@ -11,6 +11,15 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
+struct contexts_t
+{
+    long zz_0p1;long zz_0p2;long zz_0p3;
+
+    contexts_t();
+    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
+    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
+};
+
 static void lex(const char *s)
 {
 #define YYPEEK()           *s
@@ -22,8 +31,7 @@ static void lex(const char *s)
 #define ZZ_CTX(tag, dist)  tag = basectx + dist
 #define ZZ_DIST()          (s - basectx)
     const char *marker, *basectx, *p1, *p2, *p3;
-    
-    ptrdiff_t zz_0p1 = 0, zz_0p2 = 0, zz_0p3 = 0;
+    contexts_t ctxs;
     
 {
        char yych;
@@ -52,7 +60,7 @@ yy4:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
+               ctxs.zz_0p1 = ZZ_DIST();
                goto yy5;
        case '0':
        case '1':
@@ -90,7 +98,7 @@ yy7:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
+               ctxs.zz_0p1 = ZZ_DIST();
                goto yy5;
        case '0':
        case '1':
@@ -109,7 +117,7 @@ yy8:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
+               ctxs.zz_0p2 = ZZ_DIST();
                goto yy10;
        case '0':
        case '1':
@@ -128,7 +136,7 @@ yy9:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p1 = ZZ_DIST();
+               ctxs.zz_0p1 = ZZ_DIST();
                goto yy5;
        default:        goto yy6;
        }
@@ -153,7 +161,7 @@ yy11:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
+               ctxs.zz_0p2 = ZZ_DIST();
                goto yy10;
        case '0':
        case '1':
@@ -172,7 +180,7 @@ yy12:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
+               ctxs.zz_0p3 = ZZ_DIST();
                goto yy14;
        case '0':
        case '1':
@@ -191,7 +199,7 @@ yy13:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p2 = ZZ_DIST();
+               ctxs.zz_0p2 = ZZ_DIST();
                goto yy10;
        default:        goto yy6;
        }
@@ -216,7 +224,7 @@ yy15:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
+               ctxs.zz_0p3 = ZZ_DIST();
                goto yy14;
        case '0':
        case '1':
@@ -246,9 +254,9 @@ yy16:
        default:        goto yy17;
        }
 yy17:
-       ZZ_CTX(p3, zz_0p3);
-       ZZ_CTX(p2, zz_0p2);
-       ZZ_CTX(p1, zz_0p1);
+       ZZ_CTX(p3, ctxs.zz_0p3);
+       ZZ_CTX(p2, ctxs.zz_0p2);
+       ZZ_CTX(p1, ctxs.zz_0p1);
        {
             printf("%u.%u.%u.%u\n",
                 parse_oct(basectx, p1),
@@ -262,7 +270,7 @@ yy18:
        yych = YYPEEK ();
        switch (yych) {
        case '.':
-               zz_0p3 = ZZ_DIST();
+               ctxs.zz_0p3 = ZZ_DIST();
                goto yy14;
        default:        goto yy6;
        }
@@ -290,6 +298,18 @@ yy20:
 
 }
 
+contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
+
+void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
+{
+    zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
+}
+
+void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
+{
+    arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
+}
+
 int main(int argc, char **argv)
 {
     for (int i = 1; i < argc; ++i) {
index e8d124427ffbd2040ca95cd6bac842e44d4305d3..564f2dfb661a628e5a0ec4ca7eaa4835137f4f76 100644 (file)
@@ -10,6 +10,19 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
+struct contexts_t
+{
+    /*!tags:re2c format = "long @@;"; */
+
+    contexts_t();
+    void push(/*!tags:re2c
+        format = "long arg_@@";
+        separator = ","; */);
+    void pop(/*!tags:re2c
+        format = "long &arg_@@";
+        separator = ","; */);
+};
+
 static void lex(const char *s)
 {
 #define YYPEEK()           *s
@@ -21,14 +34,15 @@ static void lex(const char *s)
 #define ZZ_CTX(tag, dist)  tag = basectx + dist
 #define ZZ_DIST()          (s - basectx)
     const char *marker, *basectx, *p1, *p2, *p3;
-    /*!tags:re2c sep="\n"; line="long @@ = 0;"; line=; sep=; */
-    ptrdiff_t /*!tags:re2c sep=", "; line="@@ = 0"; */;
+    contexts_t ctxs;
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
+
         re2c:define:YYTAG = "ZZ_CTX";
         re2c:define:YYDIST = "ZZ_DIST";
         re2c:tags:prefix = "zz_";
+        re2c:tags:expression = "ctxs.@@";
 
         oct = [0-9]{1,3};
         d   = ".";
@@ -49,6 +63,25 @@ static void lex(const char *s)
     */
 }
 
+contexts_t::contexts_t(): /*!tags:re2c
+    format = "@@(0)";
+    separator = ",";
+*/ {}
+
+void contexts_t::push(/*!tags:re2c
+    format = "long arg_@@";
+    separator = ","; */)
+{
+    /*!tags:re2c format = "@@ = arg_@@;"; */
+}
+
+void contexts_t::pop(/*!tags:re2c
+    format = "long &arg_@@";
+    separator = ","; */)
+{
+    /*!tags:re2c format = "arg_@@ = @@;"; */
+}
+
 int main(int argc, char **argv)
 {
     for (int i = 1; i < argc; ++i) {
index d601ad87995bec80b6880f24ae1b11f9587620f1..093de8ea1b4a8687bd2d2d7a696ae11fe42b5e30 100644 (file)
@@ -11,11 +11,19 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
+struct contexts_t
+{
+    long zz_0p1;long zz_0p2;long zz_0p3;
+
+    contexts_t();
+    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
+    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
+};
+
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    
-    ptrdiff_t zz_0p1 = 0, zz_0p2 = 0, zz_0p3 = 0;
+    contexts_t ctxs;
     
 {
        char yych;
@@ -42,7 +50,7 @@ yy4:
        yych = *(YYMARKER = ++YYCURSOR);
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
                goto yy5;
        case '0':
        case '1':
@@ -78,7 +86,7 @@ yy7:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
                goto yy5;
        case '0':
        case '1':
@@ -96,7 +104,7 @@ yy8:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
                goto yy10;
        case '0':
        case '1':
@@ -114,7 +122,7 @@ yy9:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p1 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
                goto yy5;
        default:        goto yy6;
        }
@@ -137,7 +145,7 @@ yy11:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
                goto yy10;
        case '0':
        case '1':
@@ -155,7 +163,7 @@ yy12:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
                goto yy14;
        case '0':
        case '1':
@@ -173,7 +181,7 @@ yy13:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p2 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
                goto yy10;
        default:        goto yy6;
        }
@@ -196,7 +204,7 @@ yy15:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
                goto yy14;
        case '0':
        case '1':
@@ -226,9 +234,9 @@ yy16:
        default:        goto yy17;
        }
 yy17:
-       p3 = YYCTXMARKER + zz_0p3;
-       p2 = YYCTXMARKER + zz_0p2;
-       p1 = YYCTXMARKER + zz_0p1;
+       p3 = YYCTXMARKER + ctxs.zz_0p3;
+       p2 = YYCTXMARKER + ctxs.zz_0p2;
+       p1 = YYCTXMARKER + ctxs.zz_0p1;
        {
             printf("%u.%u.%u.%u\n",
                 parse_oct(YYCTXMARKER, p1),
@@ -241,7 +249,7 @@ yy18:
        yych = *++YYCURSOR;
        switch (yych) {
        case '.':
-               zz_0p3 = (YYCURSOR - YYCTXMARKER);
+               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
                goto yy14;
        default:        goto yy6;
        }
@@ -268,6 +276,18 @@ yy20:
 
 }
 
+contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
+
+void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
+{
+    zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
+}
+
+void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
+{
+    arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
+}
+
 int main(int argc, char **argv)
 {
     for (int i = 1; i < argc; ++i) {
index d6576dfd05ae6e9424e46bcf95dc7c73f3b0c201..40f288643a908f4b84f0e757eb9170176bf2c55d 100644 (file)
@@ -10,15 +10,29 @@ static inline unsigned parse_oct(const char *s, const char *e)
     return oct;
 }
 
+struct contexts_t
+{
+    /*!tags:re2c format = "long @@;"; */
+
+    contexts_t();
+    void push(/*!tags:re2c
+        format = "long arg_@@";
+        separator = ","; */);
+    void pop(/*!tags:re2c
+        format = "long &arg_@@";
+        separator = ","; */);
+};
+
 static void lex(const char *YYCURSOR)
 {
     const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    /*!tags:re2c sep="\n"; line="long @@ = 0;"; line=; sep=; */
-    ptrdiff_t /*!tags:re2c sep=", "; line="@@ = 0"; */;
+    contexts_t ctxs;
     /*!re2c
         re2c:define:YYCTYPE = char;
         re2c:yyfill:enable = 0;
+
         re2c:tags:prefix = "zz_";
+        re2c:tags:expression = "ctxs.@@";
 
         oct = [0-9]{1,3};
         d   = ".";
@@ -39,6 +53,25 @@ static void lex(const char *YYCURSOR)
     */
 }
 
+contexts_t::contexts_t(): /*!tags:re2c
+    format = "@@(0)";
+    separator = ",";
+*/ {}
+
+void contexts_t::push(/*!tags:re2c
+    format = "long arg_@@";
+    separator = ","; */)
+{
+    /*!tags:re2c format = "@@ = arg_@@;"; */
+}
+
+void contexts_t::pop(/*!tags:re2c
+    format = "long &arg_@@";
+    separator = ","; */)
+{
+    /*!tags:re2c format = "arg_@@ = @@;"; */
+}
+
 int main(int argc, char **argv)
 {
     for (int i = 1; i < argc; ++i) {
diff --git a/re2c/test/tags/conf4.i--tags--input(custom).c b/re2c/test/tags/conf4.i--tags--input(custom).c
deleted file mode 100644 (file)
index b0f2beb..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/* Generated by re2c */
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-    {
-        zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
-    }
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-    {
-        arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
-    }
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-{
-       char yych;
-       YYBACKUPCTX ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       YYSKIP ();
-yy3:
-       { printf("error\n"); return; }
-yy4:
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYRESTORE ();
-       goto yy3;
-yy7:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       YYSKIP ();
-       switch ((yych = YYPEEK ())) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       ZZ_CTX(p3, ctxs.zz_0p3);
-       ZZ_CTX(p2, ctxs.zz_0p2);
-       ZZ_CTX(p1, ctxs.zz_0p1);
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-yy18:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       YYSKIP ();
-       yych = YYPEEK ();
-       goto yy17;
-}
-
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf4.i--tags--input(custom).re b/re2c/test/tags/conf4.i--tags--input(custom).re
deleted file mode 100644 (file)
index 5c0e617..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c line="long @@;"; */
-
-    contexts_t(): /*!tags:re2c line="@@(0)"; sep=","; */ {}
-    void push(/*!tags:re2c line="long arg_@@"; sep=","; */)
-    {
-        /*!tags:re2c line="@@ = arg_@@;"; */
-    }
-    void pop(/*!tags:re2c line="long &arg_@@"; sep=","; */)
-    {
-        /*!tags:re2c line="arg_@@ = @@;"; */
-    }
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:define:YYTAG = "ZZ_CTX";
-        re2c:define:YYDIST = "ZZ_DIST";
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-    */
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf4.i--tags.c b/re2c/test/tags/conf4.i--tags.c
deleted file mode 100644 (file)
index ff1c9eb..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-/* Generated by re2c */
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-    {
-        zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
-    }
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-    {
-        arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
-    }
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-{
-       char yych;
-       YYCTXMARKER = YYCURSOR;
-       yych = *YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       ++YYCURSOR;
-yy3:
-       { printf("error\n"); return; }
-yy4:
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYCURSOR = YYMARKER;
-       goto yy3;
-yy7:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       p3 = YYCTXMARKER + ctxs.zz_0p3;
-       p2 = YYCTXMARKER + ctxs.zz_0p2;
-       p1 = YYCTXMARKER + ctxs.zz_0p1;
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-yy18:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy17;
-}
-
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf4.i--tags.re b/re2c/test/tags/conf4.i--tags.re
deleted file mode 100644 (file)
index e1652c7..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c line="long @@;"; */
-
-    contexts_t(): /*!tags:re2c line="@@(0)"; sep=","; */ {}
-    void push(/*!tags:re2c line="long arg_@@"; sep=","; */)
-    {
-        /*!tags:re2c line="@@ = arg_@@;"; */
-    }
-    void pop(/*!tags:re2c line="long &arg_@@"; sep=","; */)
-    {
-        /*!tags:re2c line="arg_@@ = @@;"; */
-    }
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-    */
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf5.i--tags--input(custom).c b/re2c/test/tags/conf5.i--tags--input(custom).c
deleted file mode 100644 (file)
index bc4c4f4..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-/* Generated by re2c */
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t();
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-{
-       char yych;
-       YYBACKUPCTX ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       YYSKIP ();
-yy3:
-       { printf("error\n"); return; }
-yy4:
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYRESTORE ();
-       goto yy3;
-yy7:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       YYSKIP ();
-       switch ((yych = YYPEEK ())) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       ZZ_CTX(p3, ctxs.zz_0p3);
-       ZZ_CTX(p2, ctxs.zz_0p2);
-       ZZ_CTX(p1, ctxs.zz_0p1);
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-yy18:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       YYSKIP ();
-       yych = YYPEEK ();
-       goto yy17;
-}
-
-}
-
-contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-
-void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-{
-    zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
-}
-
-void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-{
-    arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf5.i--tags--input(custom).re b/re2c/test/tags/conf5.i--tags--input(custom).re
deleted file mode 100644 (file)
index fbc0faf..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c line="long @@;"; */
-
-    contexts_t();
-    void push(/*!tags:re2c line="long arg_@@"; sep=","; */);
-    void pop(/*!tags:re2c line="long &arg_@@"; sep=","; */);
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:define:YYTAG = "ZZ_CTX";
-        re2c:define:YYDIST = "ZZ_DIST";
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-    */
-}
-
-contexts_t::contexts_t(): /*!tags:re2c line="@@(0)"; sep=","; */ {}
-
-void contexts_t::push(/*!tags:re2c line="long arg_@@"; sep=","; */)
-{
-    /*!tags:re2c line="@@ = arg_@@;"; */
-}
-
-void contexts_t::pop(/*!tags:re2c line="long &arg_@@"; sep=","; */)
-{
-    /*!tags:re2c line="arg_@@ = @@;"; */
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf5.i--tags.c b/re2c/test/tags/conf5.i--tags.c
deleted file mode 100644 (file)
index 093de8e..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/* Generated by re2c */
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t();
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-{
-       char yych;
-       YYCTXMARKER = YYCURSOR;
-       yych = *YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       ++YYCURSOR;
-yy3:
-       { printf("error\n"); return; }
-yy4:
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYCURSOR = YYMARKER;
-       goto yy3;
-yy7:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       p3 = YYCTXMARKER + ctxs.zz_0p3;
-       p2 = YYCTXMARKER + ctxs.zz_0p2;
-       p1 = YYCTXMARKER + ctxs.zz_0p1;
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-yy18:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy17;
-}
-
-}
-
-contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-
-void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-{
-    zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;
-}
-
-void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-{
-    arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf5.i--tags.re b/re2c/test/tags/conf5.i--tags.re
deleted file mode 100644 (file)
index 96f815b..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c line="long @@;"; */
-
-    contexts_t();
-    void push(/*!tags:re2c line="long arg_@@"; sep=","; */);
-    void pop(/*!tags:re2c line="long &arg_@@"; sep=","; */);
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-    */
-}
-
-contexts_t::contexts_t(): /*!tags:re2c line="@@(0)"; sep=","; */ {}
-
-void contexts_t::push(/*!tags:re2c line="long arg_@@"; sep=","; */)
-{
-    /*!tags:re2c line="@@ = arg_@@;"; */
-}
-
-void contexts_t::pop(/*!tags:re2c line="long &arg_@@"; sep=","; */)
-{
-    /*!tags:re2c line="arg_@@ = @@;"; */
-}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf6.--tags--input(custom).c b/re2c/test/tags/conf6.--tags--input(custom).c
deleted file mode 100644 (file)
index 503a992..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-/* Generated by re2c */
-#line 1 "tags/conf6.--tags--input(custom).re"
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t();
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-#line 38 "tags/conf6.--tags--input(custom).c"
-{
-       char yych;
-       YYBACKUPCTX ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       YYSKIP ();
-yy3:
-#line 54 "tags/conf6.--tags--input(custom).re"
-       { printf("error\n"); return; }
-#line 61 "tags/conf6.--tags--input(custom).c"
-yy4:
-       YYSKIP ();
-       YYBACKUP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYRESTORE ();
-       goto yy3;
-yy7:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = ZZ_DIST();
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = ZZ_DIST();
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       YYSKIP ();
-       switch ((yych = YYPEEK ())) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       ZZ_CTX(p3, ctxs.zz_0p3);
-       ZZ_CTX(p2, ctxs.zz_0p2);
-       ZZ_CTX(p1, ctxs.zz_0p1);
-#line 59 "tags/conf6.--tags--input(custom).re"
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-#line 274 "tags/conf6.--tags--input(custom).c"
-yy18:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = ZZ_DIST();
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       YYSKIP ();
-       yych = YYPEEK ();
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       YYSKIP ();
-       yych = YYPEEK ();
-       goto yy17;
-}
-#line 67 "tags/conf6.--tags--input(custom).re"
-
-}
-
-contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-
-void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-{zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;}
-
-void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-{arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf6.--tags--input(custom).re b/re2c/test/tags/conf6.--tags--input(custom).re
deleted file mode 100644 (file)
index 794b6ec..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c
-        line = "long @@;";
-    */
-
-    contexts_t();
-    void push(/*!tags:re2c
-        line = "long arg_@@";
-        sep = ",";
-    */);
-    void pop(/*!tags:re2c
-        line = "long &arg_@@";
-        sep = ",";
-    */);
-};
-
-static void lex(const char *s)
-{
-#define YYPEEK()           *s
-#define YYSKIP()           ++s
-#define YYBACKUP()         marker = s
-#define YYRESTORE()        s = marker
-#define YYBACKUPCTX()      basectx = s
-#define YYRESTORECTX(dist) s = basectx + dist
-#define ZZ_CTX(tag, dist)  tag = basectx + dist
-#define ZZ_DIST()          (s - basectx)
-    const char *marker, *basectx, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:define:YYTAG = "ZZ_CTX";
-        re2c:define:YYDIST = "ZZ_DIST";
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(basectx, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, s));
-            return;
-        }
-    */
-}
-
-contexts_t::contexts_t(): /*!tags:re2c
-    line = "@@(0)";
-    sep = ",";
-*/ {}
-
-void contexts_t::push(/*!tags:re2c
-    line = "long arg_@@";
-    sep = ",";
-*/)
-{/*!tags:re2c
-    line = "@@ = arg_@@;";
-*/}
-
-void contexts_t::pop(/*!tags:re2c
-    line = "long &arg_@@";
-    sep = ",";
-*/)
-{/*!tags:re2c
-    line = "arg_@@ = @@;";
-*/}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf6.--tags.c b/re2c/test/tags/conf6.--tags.c
deleted file mode 100644 (file)
index f967b2f..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-/* Generated by re2c */
-#line 1 "tags/conf6.--tags.re"
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    long zz_0p1;long zz_0p2;long zz_0p3;
-
-    contexts_t();
-    void push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3);
-    void pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3);
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    
-#line 30 "tags/conf6.--tags.c"
-{
-       char yych;
-       YYCTXMARKER = YYCURSOR;
-       yych = *YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy4;
-       default:        goto yy2;
-       }
-yy2:
-       ++YYCURSOR;
-yy3:
-#line 44 "tags/conf6.--tags.re"
-       { printf("error\n"); return; }
-#line 53 "tags/conf6.--tags.c"
-yy4:
-       yych = *(YYMARKER = ++YYCURSOR);
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy7;
-       default:        goto yy3;
-       }
-yy5:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy8;
-       default:        goto yy6;
-       }
-yy6:
-       YYCURSOR = YYMARKER;
-       goto yy3;
-yy7:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy9;
-       default:        goto yy6;
-       }
-yy8:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy11;
-       default:        goto yy6;
-       }
-yy9:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p1 = (YYCURSOR - YYCTXMARKER);
-               goto yy5;
-       default:        goto yy6;
-       }
-yy10:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy12;
-       default:        goto yy6;
-       }
-yy11:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy13;
-       default:        goto yy6;
-       }
-yy12:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy15;
-       default:        goto yy6;
-       }
-yy13:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p2 = (YYCURSOR - YYCTXMARKER);
-               goto yy10;
-       default:        goto yy6;
-       }
-yy14:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy16;
-       default:        goto yy6;
-       }
-yy15:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy18;
-       default:        goto yy6;
-       }
-yy16:
-       ++YYCURSOR;
-       switch ((yych = *YYCURSOR)) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy19;
-       default:        goto yy17;
-       }
-yy17:
-       p3 = YYCTXMARKER + ctxs.zz_0p3;
-       p2 = YYCTXMARKER + ctxs.zz_0p2;
-       p1 = YYCTXMARKER + ctxs.zz_0p1;
-#line 49 "tags/conf6.--tags.re"
-       {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-#line 254 "tags/conf6.--tags.c"
-yy18:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '.':
-               ctxs.zz_0p3 = (YYCURSOR - YYCTXMARKER);
-               goto yy14;
-       default:        goto yy6;
-       }
-yy19:
-       yych = *++YYCURSOR;
-       switch (yych) {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':       goto yy20;
-       default:        goto yy17;
-       }
-yy20:
-       ++YYCURSOR;
-       yych = *YYCURSOR;
-       goto yy17;
-}
-#line 57 "tags/conf6.--tags.re"
-
-}
-
-contexts_t::contexts_t(): zz_0p1(0),zz_0p2(0),zz_0p3(0) {}
-
-void contexts_t::push(long arg_zz_0p1,long arg_zz_0p2,long arg_zz_0p3)
-{zz_0p1 = arg_zz_0p1;zz_0p2 = arg_zz_0p2;zz_0p3 = arg_zz_0p3;}
-
-void contexts_t::pop(long &arg_zz_0p1,long &arg_zz_0p2,long &arg_zz_0p3)
-{arg_zz_0p1 = zz_0p1;arg_zz_0p2 = zz_0p2;arg_zz_0p3 = zz_0p3;}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}
diff --git a/re2c/test/tags/conf6.--tags.re b/re2c/test/tags/conf6.--tags.re
deleted file mode 100644 (file)
index b871217..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-#include <stddef.h>
-#include <stdio.h>
-
-static inline unsigned parse_oct(const char *s, const char *e)
-{
-    unsigned oct = 0;
-    for (; s != e; ++s) {
-        oct = oct * 10 + *s - '0';
-    }
-    return oct;
-}
-
-struct contexts_t
-{
-    /*!tags:re2c
-        line = "long @@;";
-    */
-
-    contexts_t();
-    void push(/*!tags:re2c
-        line = "long arg_@@";
-        sep = ",";
-    */);
-    void pop(/*!tags:re2c
-        line = "long &arg_@@";
-        sep = ",";
-    */);
-};
-
-static void lex(const char *YYCURSOR)
-{
-    const char *YYMARKER, *YYCTXMARKER, *p1, *p2, *p3;
-    contexts_t ctxs;
-    /*!re2c
-        re2c:define:YYCTYPE = char;
-        re2c:yyfill:enable = 0;
-
-        re2c:tags:prefix = "zz_";
-        re2c:tags:expression = "ctxs.@@";
-
-        oct = [0-9]{1,3};
-        d   = ".";
-
-        * { printf("error\n"); return; }
-
-          oct @p1
-        d oct @p2
-        d oct @p3
-        d oct {
-            printf("%u.%u.%u.%u\n",
-                parse_oct(YYCTXMARKER, p1),
-                parse_oct(p1 + 1, p2),
-                parse_oct(p2 + 1, p3),
-                parse_oct(p3 + 1, YYCURSOR));
-            return;
-        }
-    */
-}
-
-contexts_t::contexts_t(): /*!tags:re2c
-    line = "@@(0)";
-    sep = ",";
-*/ {}
-
-void contexts_t::push(/*!tags:re2c
-    line = "long arg_@@";
-    sep = ",";
-*/)
-{/*!tags:re2c
-    line = "@@ = arg_@@;";
-*/}
-
-void contexts_t::pop(/*!tags:re2c
-    line = "long &arg_@@";
-    sep = ",";
-*/)
-{/*!tags:re2c
-    line = "arg_@@ = @@;";
-*/}
-
-int main(int argc, char **argv)
-{
-    for (int i = 1; i < argc; ++i) {
-        lex(argv[i]);
-    }
-    return 0;
-}