bison-patches
[Top][All Lists]
Advanced

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

08-fyi-protect-prec.patch


From: Akim Demaille
Subject: 08-fyi-protect-prec.patch
Date: Mon, 22 Apr 2002 10:04:46 +0200

Index: ChangeLog
from  Akim Demaille  <address@hidden>

        * src/reduce.c (dump_grammar): Move to...
        * src/gram.h, src/gram.c (grammar_dump): here.
        Be sure to separate long item numbers.
        Don't read the members of a rule's prec if its nil.

Index: src/gram.c
--- src/gram.c Wed, 10 Apr 2002 23:20:06 +0200 akim
+++ src/gram.c Sat, 20 Apr 2002 20:24:20 +0200 akim
@@ -21,8 +21,9 @@

 #include "system.h"
 #include "quotearg.h"
-#include "gram.h"
 #include "symtab.h"
+#include "gram.h"
+#include "reduce.h"
 #include "reader.h"

 /* comments for these variables are in gram.h  */
@@ -101,4 +102,62 @@
     }

   return max;
+}
+
+
+/*-------------------.
+| Dump the grammar.  |
+`-------------------*/
+
+void
+grammar_dump (FILE *out, const char *title)
+{
+  int i;
+  item_number_t *r;
+
+  fprintf (out, "%s\n\n", title);
+  fprintf (out,
+          "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = 
%d\n\n",
+          ntokens, nvars, nsyms, nrules, nritems);
+  fprintf (out, "Variables\n---------\n\n");
+  fprintf (out, "Value  Sprec  Sassoc  Tag\n");
+  for (i = ntokens; i < nsyms; i++)
+    fprintf (out, "%5d  %5d   %5d  %s\n",
+            i,
+            symbols[i]->prec, symbols[i]->assoc,
+            quotearg_style (escape_quoting_style, symbols[i]->tag));
+  fprintf (out, "\n\n");
+  fprintf (out, "Rules\n-----\n\n");
+  fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem 
range) [Num]\n");
+  for (i = 1; i < nrules + nuseless_productions + 1; i++)
+    {
+      int rhs_count = 0;
+      /* Find the last RHS index in ritems. */
+      for (r = rules[i].rhs; *r >= 0; ++r)
+       ++rhs_count;
+      fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",
+              i - 1,
+              rules[i].prec ? rules[i].prec->prec : 0,
+              rules[i].prec ? rules[i].prec->assoc : 0,
+              rules[i].useful,
+              rules[i].rhs - ritem,
+              rules[i].rhs - ritem + rhs_count - 1,
+              rules[i].lhs->number);
+      /* Dumped the RHS. */
+      for (r = rules[i].rhs; *r >= 0; r++)
+       fprintf (out, " %3d", *r);
+      fprintf (out, "  [%d]\n", -(*r) - 1);
+    }
+  fprintf (out, "\n\n");
+  fprintf (out, "Rules interpreted\n-----------------\n\n");
+  for (i = 1; i < nrules + nuseless_productions + 1; i++)
+    {
+      fprintf (out, "%-5d  %s :",
+              i, quotearg_style (escape_quoting_style, rules[i].lhs->tag));
+      for (r = rules[i].rhs; *r >= 0; r++)
+       fprintf (out, " %s",
+                quotearg_style (escape_quoting_style, symbols[*r]->tag));
+      fputc ('\n', out);
+    }
+  fprintf (out, "\n\n");
 }
Index: src/gram.h
--- src/gram.h Wed, 10 Apr 2002 23:20:06 +0200 akim
+++ src/gram.h Sat, 20 Apr 2002 20:21:35 +0200 akim
@@ -186,4 +186,7 @@
 /* Return the size of the longest rule RHS.  */
 size_t ritem_longest_rhs PARAMS ((void));

+/* Dump the grammar. */
+void grammar_dump PARAMS ((FILE *out, const char *title));
+
 #endif /* !GRAM_H_ */
Index: src/reduce.c
--- src/reduce.c Wed, 10 Apr 2002 23:20:06 +0200 akim
+++ src/reduce.c Sat, 20 Apr 2002 20:24:01 +0200 akim
@@ -51,7 +51,7 @@
 static bitset V1;

 static int nuseful_productions;
-static int nuseless_productions;
+int nuseless_productions;
 static int nuseful_nonterminals;
 int nuseless_nonterminals;
 
@@ -371,58 +371,7 @@
     }
 }
 
-static void
-dump_grammar (FILE *out)
-{
-  int i;
-  item_number_t *r;

-  fprintf (out, "REDUCED GRAMMAR\n\n");
-  fprintf (out,
-          "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = 
%d\n\n",
-          ntokens, nvars, nsyms, nrules, nritems);
-  fprintf (out, "Variables\n---------\n\n");
-  fprintf (out, "Value  Sprec  Sassoc  Tag\n");
-  for (i = ntokens; i < nsyms; i++)
-    fprintf (out, "%5d  %5d   %5d  %s\n",
-            i,
-            symbols[i]->prec, symbols[i]->assoc,
-            quotearg_style (escape_quoting_style, symbols[i]->tag));
-  fprintf (out, "\n\n");
-  fprintf (out, "Rules\n-----\n\n");
-  fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem 
range) [Num]\n");
-  for (i = 1; i < nrules + nuseless_productions + 1; i++)
-    {
-      int rhs_count = 0;
-      /* Find the last RHS index in ritems. */
-      for (r = rules[i].rhs; *r >= 0; ++r)
-       ++rhs_count;
-      fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",
-              i - 1,
-              rules[i].prec->prec,
-              rules[i].prec->assoc,
-              rules[i].useful,
-              rules[i].rhs - ritem,
-              rules[i].rhs - ritem + rhs_count - 1,
-              rules[i].lhs->number);
-      /* Dumped the RHS. */
-      for (r = rules[i].rhs; *r >= 0; r++)
-       fprintf (out, "%3d", *r);
-      fprintf (out, "  [%d]\n", -(*r) - 1);
-    }
-  fprintf (out, "\n\n");
-  fprintf (out, "Rules interpreted\n-----------------\n\n");
-  for (i = 1; i < nrules + nuseless_productions + 1; i++)
-    {
-      fprintf (out, "%-5d  %s :",
-              i, quotearg_style (escape_quoting_style, rules[i].lhs->tag));
-      for (r = rules[i].rhs; *r >= 0; r++)
-       fprintf (out, " %s",
-                quotearg_style (escape_quoting_style, symbols[*r]->tag));
-      fputc ('\n', out);
-    }
-  fprintf (out, "\n\n");
-}



@@ -494,7 +443,7 @@

   if (trace_flag)
     {
-      dump_grammar (stderr);
+      grammar_dump (stderr, "Reduced Grammar");

       fprintf (stderr, "reduced %s defines %d terminals, %d nonterminals\
 , and %d productions.\n",
Index: src/reduce.h
--- src/reduce.h Sat, 01 Dec 2001 13:09:59 +0100 akim
+++ src/reduce.h Sat, 20 Apr 2002 20:23:59 +0200 akim
@@ -1,5 +1,5 @@
 /* Grammar reduction for Bison.
-   Copyright 2000, 2001  Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002  Free Software Foundation, Inc.

    This file is part of Bison, the GNU Compiler Compiler.

@@ -26,4 +26,5 @@
 void reduce_free PARAMS ((void));

 extern int nuseless_nonterminals;
+extern int nuseless_productions;
 #endif /* !REDUCE_H_ */



reply via email to

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