]> git.saurik.com Git - bison.git/commitdiff
* src/reduce.c (reduce_output): Formatting changes.
authorAkim Demaille <akim@epita.fr>
Fri, 30 Nov 2001 10:49:01 +0000 (10:49 +0000)
committerAkim Demaille <akim@epita.fr>
Fri, 30 Nov 2001 10:49:01 +0000 (10:49 +0000)
* src/print.c (print_results, print_grammar): Likewise.
* tests/regression.at (Rule Line Numbers)
(Solved SR Conflicts, Unresolved SR Conflicts): Adjust.

ChangeLog
src/conflicts.c
src/print.c
src/reduce.c
tests/reduce.at
tests/regression.at

index afc46aa4eefaad1d8920c5942b88bb99b5e115ae..bfc68eddac3e41809869d006ec3dae162be38cb3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-30  Akim Demaille  <akim@epita.fr>
+
+       * src/reduce.c (reduce_output): Formatting changes.
+       * src/print.c (print_results, print_grammar): Likewise.
+       * tests/regression.at (Rule Line Numbers)
+       (Solved SR Conflicts, Unresolved SR Conflicts): Adjust.
+
 2001-11-30  Akim Demaille  <akim@epita.fr>
 
        * src/reduce.c (nonterminals_reduce): Instead of throwing away
 2001-11-30  Akim Demaille  <akim@epita.fr>
 
        * src/reduce.c (nonterminals_reduce): Instead of throwing away
index b6bacb94cde8d4e9444eb43f6e57e49d540e2c92..82ce14603f5ee7c50ab702f878b15caddf93b5f8 100644 (file)
@@ -419,6 +419,7 @@ conflict_report (int src_num, int rrc_num)
 void
 conflicts_output (FILE *out)
 {
 void
 conflicts_output (FILE *out)
 {
+  bool printed_sth = FALSE;
   int i;
   for (i = 0; i < nstates; i++)
     if (conflicts[i])
   int i;
   for (i = 0; i < nstates; i++)
     if (conflicts[i])
@@ -426,7 +427,10 @@ conflicts_output (FILE *out)
        fprintf (out, _("State %d contains "), i);
        fputs (conflict_report (count_sr_conflicts (i),
                                count_rr_conflicts (i)), out);
        fprintf (out, _("State %d contains "), i);
        fputs (conflict_report (count_sr_conflicts (i),
                                count_rr_conflicts (i)), out);
+       printed_sth = TRUE;
       }
       }
+  if (printed_sth)
+    fputs ("\n\n", out);
 }
 
 
 }
 
 
index 6a302962301e0199b0c25036f71b2a6080873f8f..977be596d836699711d3053ba788234b5bd22f4c 100644 (file)
@@ -181,11 +181,11 @@ print_actions (FILE *out, int state)
 static void
 print_state (FILE *out, int state)
 {
 static void
 print_state (FILE *out, int state)
 {
-  fputs ("\n\n", out);
   fprintf (out, _("state %d"), state);
   fputs ("\n\n", out);
   print_core (out, state);
   print_actions (out, state);
   fprintf (out, _("state %d"), state);
   fputs ("\n\n", out);
   print_core (out, state);
   print_actions (out, state);
+  fputs ("\n\n", out);
 }
 \f
 /*-----------------------------------------.
 }
 \f
 /*-----------------------------------------.
@@ -212,7 +212,7 @@ print_grammar (FILE *out)
   int column = 0;
 
   /* rule # : LHS -> RHS */
   int column = 0;
 
   /* rule # : LHS -> RHS */
-  fprintf (out, "\n%s\n\n", _("Grammar"));
+  fprintf (out, "%s\n\n", _("Grammar"));
   fprintf (out, "  %s\n", _("Number, Line, Rule"));
   for (i = 1; i <= nrules; i++)
     /* Don't print rules disabled in reduce_grammar_tables.  */
   fprintf (out, "  %s\n", _("Number, Line, Rule"));
   for (i = 1; i <= nrules; i++)
     /* Don't print rules disabled in reduce_grammar_tables.  */
@@ -228,9 +228,11 @@ print_grammar (FILE *out)
          fprintf (out, " /* %s */", _("empty"));
        fputc ('\n', out);
       }
          fprintf (out, " /* %s */", _("empty"));
        fputc ('\n', out);
       }
+  fputs ("\n\n", out);
+
 
   /* TERMINAL (type #) : rule #s terminal is on RHS */
 
   /* TERMINAL (type #) : rule #s terminal is on RHS */
