From 53d4308dbbc73ad186d076a7503e2a11fb0462dc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 30 Jun 2002 17:32:35 +0000 Subject: [PATCH] * src/output.c (action_row): Let default_rule be always a rule number. --- ChangeLog | 6 ++++++ src/output.c | 8 ++++---- src/state.h | 8 +++++++- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 71ccbe1..637a57f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2002-06-30 Akim Demaille + * src/output.c (action_row): Let default_rule be always a rule + number. + + +2002-06-30 Akim Demaille + * src/closure.c (print_firsts, print_fderives, closure): Use BITSET_EXECUTE. * src/lalr.c (lookaheads_print): Likewise. diff --git a/src/output.c b/src/output.c index 858bb98..6b082f5 100644 --- a/src/output.c +++ b/src/output.c @@ -497,11 +497,11 @@ action_row (state_t *state) for (i = 0; i < state->nlookaheads; i++) { int count = 0; - rule_number_t rule = -state->lookaheads_rule[i]->number; + rule_number_t rule = state->lookaheads_rule[i]->number; symbol_number_t j; for (j = 0; j < ntokens; j++) - if (actrow[j] == rule) + if (actrow[j] == -rule) count++; if (count > max) @@ -521,10 +521,10 @@ action_row (state_t *state) { int j; for (j = 0; j < ntokens; j++) - if (actrow[j] == default_rule && ! (glr_parser && conflrow[j])) + if (actrow[j] == -default_rule + && ! (glr_parser && conflrow[j])) actrow[j] = 0; } - default_rule = -default_rule; } } diff --git a/src/state.h b/src/state.h index 674e171..08d9fa3 100644 --- a/src/state.h +++ b/src/state.h @@ -185,7 +185,13 @@ typedef struct state_s /* Nonzero if no lookahead is needed to decide what to do in state S. */ char consistent; - /* Used in LALR, not LR(0). */ + /* Used in LALR, not LR(0). + + When a state is not consistent (there is an S/R or R/R conflict), + lookaheads are needed to enable the reductions. NLOOKAHEADS is + the number of lookahead guarded reductions of the + LOOKAHEADS_RULE. For each rule LOOKAHEADS_RULE[R], LOOKAHEADS[R] + is the bitset of the lookaheads enabling this reduction. */ int nlookaheads; bitsetv lookaheads; rule_t **lookaheads_rule; -- 2.7.4