* src/output.c (action_row): Let default_rule be always a rule

number.
This commit is contained in:
Akim Demaille
2002-06-30 17:32:35 +00:00
parent 574fb2d568
commit 53d4308dbb
3 changed files with 17 additions and 5 deletions

View File

@@ -1,3 +1,9 @@
2002-06-30 Akim Demaille <akim@epita.fr>
* src/output.c (action_row): Let default_rule be always a rule
number.
2002-06-30 Akim Demaille <akim@epita.fr>
* src/closure.c (print_firsts, print_fderives, closure):

View File

@@ -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;
}
}

View File

@@ -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;