]> 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,
 
 /* 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.
    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))
     {
 
   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))
   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.  */
 
   /* 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)
   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)
       if (rrc_total)
-       complain (_("expected 0 reduce/reduce conflicts"));
+       warn (_("expected 0 reduce/reduce conflicts"));
     }
 }
 
     }
 }