From 1a79d217af4b7403b6567c269bf115bb1fad9495 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 11 Apr 2015 03:18:22 +0200 Subject: Allow skipping the destructor selectively --- src/output_slr.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/output_slr.cpp') diff --git a/src/output_slr.cpp b/src/output_slr.cpp index d2b9817..3c9e1c2 100644 --- a/src/output_slr.cpp +++ b/src/output_slr.cpp @@ -66,8 +66,7 @@ void output_slr_t::emit_state_reduce_code(const item_t &item, int rule_id) { bool empty = true; const auto &vars = generator->get_grammar().rules[rule_id].variables; for (unsigned i = 0; i < vars.size(); i++) { - const std::string &var = vars[i]; - if (var.empty()) + if (vars[i].first.empty()) continue; if (!empty) @@ -88,7 +87,10 @@ void output_slr_t::emit_state_reduce_code(const item_t &item, int rule_id) { std::fprintf(source_file, ");\n"); - for (unsigned i = 0; i < rhs.size(); i++) { + for (unsigned i = 0; i < vars.size(); i++) { + if (!vars[i].second) + continue; + auto it = generator->get_grammar().destructors.find(rhs[i]); if (it == generator->get_grammar().destructors.end()) continue; -- cgit v1.2.3