-  fprintf (out, "\n%s\n\n", _("Terminals, with rules where they appear"));
+  fprintf (out, "%s\n\n", _("Terminals, with rules where they appear"));
   fprintf (out, "%s (-1)\n", tags[0]);
 
   for (i = 0; i <= max_user_token_number; i++)
   fprintf (out, "%s (-1)\n", tags[0]);
 
   for (i = 0; i <= max_user_token_number; i++)
@@ -252,9 +254,10 @@ print_grammar (FILE *out)
              }
        fprintf (out, "%s\n", buffer);
       }
              }
        fprintf (out, "%s\n", buffer);
       }
+  fputs ("\n\n", out);
+
 
 
-  fprintf (out, "\n%s\n\n",
-          _("Nonterminals, with rules where they appear"));
+  fprintf (out, "%s\n\n", _("Nonterminals, with rules where they appear"));
   for (i = ntokens; i <= nsyms - 1; i++)
     {
       int left_count = 0, right_count = 0;
   for (i = ntokens; i <= nsyms - 1; i++)
     {
       int left_count = 0, right_count = 0;
@@ -309,6 +312,7 @@ print_grammar (FILE *out)
        }
       fprintf (out, "%s\n", buffer);
     }
        }
       fprintf (out, "%s\n", buffer);
     }
+  fputs ("\n\n", out);
 }
 \f
 void
 }
 \f
 void
@@ -324,6 +328,8 @@ print_results (void)
 
       size_t size = obstack_object_size (&output_obstack);
       fwrite (obstack_finish (&output_obstack), 1, size, out);
 
       size_t size = obstack_object_size (&output_obstack);
       fwrite (obstack_finish (&output_obstack), 1, size, out);
+      if (size)
+       fputs ("\n\n", out);
 
       reduce_output (out);
       conflicts_output (out);
 
       reduce_output (out);
       conflicts_output (out);
index 7e164c50633e0eef306fa7472db69b83248434a7..626c195c0432c67d433443b616e763258cab1844 100644 (file)
@@ -407,50 +407,46 @@ nonterminals_reduce (void)
 void
 reduce_output (FILE *out)
 {
 void
 reduce_output (FILE *out)
 {
-  int i;
-  rule r;
-  bool b;
-
   if (nuseless_nonterminals > 0)
     {
   if (nuseless_nonterminals > 0)
     {
-      fprintf (out, _("Useless nonterminals:"));
-      fprintf (out, "\n\n");
+      int i;
+      fprintf (out, "%s\n\n", _("Useless nonterminals:"));
       for (i = 0; i < nuseless_nonterminals; ++i)
        fprintf (out, "   %s\n", tags[nsyms + i]);
       for (i = 0; i < nuseless_nonterminals; ++i)
        fprintf (out, "   %s\n", tags[nsyms + i]);
+      fputs ("\n\n", out);
     }
     }
-  b = FALSE;
-  for (i = 0; i < ntokens; i++)
-    {
+
+  {
+    bool b = FALSE;
+    int i;
+    for (i = 0; i < ntokens; i++)
       if (!BITISSET (V, i) && !BITISSET (V1, i))
        {
          if (!b)
       if (!BITISSET (V, i) && !BITISSET (V1, i))
        {
          if (!b)
-           {
-             fprintf (out, "\n\n");
-             fprintf (out, _("Terminals which are not used:"));
-             fprintf (out, "\n\n");
-             b = TRUE;
-           }
+           fprintf (out, "%s\n\n", _("Terminals which are not used:"));
+         b = TRUE;
          fprintf (out, "   %s\n", tags[i]);
        }
          fprintf (out, "   %s\n", tags[i]);
        }
-    }
+    if (b)
+      fputs ("\n\n", out);
+  }
 
   if (nuseless_productions > 0)
     {
 
   if (nuseless_productions > 0)
     {
-      fprintf (out, "\n\n");
-      fprintf (out, _("Useless rules:"));
-      fprintf (out, "\n\n");
+      int i;
+      fprintf (out, "%s\n\n", _("Useless rules:"));
       for (i = 1; i <= nrules; i++)
        if (!BITISSET (P, i))
          {
       for (i = 1; i <= nrules; i++)
        if (!BITISSET (P, i))
          {
+           rule r;
            fprintf (out, "#%-4d  ", i);
            fprintf (out, "%s :\t", tags[rule_table[i].lhs]);
            for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
              fprintf (out, " %s", tags[*r]);
            fprintf (out, "#%-4d  ", i);
            fprintf (out, "%s :\t", tags[rule_table[i].lhs]);
            for (r = &ritem[rule_table[i].rhs]; *r >= 0; r++)
              fprintf (out, " %s", tags[*r]);
-           fprintf (out, ";\n");
+           fputs (";\n", out);
          }
          }
+      fputs ("\n\n", out);
     }
     }
-  if (nuseless_nonterminals > 0 || nuseless_productions > 0 || b)
-    fprintf (out, "\n\n");
 }
 \f
 static void
 }
 \f
 static void
