From 9cedcbce9ebcd5e070f95834ad4cef3c221e2600 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Thu, 6 Oct 2016 16:28:38 +0100 Subject: [PATCH] Renamed configurations and updated tests. 'tags:line' -> 'tags:format' 'tags:sep' -> 'tags:separator' --- re2c/bootstrap/src/parse/lex.cc | 1730 +++++++++-------- re2c/src/codegen/output.cc | 8 +- re2c/src/codegen/output.h | 6 +- re2c/src/parse/lex.re | 6 +- re2c/test/tags/conf1.i--tags--input(custom).c | 4 +- .../test/tags/conf1.i--tags--input(custom).re | 1 + re2c/test/tags/conf1.i--tags.c | 4 +- re2c/test/tags/conf1.i--tags.re | 1 + re2c/test/tags/conf2.i--tags--input(custom).c | 251 ++- .../test/tags/conf2.i--tags--input(custom).re | 105 +- re2c/test/tags/conf2.i--tags.c | 269 ++- re2c/test/tags/conf2.i--tags.re | 90 +- re2c/test/tags/conf3.i--tags--input(custom).c | 48 +- .../test/tags/conf3.i--tags--input(custom).re | 37 +- re2c/test/tags/conf3.i--tags.c | 48 +- re2c/test/tags/conf3.i--tags.re | 37 +- re2c/test/tags/conf4.i--tags--input(custom).c | 313 --- .../test/tags/conf4.i--tags--input(custom).re | 74 - re2c/test/tags/conf4.i--tags.c | 291 --- re2c/test/tags/conf4.i--tags.re | 64 - re2c/test/tags/conf5.i--tags--input(custom).c | 319 --- .../test/tags/conf5.i--tags--input(custom).re | 80 - re2c/test/tags/conf5.i--tags.c | 297 --- re2c/test/tags/conf5.i--tags.re | 70 - re2c/test/tags/conf6.--tags--input(custom).c | 322 --- re2c/test/tags/conf6.--tags--input(custom).re | 97 - re2c/test/tags/conf6.--tags.c | 300 --- re2c/test/tags/conf6.--tags.re | 87 - 28 files changed, 1507 insertions(+), 3452 deletions(-) delete mode 100644 re2c/test/tags/conf4.i--tags--input(custom).c delete mode 100644 re2c/test/tags/conf4.i--tags--input(custom).re delete mode 100644 re2c/test/tags/conf4.i--tags.c delete mode 100644 re2c/test/tags/conf4.i--tags.re delete mode 100644 re2c/test/tags/conf5.i--tags--input(custom).c delete mode 100644 re2c/test/tags/conf5.i--tags--input(custom).re delete mode 100644 re2c/test/tags/conf5.i--tags.c delete mode 100644 re2c/test/tags/conf5.i--tags.re delete mode 100644 re2c/test/tags/conf6.--tags--input(custom).c delete mode 100644 re2c/test/tags/conf6.--tags--input(custom).re delete mode 100644 re2c/test/tags/conf6.--tags.c delete mode 100644 re2c/test/tags/conf6.--tags.re diff --git a/re2c/bootstrap/src/parse/lex.cc b/re2c/bootstrap/src/parse/lex.cc index dc23c0c7..be92270f 100644 --- a/re2c/bootstrap/src/parse/lex.cc +++ b/re2c/bootstrap/src/parse/lex.cc @@ -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 @@ -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::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(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(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('-'); } -#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('\\'); } -#line 2503 "src/parse/lex.cc" -yy387: +#line 2529 "src/parse/lex.cc" +yy395: ++YYCURSOR; #line 624 "../src/parse/lex.re" { return static_cast(']'); } -#line 2508 "src/parse/lex.cc" -yy389: +#line 2534 "src/parse/lex.cc" +yy397: ++YYCURSOR; #line 615 "../src/parse/lex.re" { return static_cast('\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('\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('\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('\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('\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('\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('\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(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(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('\\'); } -#line 2792 "src/parse/lex.cc" -yy435: +#line 2818 "src/parse/lex.cc" +yy443: ++YYCURSOR; #line 648 "../src/parse/lex.re" { return static_cast('\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('\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('\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('\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('\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('\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('\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" diff --git a/re2c/src/codegen/output.cc b/re2c/src/codegen/output.cc index d49d8f31..062b77db 100644 --- a/re2c/src/codegen/output.cc +++ b/re2c/src/codegen/output.cc @@ -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; } } diff --git a/re2c/src/codegen/output.h b/re2c/src/codegen/output.h index 497f6313..608d7f8e 100644 --- a/re2c/src/codegen/output.h +++ b/re2c/src/codegen/output.h @@ -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 diff --git a/re2c/src/parse/lex.re b/re2c/src/parse/lex.re index d2771a27..c9dbf400 100644 --- a/re2c/src/parse/lex.re +++ b/re2c/src/parse/lex.re @@ -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; } diff --git a/re2c/test/tags/conf1.i--tags--input(custom).c b/re2c/test/tags/conf1.i--tags--input(custom).c index 4576df3c..2a53d913 100644 --- a/re2c/test/tags/conf1.i--tags--input(custom).c +++ b/re2c/test/tags/conf1.i--tags--input(custom).c @@ -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) { diff --git a/re2c/test/tags/conf1.i--tags--input(custom).re b/re2c/test/tags/conf1.i--tags--input(custom).re index b5f0a140..4f58a3c8 100644 --- a/re2c/test/tags/conf1.i--tags--input(custom).re +++ b/re2c/test/tags/conf1.i--tags--input(custom).re @@ -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; diff --git a/re2c/test/tags/conf1.i--tags.c b/re2c/test/tags/conf1.i--tags.c index 67f35146..3c7eb852 100644 --- a/re2c/test/tags/conf1.i--tags.c +++ b/re2c/test/tags/conf1.i--tags.c @@ -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) { diff --git a/re2c/test/tags/conf1.i--tags.re b/re2c/test/tags/conf1.i--tags.re index a5c7a815..a33553a8 100644 --- a/re2c/test/tags/conf1.i--tags.re +++ b/re2c/test/tags/conf1.i--tags.re @@ -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; diff --git a/re2c/test/tags/conf2.i--tags--input(custom).c b/re2c/test/tags/conf2.i--tags--input(custom).c index 2a53d913..0725e30b 100644 --- a/re2c/test/tags/conf2.i--tags--input(custom).c +++ b/re2c/test/tags/conf2.i--tags--input(custom).c @@ -1,6 +1,6 @@ /* Generated by re2c */ -#include #include +#include 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; } diff --git a/re2c/test/tags/conf2.i--tags--input(custom).re b/re2c/test/tags/conf2.i--tags--input(custom).re index 30768df4..17dcc3c2 100644 --- a/re2c/test/tags/conf2.i--tags--input(custom).re +++ b/re2c/test/tags/conf2.i--tags--input(custom).re @@ -1,5 +1,5 @@ -#include #include +#include 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; } diff --git a/re2c/test/tags/conf2.i--tags.c b/re2c/test/tags/conf2.i--tags.c index 3c7eb852..6f64700e 100644 --- a/re2c/test/tags/conf2.i--tags.c +++ b/re2c/test/tags/conf2.i--tags.c @@ -1,6 +1,6 @@ /* Generated by re2c */ -#include #include +#include 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; } diff --git a/re2c/test/tags/conf2.i--tags.re b/re2c/test/tags/conf2.i--tags.re index a297a509..5ae2ecac 100644 --- a/re2c/test/tags/conf2.i--tags.re +++ b/re2c/test/tags/conf2.i--tags.re @@ -1,5 +1,5 @@ -#include #include +#include 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; } diff --git a/re2c/test/tags/conf3.i--tags--input(custom).c b/re2c/test/tags/conf3.i--tags--input(custom).c index 2e463d1f..bc4c4f4f 100644 --- a/re2c/test/tags/conf3.i--tags--input(custom).c +++ b/re2c/test/tags/conf3.i--tags--input(custom).c @@ -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) { diff --git a/re2c/test/tags/conf3.i--tags--input(custom).re b/re2c/test/tags/conf3.i--tags--input(custom).re index e8d12442..564f2dfb 100644 --- a/re2c/test/tags/conf3.i--tags--input(custom).re +++ b/re2c/test/tags/conf3.i--tags--input(custom).re @@ -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) { diff --git a/re2c/test/tags/conf3.i--tags.c b/re2c/test/tags/conf3.i--tags.c index d601ad87..093de8ea 100644 --- a/re2c/test/tags/conf3.i--tags.c +++ b/re2c/test/tags/conf3.i--tags.c @@ -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) { diff --git a/re2c/test/tags/conf3.i--tags.re b/re2c/test/tags/conf3.i--tags.re index d6576dfd..40f28864 100644 --- a/re2c/test/tags/conf3.i--tags.re +++ b/re2c/test/tags/conf3.i--tags.re @@ -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 index b0f2beba..00000000 --- a/re2c/test/tags/conf4.i--tags--input(custom).c +++ /dev/null @@ -1,313 +0,0 @@ -/* Generated by re2c */ -#include -#include - -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 index 5c0e6175..00000000 --- a/re2c/test/tags/conf4.i--tags--input(custom).re +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include - -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 index ff1c9ebf..00000000 --- a/re2c/test/tags/conf4.i--tags.c +++ /dev/null @@ -1,291 +0,0 @@ -/* Generated by re2c */ -#include -#include - -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 index e1652c7e..00000000 --- a/re2c/test/tags/conf4.i--tags.re +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include - -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 index bc4c4f4f..00000000 --- a/re2c/test/tags/conf5.i--tags--input(custom).c +++ /dev/null @@ -1,319 +0,0 @@ -/* Generated by re2c */ -#include -#include - -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 index fbc0faf4..00000000 --- a/re2c/test/tags/conf5.i--tags--input(custom).re +++ /dev/null @@ -1,80 +0,0 @@ -#include -#include - -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 index 093de8ea..00000000 --- a/re2c/test/tags/conf5.i--tags.c +++ /dev/null @@ -1,297 +0,0 @@ -/* Generated by re2c */ -#include -#include - -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 index 96f815b5..00000000 --- a/re2c/test/tags/conf5.i--tags.re +++ /dev/null @@ -1,70 +0,0 @@ -#include -#include - -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 index 503a9922..00000000 --- a/re2c/test/tags/conf6.--tags--input(custom).c +++ /dev/null @@ -1,322 +0,0 @@ -/* Generated by re2c */ -#line 1 "tags/conf6.--tags--input(custom).re" -#include -#include - -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 index 794b6ec7..00000000 --- a/re2c/test/tags/conf6.--tags--input(custom).re +++ /dev/null @@ -1,97 +0,0 @@ -#include -#include - -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 index f967b2f2..00000000 --- a/re2c/test/tags/conf6.--tags.c +++ /dev/null @@ -1,300 +0,0 @@ -/* Generated by re2c */ -#line 1 "tags/conf6.--tags.re" -#include -#include - -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 index b8712176..00000000 --- a/re2c/test/tags/conf6.--tags.re +++ /dev/null @@ -1,87 +0,0 @@ -#include -#include - -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; -} -- 2.40.0