From 91456d7a177d20fa63502d1ac1865a4e6b14f32e Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 14 Sep 2017 10:54:09 -0700 Subject: [PATCH] Avoid duplicate error state entries for tokens that are both internal & external --- src/compiler/build_tables/parse_table_builder.cc | 4 +++- src/runtime/parser.c | 9 ++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/compiler/build_tables/parse_table_builder.cc b/src/compiler/build_tables/parse_table_builder.cc index 8666ce1d..8f4b0fb1 100644 --- a/src/compiler/build_tables/parse_table_builder.cc +++ b/src/compiler/build_tables/parse_table_builder.cc @@ -161,7 +161,9 @@ class ParseTableBuilderImpl : public ParseTableBuilder { } for (size_t i = 0; i < grammar.external_tokens.size(); i++) { - parse_table.states[state_id].terminal_entries[Symbol::external(i)].actions.push_back(ParseAction::Recover()); + if (grammar.external_tokens[i].corresponding_internal_token == rules::NONE()) { + parse_table.states[state_id].terminal_entries[Symbol::external(i)].actions.push_back(ParseAction::Recover()); + } } parse_table.add_terminal_action(state_id, END_OF_INPUT(), ParseAction::Recover()); diff --git a/src/runtime/parser.c b/src/runtime/parser.c index 855d7138..367f9796 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -19,11 +19,10 @@ parser__log(self); \ } \ -#define LOG_STACK() \ - if (self->print_debugging_graphs) { \ - ts_stack_print_dot_graph(self->stack, self->language->symbol_names, \ - stderr); \ - fputs("\n\n", stderr); \ +#define LOG_STACK() \ + if (self->print_debugging_graphs) { \ + ts_stack_print_dot_graph(self->stack, self->language->symbol_names, stderr); \ + fputs("\n\n", stderr); \ } #define LOG_TREE() \