From 66dc12587a456d0162e4c9105bf293bef25d4a3e Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sat, 15 Jul 2017 23:10:32 -0700 Subject: [PATCH] Call the external scanner whenever an external token is valid For some reason, there was previously some extra logic that prevented the external scanner from being invoked if the only valid external token also had an internal definition. It's surprising to not call the external scanner if an external token is valid. --- src/compiler/generate_code/c_code.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/compiler/generate_code/c_code.cc b/src/compiler/generate_code/c_code.cc index 3b6a03b8..379d467e 100644 --- a/src/compiler/generate_code/c_code.cc +++ b/src/compiler/generate_code/c_code.cc @@ -303,12 +303,10 @@ class CCodeGenerator { line("[" + to_string(state_id++) + "] = {.lex_state = "); add(to_string(state.lex_state_id)); - bool needs_external_scanner = false; set external_token_indices; for (const auto &pair : state.terminal_entries) { Symbol symbol = pair.first; if (symbol.is_external()) { - needs_external_scanner = true; external_token_indices.insert(symbol.index); } else if (symbol.is_terminal()) { auto corresponding_external_token = @@ -319,7 +317,7 @@ class CCodeGenerator { } } - if (needs_external_scanner) { + if (!external_token_indices.empty()) { add(", .external_lex_state = " + add_external_scanner_state(external_token_indices)); }