bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03-fyi-expect.patch


From: Akim Demaille
Subject: 03-fyi-expect.patch
Date: Mon, 26 Nov 2001 10:18:01 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        
        * src/conflicts.c (conflicts_print): Don't complain at all when
        there are no reduce/reduce conflicts, and as many shift/reduce
        conflicts as expected.
        * tests/regression.at (%expect right): Adjust.
        
Index: NEWS
--- NEWS Sat, 24 Nov 2001 17:01:37 +0100 akim
+++ NEWS Sat, 24 Nov 2001 18:27:42 +0100 akim
@@ -3,6 +3,10 @@
 
 Changes in version 1.30e:
 
+* %expect
+  When the number of shift/reduce conflicts is correct, don't issue
+  any warning.
+
 * The verbose report includes the rule line numbers.
 
 * Rule line numbers are fixed in traces.
Index: src/conflicts.c
--- src/conflicts.c Sat, 24 Nov 2001 17:01:37 +0100 akim
+++ src/conflicts.c Sat, 24 Nov 2001 18:24:32 +0100 akim
@@ -439,6 +439,11 @@
 {
   int i;
 
+  /* Is the number of SR conflicts OK?  Either EXPECTED_CONFLICTS is
+     not set, and then we want 0 SR, or else it is specified, in which
+     case we want equality.  */
+  int src_ok = 0;
+
   int src_total = 0;
   int rrc_total = 0;
 
@@ -450,31 +455,34 @@
        rrc_total += count_rr_conflicts (i);
       }
 
+  src_ok = src_total == (expected_conflicts == -1 ? 0 : expected_conflicts);
+
+  /* If there are no RR conflicts, and as many SR conflicts as
+     expected, then there is nothing to report.  */
+  if (!rrc_total && src_ok)
+    return;
+
   /* Report the total number of conflicts on STDERR.  */
-  if (src_total || rrc_total)
+  if (yacc_flag)
+    {
+      /* If invoked with `--yacc', use the output format specified by
+        POSIX.  */
+      fprintf (stderr, _("conflicts: "));
+      if (src_total > 0)
+       fprintf (stderr, _(" %d shift/reduce"), src_total);
+      if (src_total > 0 && rrc_total > 0)
+       fprintf (stderr, ",");
+      if (rrc_total > 0)
+       fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
+      putc ('\n', stderr);
+    }
+  else
     {
-      if (yacc_flag)
-       {
-         /* If invoked with `--yacc', use the output format specified by
-            POSIX.  */
-         fprintf (stderr, _("conflicts: "));
-         if (src_total > 0)
-           fprintf (stderr, _(" %d shift/reduce"), src_total);
-         if (src_total > 0 && rrc_total > 0)
-           fprintf (stderr, ",");
-         if (rrc_total > 0)
-           fprintf (stderr, _(" %d reduce/reduce"), rrc_total);
-         putc ('\n', stderr);
-       }
-      else
-       {
-         fprintf (stderr, _("%s contains "), infile);
-         fputs (conflict_report (src_total, rrc_total), stderr);
-       }
+      fprintf (stderr, _("%s contains "), infile);
+      fputs (conflict_report (src_total, rrc_total), stderr);
     }
 
-  if (expected_conflicts != -1
-      && src_total != expected_conflicts)
+  if (expected_conflicts != -1 && !src_ok)
     {
       complain_message_count++;
       fprintf (stderr, ngettext ("expected %d shift/reduce conflict\n",
Index: tests/regression.at
--- tests/regression.at Thu, 22 Nov 2001 21:32:24 +0100 akim
+++ tests/regression.at Sat, 24 Nov 2001 18:26:37 +0100 akim
@@ -275,9 +275,7 @@ exp: exp OP exp | NUM;
 exp: exp OP exp | NUM;
 ]])
 
-AT_CHECK([bison input.y -o input.c], 0, [],
-[input.y contains 1 shift/reduce conflict.
-])
+AT_CHECK([bison input.y -o input.c], 0)
 AT_CLEANUP
 
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]