From c9168a351ba73748f9c9a380a7316be503b515b5 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Thu, 6 Oct 2016 16:50:09 +0100 Subject: [PATCH] Don't generate 'yyt' variables without explicit '/*!tags:re2c*/'. Reasoning: - with YYFILL, one must use '/*!tags:re2c*/ - without YYFIL, one might still want to use '/*!tags:re2c*/' (e.g. to avoid warnings about initialized variables) - unconditional behaviour is easier to remember - everyone who uses tags should know about '/*!tags:re2c*/' - re2c code is simpler Problems: - without scoping rules multiple blocks with tags are troublesome Note that actual code generation for '/*!tags:re2c*/' is still delayed. --- re2c/src/codegen/emit_dfa.cc | 1 - re2c/src/codegen/output.cc | 21 +------------------ re2c/src/codegen/output.h | 6 +----- re2c/src/ir/skeleton/generate_code.cc | 2 +- .../bug121_var_multiple.i--input(custom).c | 2 -- re2c/test/tags/bug121_var_multiple.i.c | 2 -- re2c/test/tags/dedup4.i--tags.c | 8 ------- re2c/test/tags/dedup5.i--tags.c | 2 -- re2c/test/tags/fallback1.i--tags.c | 1 - re2c/test/tags/fallback2.i--tags.c | 1 - re2c/test/tags/fallback3.i--tags.c | 2 -- .../tags/fix2_trail.i--tags--input(custom).c | 4 ---- re2c/test/tags/fix3.i--tags.c | 4 ---- .../tags/fix3_trail.i--tags--input(custom).c | 4 ---- re2c/test/tags/fix3_trail.i--tags.c | 4 ---- re2c/test/tags/fix4.i--tags.c | 2 -- .../tags/fix4_trail.i--tags--input(custom).c | 4 ---- re2c/test/tags/fix4_trail.i--tags.c | 2 -- re2c/test/tags/fix5.i--tags.c | 2 -- .../tags/fix5_trail.i--tags--input(custom).c | 4 ---- re2c/test/tags/fix5_trail.i--tags.c | 2 -- re2c/test/tags/iter_plus.i--tags.c | 1 - re2c/test/tags/minimization.i.c | 1 - 23 files changed, 3 insertions(+), 79 deletions(-) diff --git a/re2c/src/codegen/emit_dfa.cc b/re2c/src/codegen/emit_dfa.cc index ed5a741d..4c9656cd 100644 --- a/re2c/src/codegen/emit_dfa.cc +++ b/re2c/src/codegen/emit_dfa.cc @@ -224,7 +224,6 @@ void DFA::emit(Output & output, uint32_t& ind, bool isLastCond, bool& bPrologBra o.wind(ind).wstring(opts->yyctype).ws(" ").wstring(opts->yych).ws(";\n"); } o.wdelay_yyaccept_init (ind); - o.wdelay_tags(ind, NULL); } else { diff --git a/re2c/src/codegen/output.cc b/re2c/src/codegen/output.cc index 062b77db..8150b946 100644 --- a/re2c/src/codegen/output.cc +++ b/re2c/src/codegen/output.cc @@ -66,7 +66,6 @@ OutputFile::OutputFile() : blocks () , label_counter () , warn_condition_order (!opts->tFlag) // see note [condition order] - , default_tags (true) { new_block (); } @@ -192,9 +191,6 @@ OutputFile &OutputFile::wdelay_tags(uint32_t ind, const ConfTags *cf) { OutputFragment *frag = new OutputFragment(OutputFragment::TAGS, ind); frag->tags = cf; - if (cf) { - default_tags = false; - } blocks.back()->fragments.push_back(frag); insert_code(); return *this; @@ -300,11 +296,7 @@ bool OutputFile::emit(const uniq_vector_t &global_types, output_state_goto(f.stream, f.indent, 0); break; case OutputFragment::TAGS: - if (f.tags) { - output_tags(f.stream, *f.tags, global_tags); - } else if (default_tags) { - output_tags_default(f.stream, f.indent, b.tags); - } + output_tags(f.stream, *f.tags, global_tags); break; case OutputFragment::TYPES: output_types(f.stream, f.indent, global_types); @@ -400,17 +392,6 @@ void output_tags(std::ostream &o, const ConfTags &conf, } } -void output_tags_default(std::ostream &o, uint32_t ind, - const std::set &tags) -{ - std::set::const_iterator - tag = tags.begin(), - end = tags.end(); - for (;tag != end; ++tag) { - o << indent(ind) << "long " << *tag << ";\n"; - } -} - void output_state_goto (std::ostream & o, uint32_t ind, uint32_t start_label) { o << indent(ind) << "switch (" << output_get_state() << ") {\n"; diff --git a/re2c/src/codegen/output.h b/re2c/src/codegen/output.h index 608d7f8e..914ef327 100644 --- a/re2c/src/codegen/output.h +++ b/re2c/src/codegen/output.h @@ -73,7 +73,6 @@ class OutputFile public: counter_t label_counter; bool warn_condition_order; - bool default_tags; OutputFile(); ~OutputFile(); @@ -140,10 +139,7 @@ struct Output bool emit(); }; -void output_tags(std::ostream &o, const ConfTags &conf, - const std::set &tags); -void output_tags_default(std::ostream &o, uint32_t ind, - const std::set &tags); +void output_tags(std::ostream &o, const ConfTags &conf, const std::set &tags); void output_line_info (std::ostream &, uint32_t, const std::string&); void output_state_goto (std::ostream &, uint32_t, uint32_t); void output_types(std::ostream &o, uint32_t, const uniq_vector_t &types); diff --git a/re2c/src/ir/skeleton/generate_code.cc b/re2c/src/ir/skeleton/generate_code.cc index 2c53f080..71e42bb1 100644 --- a/re2c/src/ir/skeleton/generate_code.cc +++ b/re2c/src/ir/skeleton/generate_code.cc @@ -239,7 +239,7 @@ void emit_start(const Skeleton &skel, OutputFile &o, size_t maxfill, } if (!tagnames.empty()) { o.ws("\n"); - output_tags_default(o.stream(), 2, tagnames); + output_tags(o.stream(), ConfTags(), tagnames); o.ws("\n").wstring(opts->input_api.stmt_backupctx(2)); } diff --git a/re2c/test/tags/bug121_var_multiple.i--input(custom).c b/re2c/test/tags/bug121_var_multiple.i--input(custom).c index e78767dd..58ae1af8 100644 --- a/re2c/test/tags/bug121_var_multiple.i--input(custom).c +++ b/re2c/test/tags/bug121_var_multiple.i--input(custom).c @@ -5,8 +5,6 @@ { YYCTYPE yych; - long yyt0; - long yyt1; YYBACKUPCTX (); if (YYLESSTHAN (4)) YYFILL(4); yych = YYPEEK (); diff --git a/re2c/test/tags/bug121_var_multiple.i.c b/re2c/test/tags/bug121_var_multiple.i.c index 15f20e5d..1307dfa1 100644 --- a/re2c/test/tags/bug121_var_multiple.i.c +++ b/re2c/test/tags/bug121_var_multiple.i.c @@ -5,8 +5,6 @@ { YYCTYPE yych; - long yyt0; - long yyt1; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; diff --git a/re2c/test/tags/dedup4.i--tags.c b/re2c/test/tags/dedup4.i--tags.c index a66912a2..96f0c531 100644 --- a/re2c/test/tags/dedup4.i--tags.c +++ b/re2c/test/tags/dedup4.i--tags.c @@ -2,8 +2,6 @@ { YYCTYPE yych; - long yyt0; - long yyt0p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; @@ -76,8 +74,6 @@ yy11: { YYCTYPE yych; - long yyt0p; - long yyt1p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; @@ -134,8 +130,6 @@ yy23: { YYCTYPE yych; unsigned int yyaccept = 0; - long yyt0p; - long yyt1; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; @@ -212,8 +206,6 @@ yy35: { YYCTYPE yych; unsigned int yyaccept = 0; - long yyt0p; - long yyt1; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; diff --git a/re2c/test/tags/dedup5.i--tags.c b/re2c/test/tags/dedup5.i--tags.c index 5ada826a..0a0afe7e 100644 --- a/re2c/test/tags/dedup5.i--tags.c +++ b/re2c/test/tags/dedup5.i--tags.c @@ -9,7 +9,6 @@ { YYCTYPE yych; - long yyt0p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; @@ -62,7 +61,6 @@ yy9: { YYCTYPE yych; - long yyt0p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; diff --git a/re2c/test/tags/fallback1.i--tags.c b/re2c/test/tags/fallback1.i--tags.c index a6e7a397..e4a1800f 100644 --- a/re2c/test/tags/fallback1.i--tags.c +++ b/re2c/test/tags/fallback1.i--tags.c @@ -15,7 +15,6 @@ { YYCTYPE yych; unsigned int yyaccept = 0; - long yyt1p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; diff --git a/re2c/test/tags/fallback2.i--tags.c b/re2c/test/tags/fallback2.i--tags.c index f748f83a..25d30ccb 100644 --- a/re2c/test/tags/fallback2.i--tags.c +++ b/re2c/test/tags/fallback2.i--tags.c @@ -17,7 +17,6 @@ { YYCTYPE yych; unsigned int yyaccept = 0; - long yyt0p; YYCTXMARKER = YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *(YYMARKER = YYCURSOR); diff --git a/re2c/test/tags/fallback3.i--tags.c b/re2c/test/tags/fallback3.i--tags.c index 3c2913b7..83ae3f3e 100644 --- a/re2c/test/tags/fallback3.i--tags.c +++ b/re2c/test/tags/fallback3.i--tags.c @@ -8,8 +8,6 @@ { YYCTYPE yych; unsigned int yyaccept = 0; - long yyt0p; - long yyt0p_; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; diff --git a/re2c/test/tags/fix2_trail.i--tags--input(custom).c b/re2c/test/tags/fix2_trail.i--tags--input(custom).c index 26240f47..be754e9e 100644 --- a/re2c/test/tags/fix2_trail.i--tags--input(custom).c +++ b/re2c/test/tags/fix2_trail.i--tags--input(custom).c @@ -16,10 +16,6 @@ static void lex(const char *s) { char yych; - long yyt0; - long yyt0p1; - long yyt0p2; - long yyt0p3; YYBACKUPCTX (); yych = YYPEEK (); switch (yych) { diff --git a/re2c/test/tags/fix3.i--tags.c b/re2c/test/tags/fix3.i--tags.c index 441655eb..682c762d 100644 --- a/re2c/test/tags/fix3.i--tags.c +++ b/re2c/test/tags/fix3.i--tags.c @@ -8,10 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0p1; - long yyt0p2; - long yyt0p3; - long yyt0p4; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/fix3_trail.i--tags--input(custom).c b/re2c/test/tags/fix3_trail.i--tags--input(custom).c index f208d660..1ffbf41b 100644 --- a/re2c/test/tags/fix3_trail.i--tags--input(custom).c +++ b/re2c/test/tags/fix3_trail.i--tags--input(custom).c @@ -16,10 +16,6 @@ static void lex(const char *s) { char yych; - long yyt0; - long yyt0p1; - long yyt0p2; - long yyt0p3; YYBACKUPCTX (); yych = YYPEEK (); switch (yych) { diff --git a/re2c/test/tags/fix3_trail.i--tags.c b/re2c/test/tags/fix3_trail.i--tags.c index 05142025..5c022b19 100644 --- a/re2c/test/tags/fix3_trail.i--tags.c +++ b/re2c/test/tags/fix3_trail.i--tags.c @@ -8,10 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0; - long yyt0p1; - long yyt0p2; - long yyt0p3; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/fix4.i--tags.c b/re2c/test/tags/fix4.i--tags.c index defefabd..b760c16d 100644 --- a/re2c/test/tags/fix4.i--tags.c +++ b/re2c/test/tags/fix4.i--tags.c @@ -8,8 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0p1; - long yyt0p3; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/fix4_trail.i--tags--input(custom).c b/re2c/test/tags/fix4_trail.i--tags--input(custom).c index c5200f2d..8091eb59 100644 --- a/re2c/test/tags/fix4_trail.i--tags--input(custom).c +++ b/re2c/test/tags/fix4_trail.i--tags--input(custom).c @@ -16,10 +16,6 @@ static void lex(const char *s) { char yych; - long yyt0; - long yyt0p1; - long yyt0p2; - long yyt0p3; YYBACKUPCTX (); yych = YYPEEK (); switch (yych) { diff --git a/re2c/test/tags/fix4_trail.i--tags.c b/re2c/test/tags/fix4_trail.i--tags.c index 9ce2e30e..ad871383 100644 --- a/re2c/test/tags/fix4_trail.i--tags.c +++ b/re2c/test/tags/fix4_trail.i--tags.c @@ -8,8 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0p1; - long yyt0p3; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/fix5.i--tags.c b/re2c/test/tags/fix5.i--tags.c index 8962d6f8..8e30a014 100644 --- a/re2c/test/tags/fix5.i--tags.c +++ b/re2c/test/tags/fix5.i--tags.c @@ -8,8 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0p2; - long yyt0p4; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/fix5_trail.i--tags--input(custom).c b/re2c/test/tags/fix5_trail.i--tags--input(custom).c index 9022d7ab..1ad31185 100644 --- a/re2c/test/tags/fix5_trail.i--tags--input(custom).c +++ b/re2c/test/tags/fix5_trail.i--tags--input(custom).c @@ -16,10 +16,6 @@ static void lex(const char *s) { char yych; - long yyt0; - long yyt0p1; - long yyt0p2; - long yyt0p3; YYBACKUPCTX (); yych = YYPEEK (); switch (yych) { diff --git a/re2c/test/tags/fix5_trail.i--tags.c b/re2c/test/tags/fix5_trail.i--tags.c index 1cfccf50..c3c437b8 100644 --- a/re2c/test/tags/fix5_trail.i--tags.c +++ b/re2c/test/tags/fix5_trail.i--tags.c @@ -8,8 +8,6 @@ static void lex(const char *YYCURSOR) { char yych; - long yyt0; - long yyt0p2; YYCTXMARKER = YYCURSOR; yych = *YYCURSOR; switch (yych) { diff --git a/re2c/test/tags/iter_plus.i--tags.c b/re2c/test/tags/iter_plus.i--tags.c index 3d00e9c1..fa8335e4 100644 --- a/re2c/test/tags/iter_plus.i--tags.c +++ b/re2c/test/tags/iter_plus.i--tags.c @@ -5,7 +5,6 @@ { YYCTYPE yych; - long yyt0p; YYCTXMARKER = YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; diff --git a/re2c/test/tags/minimization.i.c b/re2c/test/tags/minimization.i.c index b02abf91..2dd1acb5 100644 --- a/re2c/test/tags/minimization.i.c +++ b/re2c/test/tags/minimization.i.c @@ -32,7 +32,6 @@ yy5: { YYCTYPE yych; - long yyt0p; YYCTXMARKER = YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; -- 2.50.0