]> git.saurik.com Git - bison.git/blobdiff - src/print.c
output: do not generate source files when early errors are caught
[bison.git] / src / print.c
index 8a51517c9632893720995740e92d5a698467bb32..53779defa266200ce977828597420e4736c13343 100644 (file)
@@ -96,7 +96,7 @@ print_core (FILE *out, state *s)
       sp1 = sp = ritem + sitems[i];
 
       while (*sp >= 0)
       sp1 = sp = ritem + sitems[i];
 
       while (*sp >= 0)
-       sp++;
+        sp++;
 
       r = item_number_as_rule_number (*sp);
 
 
       r = item_number_as_rule_number (*sp);
 
@@ -104,15 +104,18 @@ print_core (FILE *out, state *s)
       previous_lhs = rules[r].lhs;
 
       for (sp = rules[r].rhs; sp < sp1; sp++)
       previous_lhs = rules[r].lhs;
 
       for (sp = rules[r].rhs; sp < sp1; sp++)
-       fprintf (out, " %s", symbols[*sp]->tag);
+        fprintf (out, " %s", symbols[*sp]->tag);
       fputs (" .", out);
       fputs (" .", out);
-      for (/* Nothing */; *sp >= 0; ++sp)
-       fprintf (out, " %s", symbols[*sp]->tag);
+      if (0 <= *rules[r].rhs)
+        for (/* Nothing */; 0 <= *sp; ++sp)
+          fprintf (out, " %s", symbols[*sp]->tag);
+      else
+        fprintf (out, " %%empty");
 
       /* Display the lookahead tokens?  */
       if (report_flag & report_lookahead_tokens
           && item_number_is_rule_number (*sp1))
 
       /* Display the lookahead tokens?  */
       if (report_flag & report_lookahead_tokens
           && item_number_is_rule_number (*sp1))
-       state_rule_lookahead_tokens_print (s, &rules[r], out);
+        state_rule_lookahead_tokens_print (s, &rules[r], out);
 
       fputc ('\n', out);
     }
 
       fputc ('\n', out);
     }
@@ -134,10 +137,10 @@ print_transitions (state *s, FILE *out, bool display_transitions_p)
   /* Compute the width of the lookahead token column.  */
   for (i = 0; i < trans->num; i++)
     if (!TRANSITION_IS_DISABLED (trans, i)
   /* Compute the width of the lookahead token column.  */
   for (i = 0; i < trans->num; i++)
     if (!TRANSITION_IS_DISABLED (trans, i)
-       && TRANSITION_IS_SHIFT (trans, i) == display_transitions_p)
+        && TRANSITION_IS_SHIFT (trans, i) == display_transitions_p)
       {
       {
-       symbol *sym = symbols[TRANSITION_SYMBOL (trans, i)];
-       max_length (&width, sym->tag);
+        symbol *sym = symbols[TRANSITION_SYMBOL (trans, i)];
+        max_length (&width, sym->tag);
       }
 
   /* Nothing to report. */
       }
 
   /* Nothing to report. */
@@ -150,20 +153,20 @@ print_transitions (state *s, FILE *out, bool display_transitions_p)
   /* Report lookahead tokens and shifts.  */
   for (i = 0; i < trans->num; i++)
     if (!TRANSITION_IS_DISABLED (trans, i)
   /* Report lookahead tokens and shifts.  */
   for (i = 0; i < trans->num; i++)
     if (!TRANSITION_IS_DISABLED (trans, i)
-       && TRANSITION_IS_SHIFT (trans, i) == display_transitions_p)
+        && TRANSITION_IS_SHIFT (trans, i) == display_transitions_p)
       {
       {
-       symbol *sym = symbols[TRANSITION_SYMBOL (trans, i)];
-       const char *tag = sym->tag;
-       state *s1 = trans->states[i];
-       int j;
-
-       fprintf (out, "    %s", tag);
-       for (j = width - strlen (tag); j > 0; --j)
-         fputc (' ', out);
-       if (display_transitions_p)
-         fprintf (out, _("shift, and go to state %d\n"), s1->number);
-       else
-         fprintf (out, _("go to state %d\n"), s1->number);
+        symbol *sym = symbols[TRANSITION_SYMBOL (trans, i)];
+        const char *tag = sym->tag;
+        state *s1 = trans->states[i];
+        int j;
+
+        fprintf (out, "    %s", tag);
+        for (j = width - strlen (tag); j > 0; --j)
+          fputc (' ', out);
+        if (display_transitions_p)
+          fprintf (out, _("shift, and go to state %d\n"), s1->number);
+        else
+          fprintf (out, _("go to state %d\n"), s1->number);
       }
 }
 
       }
 }
 
