From 53d4308dbbc73ad186d076a7503e2a11fb0462dc Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Sun, 30 Jun 2002 17:32:35 +0000 Subject: [PATCH 1/1] * 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 71ccbe16..637a57fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +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): diff --git a/src/output.c b/src/output.c index 858bb98f..6b082f57 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 674e1714..08d9fa36 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.45.2