index 08601d509415f1b2139bc9b214241235ea8261d2..73856df91cffb323624eec4c34f57cd071651c73 100644 (file)
@@ -44,10 +44,12 @@ AT_DATA([[input.y]],
 exp: useful;
 ]])
 
 exp: useful;
 ]])
 
-AT_CHECK([[bison input.y]])
+AT_CHECK([[bison input.y]], 0, [],
+[[input.y contains 9 useless nonterminals
+]])
 
 AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
 
 AT_CHECK([[sed -n '/^Grammar/q;/^$/!p' input.output]], 0,
-[[Terminals which are not used:
+[[Useless nonterminals:
    useless1
    useless2
    useless3
    useless1
    useless2
    useless3
index f6b5fe0d5fa77586f19e26b64576f1d8ad33201c..f141c4b852bfbd76c91ddec1e37a2df3ccbdd203 100644 (file)
@@ -63,12 +63,14 @@ AT_CHECK([bison input.y -o input.c -v], 0, [],
 AT_CHECK([cat input.output], [],
 [[State 4 contains 1 shift/reduce conflict.
 
 AT_CHECK([cat input.output], [],
 [[State 4 contains 1 shift/reduce conflict.
 
+
 Grammar
 
   Number, Line, Rule
     1   3 exp -> exp OP exp
     2   3 exp -> NUM
 
 Grammar
 
   Number, Line, Rule
     1   3 exp -> exp OP exp
     2   3 exp -> NUM
 
+
 Terminals, with rules where they appear
 
 $ (-1)
 Terminals, with rules where they appear
 
 $ (-1)
@@ -76,6 +78,7 @@ error (256)
 NUM (257) 2
 OP (258) 1
 
 NUM (257) 2
 OP (258) 1
 
+
 Nonterminals, with rules where they appear
 
 exp (5)
 Nonterminals, with rules where they appear
 
 exp (5)
@@ -138,6 +141,8 @@ state 5
 state 6
 
     $default   accept
 state 6
 
     $default   accept
+
+
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -162,12 +167,14 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], [])
 AT_CHECK([cat input.output], [],
 [[Conflict in state 4 between rule 1 and token OP resolved as shift.
 
 AT_CHECK([cat input.output], [],
 [[Conflict in state 4 between rule 1 and token OP resolved as shift.
 
+
 Grammar
 
   Number, Line, Rule
     1   4 exp -> exp OP exp
     2   4 exp -> NUM
 
 Grammar
 
   Number, Line, Rule
     1   4 exp -> exp OP exp
     2   4 exp -> NUM
 
+
 Terminals, with rules where they appear
 
 $ (-1)
 Terminals, with rules where they appear
 
 $ (-1)
@@ -175,6 +182,7 @@ error (256)
 NUM (257) 2
 OP (258) 1
 
 NUM (257) 2
 OP (258) 1
 
+
 Nonterminals, with rules where they appear
 
 exp (5)
 Nonterminals, with rules where they appear
 
 exp (5)
@@ -236,6 +244,8 @@ state 5
 state 6
 
     $default   accept
 state 6
 
     $default   accept
+
+
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP
@@ -283,8 +293,7 @@ AT_CHECK([bison input.y -o input.c -v], 0, [], [])
 
 # Check the contents of the report.
 AT_CHECK([cat input.output], [],
 
 # Check the contents of the report.
 AT_CHECK([cat input.output], [],
-[[
-Grammar
+[[Grammar
 
   Number, Line, Rule
     1   2 @1 -> /* empty */
 
   Number, Line, Rule
     1   2 @1 -> /* empty */
@@ -292,6 +301,7 @@ Grammar
     3  15 @2 -> /* empty */
     4  15 expr -> @2 'c'
 
     3  15 @2 -> /* empty */
     4  15 expr -> @2 'c'
 
+
 Terminals, with rules where they appear
 
 $ (-1)
 Terminals, with rules where they appear
 
 $ (-1)
@@ -300,6 +310,7 @@ $ (-1)
 'c' (99) 4
 error (256)
 
 'c' (99) 4
 error (256)
 
+
 Nonterminals, with rules where they appear
 
 expr (6)
 Nonterminals, with rules where they appear
 
 expr (6)
@@ -378,6 +389,8 @@ state 7
 state 8
 
     $default   accept
 state 8
 
     $default   accept
+
+
 ]])
 
 AT_CLEANUP
 ]])
 
 AT_CLEANUP