Treat reduce actions with different production IDs as distinct

This commit is contained in:
Max Brunsfeld 2015-12-09 14:23:19 -08:00
parent 2c2c567a29
commit 75f31a79a3
18 changed files with 40492 additions and 31041 deletions

View file

@ -324,13 +324,13 @@ class CCodeGenerator {
case ParseActionTypeShiftExtra:
add("SHIFT_EXTRA()");
break;
case ParseActionTypeReduceFragile:
add("REDUCE_FRAGILE(" + symbol_id(action.symbol) + ", " +
to_string(action.consumed_symbol_count) + ")");
break;
case ParseActionTypeReduce:
if (reduce_action_is_fragile(action))
add("REDUCE_FRAGILE(" + symbol_id(action.symbol) + ", " +
to_string(action.consumed_symbol_count) + ")");
else
add("REDUCE(" + symbol_id(action.symbol) + ", " +
to_string(action.consumed_symbol_count) + ")");
add("REDUCE(" + symbol_id(action.symbol) + ", " +
to_string(action.consumed_symbol_count) + ")");
break;
case ParseActionTypeReduceExtra:
add("REDUCE_EXTRA(" + symbol_id(action.symbol) + ")");
@ -392,11 +392,6 @@ class CCodeGenerator {
}
}
bool reduce_action_is_fragile(const ParseAction &action) const {
return parse_table.fragile_productions.find(action.production) !=
parse_table.fragile_productions.end();
}
// C-code generation functions
void _switch(string condition, function<void()> body) {