From 126f84aa73faa352f6dd7a7a901ef62366b17627 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 1 Aug 2018 16:11:21 -0700 Subject: [PATCH] Avoid unnecessary suffixes on external symbol identifiers --- src/compiler/generate_code/c_code.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/compiler/generate_code/c_code.cc b/src/compiler/generate_code/c_code.cc index 1038701c..b1f13cbb 100644 --- a/src/compiler/generate_code/c_code.cc +++ b/src/compiler/generate_code/c_code.cc @@ -176,11 +176,14 @@ class CCodeGenerator { } for (size_t i = 0; i < syntax_grammar.external_tokens.size(); i++) { - const ExternalToken &external_token = syntax_grammar.external_tokens[i]; - if (external_token.corresponding_internal_token == rules::NONE()) { - assign_symbol_id(Symbol::external(i), &symbol_id_values); - } else { - symbol_ids[Symbol::external(i)] = symbol_ids[external_token.corresponding_internal_token]; + Symbol symbol = Symbol::external(i); + if (!symbol_ids.count(symbol)) { + const ExternalToken &external_token = syntax_grammar.external_tokens[i]; + if (external_token.corresponding_internal_token == rules::NONE()) { + assign_symbol_id(Symbol::external(i), &symbol_id_values); + } else { + symbol_ids[Symbol::external(i)] = symbol_ids[external_token.corresponding_internal_token]; + } } }