X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7d6bad195977b0204fc8406cac57cf5a4f1c769b..c53b6848897960bc783afdbc230e1a247977d63d:/src/conflicts.c diff --git a/src/conflicts.c b/src/conflicts.c index 885bd78f..18404736 100644 --- a/src/conflicts.c +++ b/src/conflicts.c @@ -276,11 +276,13 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors, int *nerrs) The precedence of shifting is that of token i. */ if (symbols[i]->prec < redprec) { + register_precedence (redrule->prec->number, i); log_resolution (redrule, i, reduce_resolution); flush_shift (s, i); } else if (symbols[i]->prec > redprec) { + register_precedence (i, redrule->prec->number); log_resolution (redrule, i, shift_resolution); flush_reduce (lookahead_tokens, i); } @@ -301,16 +303,19 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors, int *nerrs) break; case right_assoc: + register_assoc (i, redrule->prec->number); log_resolution (redrule, i, right_resolution); flush_reduce (lookahead_tokens, i); break; case left_assoc: + register_assoc (i, redrule->prec->number); log_resolution (redrule, i, left_resolution); flush_shift (s, i); break; case non_assoc: + register_assoc (i, redrule->prec->number); log_resolution (redrule, i, nonassoc_resolution); flush_shift (s, i); flush_reduce (lookahead_tokens, i); @@ -398,7 +403,7 @@ conflicts_solve (void) set_conflicts (states[i], errors); /* For uniformity of the code, make sure all the states have a valid - `errs' member. */ + 'errs' member. */ if (!states[i]->errs) states[i]->errs = errs_new (0, 0); }