Treat reduce actions with different production IDs as distinct
This commit is contained in:
parent
2c2c567a29
commit
75f31a79a3
18 changed files with 40492 additions and 31041 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue