Avoid duplicate error state entries for tokens that are both internal & external

This commit is contained in:
Max Brunsfeld 2017-09-14 10:54:09 -07:00
parent 2721f72c41
commit 91456d7a17
2 changed files with 7 additions and 6 deletions

View file

@ -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());