]> git.saurik.com Git - bison.git/blobdiff - src/conflicts.c
muscle: enforce definition syntax for keyword variables
[bison.git] / src / conflicts.c
index 2ea6de1bfec9d701263509a213a6a3aad698308f..184047362064d6da09eef800c6eff2967abaf034 100644 (file)
@@ -1,6 +1,6 @@
 /* Find and resolve or report lookahead conflicts for bison,
 
-   Copyright (C) 1984, 1989, 1992, 2000-2012 Free Software Foundation,
+   Copyright (C) 1984, 1989, 1992, 2000-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -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);
     }