[Top][All Lists]
[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");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- 01-fyi-trace-ritem.patch,
Akim Demaille <=