]> git.saurik.com Git - bison.git/blobdiff - src/conflicts.c
* data/yacc.c: (b4_lex_param): Corrected for the case where
[bison.git] / src / conflicts.c
index 721627f2ced20c22cc3f423b9078f1fc2f8a1732..fe1f6f9f6b211251be79ed24e262c1bcfa278831 100644 (file)
@@ -1,6 +1,6 @@
 /* Find and resolve or report look-ahead conflicts for bison,
 
-   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002
+   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2003
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -237,9 +237,12 @@ resolve_sr_conflict (state *s, int ruleno, symbol **errors)
            }
       }
 
-  /* Some tokens have been explicitly made errors.  Allocate a
-     permanent errs structure for this state, to record them.  */
-  state_errs_set (s, nerrs, errors);
+  if (nerrs)
+    {
+      /* Some tokens have been explicitly made errors.  Allocate a
+        permanent errs structure for this state, to record them.  */
+      state_errs_set (s, nerrs, errors);
+    }
 
   if (obstack_object_size (&solved_conflicts_obstack))
     {
@@ -277,10 +280,7 @@ set_conflicts (state *s, symbol **errors)
   for (i = 0; i < reds->num; ++i)
     if (reds->rules[i]->prec && reds->rules[i]->prec->prec
        && !bitset_disjoint_p (reds->lookaheads[i], lookaheadset))
-      {
-       resolve_sr_conflict (s, i, errors);
-       break;
-      }
+      resolve_sr_conflict (s, i, errors);
 
   /* Loop over all rules which require lookahead in this state.  Check
      for conflicts not resolved above.  */
@@ -495,12 +495,12 @@ conflicts_print (void)
   if (expected_conflicts != -1)
     {
       if (! src_ok)
-       complain (ngettext ("expected %d shift/reduce conflict",
-                           "expected %d shift/reduce conflicts",
-                           expected_conflicts),
-                 expected_conflicts);
+       warn (ngettext ("expected %d shift/reduce conflict",
+                       "expected %d shift/reduce conflicts",
+                       expected_conflicts),
+             expected_conflicts);
       if (rrc_total)
-       complain (_("expected 0 reduce/reduce conflicts"));
+       warn (_("expected 0 reduce/reduce conflicts"));
     }
 }