]> git.saurik.com Git - bison.git/blobdiff - src/conflicts.c
build: be sure to include config.h first in the generated parser
[bison.git] / src / conflicts.c
index 99f096a2dbcf8cf28b66e2fce063cd2ec6b69360..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);
     }
@@ -561,7 +566,7 @@ conflicts_print (void)
 {
   if (! glr_parser && expected_rr_conflicts != -1)
     {
-      complain (Wother, _("%%expect-rr applies only to GLR parsers"));
+      complain (NULL, Wother, _("%%expect-rr applies only to GLR parsers"));
       expected_rr_conflicts = -1;
     }
 
@@ -569,7 +574,7 @@ conflicts_print (void)
      different strings to translate.  */
   {
     int total = count_sr_conflicts ();
-    // If %expect is not used, but %expect-rr is, then expect 0 sr.
+    /* If %expect is not used, but %expect-rr is, then expect 0 sr.  */
     int expected =
       (expected_sr_conflicts == -1 && expected_rr_conflicts != -1)
       ? 0
@@ -577,12 +582,12 @@ conflicts_print (void)
     if (expected != -1)
       {
         if (expected != total)
-          complain (complaint,
+          complain (NULL, complaint,
                     _("shift/reduce conflicts: %d found, %d expected"),
                     total, expected);
       }
     else if (total)
-      complain (Wconflicts_sr,
+      complain (NULL, Wconflicts_sr,
                 ngettext ("%d shift/reduce conflict",
                           "%d shift/reduce conflicts",
                           total),
@@ -591,7 +596,7 @@ conflicts_print (void)
 
   {
     int total = count_rr_conflicts (true);
-    // If %expect-rr is not used, but %expect is, then expect 0 rr.
+    /* If %expect-rr is not used, but %expect is, then expect 0 rr.  */
     int expected =
       (expected_rr_conflicts == -1 && expected_sr_conflicts != -1)
       ? 0
@@ -599,12 +604,12 @@ conflicts_print (void)
     if (expected != -1)
       {
         if (expected != total)
-          complain (complaint,
+          complain (NULL, complaint,
                     _("reduce/reduce conflicts: %d found, %d expected"),
                     total, expected);
       }
     else if (total)
-      complain (Wconflicts_rr,
+      complain (NULL, Wconflicts_rr,
                 ngettext ("%d reduce/reduce conflict",
                           "%d reduce/reduce conflicts",
                           total),