bison-patches
[Top][All Lists]
Advanced

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

01-fyi-trace-ritem.patch


From: Akim Demaille
Subject: 01-fyi-trace-ritem.patch
Date: Wed, 05 Dec 2001 08:24:07 +0100

Index: ChangeLog
from  Akim Demaille  <address@hidden>
        
        * src/gram.c, src/gram.h (ritem_print): New.
        * src/gram.c (dummy): Remove, now there is actual code in gram.c.
        (This useless function was defined only to work around VMS linkers
        that can't handle compilation units with variables only).
        * src/reduce.c (dump_grammar): Use it to trace the construction of
        ritem.
        
Index: src/gram.c
--- src/gram.c Fri, 16 Nov 2001 01:00:46 +0100 akim
+++ src/gram.c Sat, 01 Dec 2001 12:38:10 +0100 akim
@@ -21,6 +21,7 @@
 
 #include "system.h"
 #include "gram.h"
+#include "reader.h"
 
 void dummy PARAMS((void));
 
@@ -52,10 +53,15 @@
 
 int error_token_number;
 
-/* This is to avoid linker problems which occur on VMS when using GCC,
-   when the file in question contains data definitions only.  */
-
 void
-dummy (void)
+ritem_print (FILE *out)
 {
+  int i;
+  fputs ("RITEM\n", out);
+  for (i = 0; ritem[i]; ++i)
+    if (ritem[i] > 0)
+      fprintf (out, "  %s", tags[ritem[i]]);
+    else
+      fprintf (out, "  (rule %d)\n", -ritem[i]);
+  fputs ("\n\n", out);
 }
Index: src/gram.h
--- src/gram.h Fri, 30 Nov 2001 00:04:35 +0100 akim
+++ src/gram.h Sat, 01 Dec 2001 12:38:10 +0100 akim
@@ -147,4 +147,8 @@
 /* ERROR_TOKEN_NUMBER is the token number of the error token.  */
 
 extern int error_token_number;
+
+
+/* Dump RITEM for traces. */
+void ritem_print (FILE *out);
 #endif /* !GRAM_H_ */
Index: src/reader.c
--- src/reader.c Fri, 30 Nov 2001 00:04:35 +0100 akim
+++ src/reader.c Sat, 01 Dec 2001 12:38:10 +0100 akim
@@ -1911,6 +1911,9 @@
     }
 
   ritem[itemno] = 0;
+
+  if (trace_flag)
+    ritem_print (stderr);
 }
 
 /*-------------------------------------------------------------------.
Index: src/reduce.c
--- src/reduce.c Fri, 30 Nov 2001 00:04:35 +0100 akim
+++ src/reduce.c Sat, 01 Dec 2001 12:38:10 +0100 akim
@@ -455,18 +455,22 @@
     fprintf (out, "%5d  %5d   %5d  %s\n", i, sprec[i], sassoc[i], tags[i]);
   fprintf (out, "\n\n");
   fprintf (out, "Rules\n-----\n\n");
-  fprintf (out, "Num (Prec, Assoc) Lhs : (@Rhs) Ritems [Num?]\n");
+  fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem 
range) [Num]\n");
   for (i = 1; i <= nrules; i++)
     {
-      fprintf (out, "%-5d(%5d%5d)%5d : (@%-5d)",
+      int rhs_count = 0;
+      /* Find the last RHS index in ritems. */
+      for (r = &ritem[rule_table[i].rhs]; *r > 0; ++r)
+       ++rhs_count;
+      fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",
               i,
-              rule_table[i].prec,
-              rule_table[i].assoc,
-              rule_table[i].lhs,
-              rule_table[i].rhs);
+              rule_table[i].prec, rule_table[i].assoc, rule_table[i].useful,
+              rule_table[i].rhs, rule_table[i].rhs + rhs_count - 1,
+              rule_table[i].lhs);
+      /* Dumped the RHS. */
       for (r = &ritem[rule_table[i].rhs]; *r > 0; r++)
-       fprintf (out, "%5d", *r);
-      fprintf (out, " [%d]\n", -(*r));
+       fprintf (out, "%3d", *r);
+      fprintf (out, "  [%d]\n", -(*r));
     }
   fprintf (out, "\n\n");
   fprintf (out, "Rules interpreted\n-----------------\n\n");



reply via email to

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