@@ -195,26 +198,26 @@ print_errs (FILE *out, state *s)
   for (i = 0; i < errp->num; ++i)
     if (errp->symbols[i])
       {
   for (i = 0; i < errp->num; ++i)
     if (errp->symbols[i])
       {
-       const char *tag = errp->symbols[i]->tag;
-       int j;
-       fprintf (out, "    %s", tag);
-       for (j = width - strlen (tag); j > 0; --j)
-         fputc (' ', out);
-       fputs (_("error (nonassociative)\n"), out);
+        const char *tag = errp->symbols[i]->tag;
+        int j;
+        fprintf (out, "    %s", tag);
+        for (j = width - strlen (tag); j > 0; --j)
+          fputc (' ', out);
+        fputs (_("error (nonassociative)\n"), out);
       }
 }
 
 
 /*-------------------------------------------------------------------------.
       }
 }
 
 
 /*-------------------------------------------------------------------------.
-| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be `default').  |
+| Report a reduction of RULE on LOOKAHEAD_TOKEN (which can be 'default').  |
 | If not ENABLED, the rule is masked by a shift or a reduce (S/R and       |
 | R/R conflicts).                                                          |
 `-------------------------------------------------------------------------*/
 
 static void
 print_reduction (FILE *out, size_t width,
 | If not ENABLED, the rule is masked by a shift or a reduce (S/R and       |
 | R/R conflicts).                                                          |
 `-------------------------------------------------------------------------*/
 
 static void
 print_reduction (FILE *out, size_t width,
-                const char *lookahead_token,
-                rule *r, bool enabled)
+                 const char *lookahead_token,
+                 rule *r, bool enabled)
 {
   int j;
   fprintf (out, "    %s", lookahead_token);
 {
   int j;
   fprintf (out, "    %s", lookahead_token);
@@ -266,22 +269,22 @@ print_reductions (FILE *out, state *s)
   if (reds->lookahead_tokens)
     for (i = 0; i < ntokens; i++)
       {
   if (reds->lookahead_tokens)
     for (i = 0; i < ntokens; i++)
       {
-       bool count = bitset_test (no_reduce_set, i);
-
-       for (j = 0; j < reds->num; ++j)
-         if (bitset_test (reds->lookahead_tokens[j], i))
-           {
-             if (! count)
-               {
-                 if (reds->rules[j] != default_reduction)
-                   max_length (&width, symbols[i]->tag);
-                 count = true;
-               }
-             else
-               {
-                 max_length (&width, symbols[i]->tag);
-               }
-           }
+        bool count = bitset_test (no_reduce_set, i);
+
+        for (j = 0; j < reds->num; ++j)
+          if (bitset_test (reds->lookahead_tokens[j], i))
+            {
+              if (! count)
+                {
+                  if (reds->rules[j] != default_reduction)
+                    max_length (&width, symbols[i]->tag);
+                  count = true;
+                }
+              else
+                {
+                  max_length (&width, symbols[i]->tag);
+                }
+            }
       }
 
   /* Nothing to report. */
       }
 
   /* Nothing to report. */
@@ -295,49 +298,49 @@ print_reductions (FILE *out, state *s)
   if (reds->lookahead_tokens)
     for (i = 0; i < ntokens; i++)
       {
   if (reds->lookahead_tokens)
     for (i = 0; i < ntokens; i++)
       {
-       bool defaulted = false;
-       bool count = bitset_test (no_reduce_set, i);
+        bool defaulted = false;
+        bool count = bitset_test (no_reduce_set, i);
         if (count)
           default_reduction_only = false;
 
         if (count)
           default_reduction_only = false;
 
-       for (j = 0; j < reds->num; ++j)
-         if (bitset_test (reds->lookahead_tokens[j], i))
-           {
-             if (! count)
-               {
-                 if (reds->rules[j] != default_reduction)
+        for (j = 0; j < reds->num; ++j)
+          if (bitset_test (reds->lookahead_tokens[j], i))
+            {
+              if (! count)
+                {
+                  if (reds->rules[j] != default_reduction)
                     {
                       default_reduction_only = false;
                       print_reduction (out, width,
                                        symbols[i]->tag,
                                        reds->rules[j], true);
                     }
                     {
                       default_reduction_only = false;
                       print_reduction (out, width,
                                        symbols[i]->tag,
                                        reds->rules[j], true);
                     }
-                 else
-                   defaulted = true;
-                 count = true;
-               }
-             else
-               {
+                  else
+                    defaulted = true;
+                  count = true;
+                }
+              else
+                {
                   default_reduction_only = false;
                   default_reduction_only = false;
-                 if (defaulted)
-                   print_reduction (out, width,
-                                    symbols[i]->tag,
-                                    default_reduction, true);
-                 defaulted = false;
-                 print_reduction (out, width,
-                                  symbols[i]->tag,
-                                  reds->rules[j], false);
-               }
-           }
+                  if (defaulted)
+                    print_reduction (out, width,
+                                     symbols[i]->tag,
+                                     default_reduction, true);
+                  defaulted = false;
+                  print_reduction (out, width,
+                                   symbols[i]->tag,
+                                   reds->rules[j], false);
+                }
+            }
       }
 
   if (default_reduction)
     {
       char *default_reductions =
       }
 
   if (default_reduction)
     {
       char *default_reductions =
-        muscle_percent_define_get ("lr.default-reductions");
+        muscle_percent_define_get ("lr.default-reduction");
       print_reduction (out, width, _("$default"), default_reduction, true);
       print_reduction (out, width, _("$default"), default_reduction, true);
-      aver (0 == strcmp (default_reductions, "most")
-            || (0 == strcmp (default_reductions, "consistent")
+      aver (STREQ (default_reductions, "most")
+            || (STREQ (default_reductions, "consistent")
                 && default_reduction_only)
             || (reds->num == 1 && reds->rules[0]->number == 0));
       free (default_reductions);
                 && default_reduction_only)
             || (reds->num == 1 && reds->rules[0]->number == 0));
       free (default_reductions);
@@ -385,15 +388,15 @@ print_state (FILE *out, state *s)
 | Print information on the whole grammar.  |
 `-----------------------------------------*/
 
 | Print information on the whole grammar.  |
 `-----------------------------------------*/
 
-#define END_TEST(End)                          \
-do {                                           \
-  if (column + strlen(buffer) > (End))         \
-                                             \
-      fprintf (out, "%s\n   ", buffer);                \
-      column = 3;                              \
-      buffer[0] = 0;                           \
-                                             \
-} while (0)
+#define END_TEST(End)                           \
+  do {                                          \
+    if (column + strlen (buffer) > (End))       \
+      {                                         \
+        fprintf (out, "%s\n   ", buffer);       \
+        column = 3;                             \
+        buffer[0] = 0;                          \
+      }                                         \
+  } while (0)
 
 
 static void
 
 
 static void
@@ -410,25 +413,25 @@ print_grammar (FILE *out)
   for (i = 0; i < max_user_token_number + 1; i++)
     if (token_translations[i] != undeftoken->number)
       {
   for (i = 0; i < max_user_token_number + 1; i++)
     if (token_translations[i] != undeftoken->number)
       {
-       const char *tag = symbols[token_translations[i]]->tag;
-       rule_number r;
-       item_number *rhsp;
-
-       buffer[0] = 0;
-       column = strlen (tag);
-       fputs (tag, out);
-       END_TEST (65);
-       sprintf (buffer, " (%d)", i);
-
-       for (r = 0; r < nrules; r++)
-         for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
-           if (item_number_as_symbol_number (*rhsp) == token_translations[i])
-             {
-               END_TEST (65);
-               sprintf (buffer + strlen (buffer), " %d", r);
-               break;
-             }
-       fprintf (out, "%s\n", buffer);
+        const char *tag = symbols[token_translations[i]]->tag;
+        rule_number r;
+        item_number *rhsp;
+
+        buffer[0] = 0;
+        column = strlen (tag);
+        fputs (tag, out);
+        END_TEST (65);
+        sprintf (buffer, " (%d)", i);
+
+        for (r = 0; r < nrules; r++)
+          for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
+            if (item_number_as_symbol_number (*rhsp) == token_translations[i])
+              {
+                END_TEST (65);
+                sprintf (buffer + strlen (buffer), " %d", r);
+                break;
+              }
+        fprintf (out, "%s\n", buffer);
       }
   fputs ("\n\n", out);
 
       }
   fputs ("\n\n", out);
 
@@ -441,17 +444,17 @@ print_grammar (FILE *out)
       const char *tag = symbols[i]->tag;
 
       for (r = 0; r < nrules; r++)
       const char *tag = symbols[i]->tag;
 
       for (r = 0; r < nrules; r++)
-       {
-         item_number *rhsp;
-         if (rules[r].lhs->number == i)
-           left_count++;
-         for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
-           if (item_number_as_symbol_number (*rhsp) == i)
-             {
-               right_count++;
-               break;
-             }
-       }
+        {
+          item_number *rhsp;
+          if (rules[r].lhs->number == i)
+            left_count++;
+          for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
+            if (item_number_as_symbol_number (*rhsp) == i)
+              {
+                right_count++;
+                break;
+              }
+        }
 
       buffer[0] = 0;
       fputs (tag, out);
 
       buffer[0] = 0;
       fputs (tag, out);
@@ -460,38 +463,38 @@ print_grammar (FILE *out)
       END_TEST (0);
 
       if (left_count > 0)
       END_TEST (0);
 
       if (left_count > 0)
-       {
-         END_TEST (65);
-         sprintf (buffer + strlen (buffer), _(" on left:"));
-
-         for (r = 0; r < nrules; r++)
-           {
-             if (rules[r].lhs->number == i)
-               {
-                 END_TEST (65);
-                 sprintf (buffer + strlen (buffer), " %d", r);
-               }
-           }
-       }
+        {
+          END_TEST (65);
+          sprintf (buffer + strlen (buffer), _(" on left:"));
+
+          for (r = 0; r < nrules; r++)
+            {
+              if (rules[r].lhs->number == i)
+                {
+                  END_TEST (65);
+                  sprintf (buffer + strlen (buffer), " %d", r);
+                }
+            }
+        }
 
       if (right_count > 0)
 
       if (right_count > 0)
-       {
-         if (left_count > 0)
-           sprintf (buffer + strlen (buffer), ",");
-         END_TEST (65);
-         sprintf (buffer + strlen (buffer), _(" on right:"));
-         for (r = 0; r < nrules; r++)
-           {
-             item_number *rhsp;
-             for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
-               if (item_number_as_symbol_number (*rhsp) == i)
-                 {
-                   END_TEST (65);
-                   sprintf (buffer + strlen (buffer), " %d", r);
-                   break;
-                 }
-           }
-       }
+        {
+          if (left_count > 0)
+            sprintf (buffer + strlen (buffer), ",");
+          END_TEST (65);
+          sprintf (buffer + strlen (buffer), _(" on right:"));
+          for (r = 0; r < nrules; r++)
+            {
+              item_number *rhsp;
+              for (rhsp = rules[r].rhs; *rhsp >= 0; rhsp++)
+                if (item_number_as_symbol_number (*rhsp) == i)
+                  {
+                    END_TEST (65);
+                    sprintf (buffer + strlen (buffer), " %d", r);
+                    break;
+                  }
+            }
+        }
       fprintf (out, "%s\n", buffer);
     }
 }
       fprintf (out, "%s\n", buffer);
     }
 }
@@ -507,14 +510,14 @@ print_results (void)
 
   reduce_output (out);
   grammar_rules_partial_print (out,
 
   reduce_output (out);
   grammar_rules_partial_print (out,
-                              _("Rules useless in parser due to conflicts"),
+                               _("Rules useless in parser due to conflicts"),
                                  rule_useless_in_parser_p);
   conflicts_output (out);
 
   print_grammar (out);
 
   /* If the whole state item sets, not only the kernels, are wanted,
                                  rule_useless_in_parser_p);
   conflicts_output (out);
 
   print_grammar (out);
 
   /* If the whole state item sets, not only the kernels, are wanted,
-     `closure' will be run, which needs memory allocation/deallocation.   */
+     'closure' will be run, which needs memory allocation/deallocation.   */
   if (report_flag & report_itemsets)
     new_closure (nritems);
   /* Storage for print_reductions.  */
   if (report_flag & report_itemsets)
     new_closure (nritems);
   /* Storage for print_reductions.  */