* src/lalr.c (lookaheads_print): New.

(lalr): Call it when --trace-flag.
* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
are dumped.
This commit is contained in:
Akim Demaille
2001-12-29 14:16:16 +00:00
parent 3d4daee374
commit 7c6b64d023
3 changed files with 43 additions and 0 deletions

View File

@@ -1,3 +1,11 @@
2001-12-29 Akim Demaille <akim@epita.fr>
* src/lalr.c (lookaheads_print): New.
(lalr): Call it when --trace-flag.
* tests/sets.at (Nullable): Adjust: when tracing, the lookaheads
are dumped.
2001-12-29 Akim Demaille <akim@epita.fr>
* src/derives.c (print_derives): Be sure to use `>= 0', not `> 0',

View File

@@ -24,6 +24,7 @@
tokens they accept. */
#include "system.h"
#include "reader.h"
#include "types.h"
#include "LR0.h"
#include "gram.h"
@@ -546,6 +547,31 @@ initialize_lookaheads (void)
}
}
/*---------------------------------------.
| Output the lookaheads for each state. |
`---------------------------------------*/
static void
lookaheads_print (FILE *out)
{
int i, j, k;
fprintf (out, "Lookaheads: BEGIN\n");
for (i = 0; i < nstates; ++i)
{
fprintf (out, "State %d: %d lookaheads\n",
i, state_table[i]->nlookaheads);
for (j = 0; j < state_table[i]->nlookaheads; ++j)
for (k = 0; k < ntokens; ++k)
if (BITISSET (LA (state_table[i]->lookaheadsp + j), j))
fprintf (out, " on %d (%s) -> rule %d\n",
k, tags[k],
-LAruleno[state_table[i]->lookaheadsp + j] - 1);
}
fprintf (out, "Lookaheads: END\n");
}
void
lalr (void)
{
@@ -558,4 +584,7 @@ lalr (void)
build_relations ();
compute_FOLLOWS ();
compute_lookaheads ();
if (trace_flag)
lookaheads_print (stderr);
}

View File

@@ -157,6 +157,12 @@ transpose: input
transpose: output
0:
Lookaheads: BEGIN
State 0: 0 lookaheads
State 1: 0 lookaheads
State 2: 0 lookaheads
State 3: 0 lookaheads
Lookaheads: END
]])
AT_CLEANUP