From 26dad872998e58d70eb84c856dde75954b5e78d8 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sun, 6 Dec 2015 14:09:24 -0800 Subject: [PATCH] Always mark reduce actions as fragile when they're discarded due to precedence --- src/compiler/build_tables/build_parse_table.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/compiler/build_tables/build_parse_table.cc b/src/compiler/build_tables/build_parse_table.cc index a4989abc..c4cfa9e2 100644 --- a/src/compiler/build_tables/build_parse_table.cc +++ b/src/compiler/build_tables/build_parse_table.cc @@ -172,13 +172,15 @@ class ParseTableBuilder { break; case ConflictTypeResolved: { - if (resolution.first) + if (resolution.first) { + if (old_action.type == ParseActionTypeReduce) + parse_table.fragile_productions.insert(old_action.production); return &parse_table.set_action(state_id, lookahead, new_action); - if (old_action.type == ParseActionTypeReduce) - parse_table.fragile_productions.insert(old_action.production); - if (new_action.type == ParseActionTypeReduce) - parse_table.fragile_productions.insert(new_action.production); - break; + } else { + if (new_action.type == ParseActionTypeReduce) + parse_table.fragile_productions.insert(new_action.production); + break; + } } case ConflictTypeUnresolved: {