X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/32f18df511309dc701daa609fb09e5e533a20f8b..15ab9127f525bdf8bb2932d1526cdabf73af924b:/src/conflicts.c diff --git a/src/conflicts.c b/src/conflicts.c index b8689dad..a9bf9519 100644 --- a/src/conflicts.c +++ b/src/conflicts.c @@ -62,8 +62,8 @@ flush_shift (int state, int token) if (shiftp) for (i = 0; i < shiftp->nshifts; i++) - if (shiftp->shifts[i] && SHIFT_SYMBOL (shiftp, i) == token) - shiftp->shifts[i] = 0; + if (!SHIFT_IS_DISABLED (shiftp, i) && SHIFT_SYMBOL (shiftp, i) == token) + SHIFT_DISABLE (shiftp, i); } @@ -176,7 +176,8 @@ set_conflicts (int state) shiftp = state_table[state].shift_table; if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) - SETBIT (lookaheadset, SHIFT_SYMBOL (shiftp, i)); + if (!SHIFT_IS_DISABLED (shiftp, i)) + SETBIT (lookaheadset, SHIFT_SYMBOL (shiftp, i)); /* Loop over all rules which require lookahead in this state. First check for shift-reduce conflict, and try to resolve using @@ -245,7 +246,8 @@ count_sr_conflicts (int state) } for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) - SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); + if (!SHIFT_IS_DISABLED (shiftp, i)) + SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); for (i = state_table[state].lookaheads; i < state_table[state + 1].lookaheads; @@ -436,13 +438,14 @@ print_reductions (FILE *out, int state) shiftp = state_table[state].shift_table; if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) - { - /* if this state has a shift for the error token, don't use a - default rule. */ - if (SHIFT_IS_ERROR (shiftp, i)) - nodefault = 1; - SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); - } + if (!SHIFT_IS_DISABLED (shiftp, i)) + { + /* if this state has a shift for the error token, don't use a + default rule. */ + if (SHIFT_IS_ERROR (shiftp, i)) + nodefault = 1; + SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); + } errp = err_table[state]; if (errp) @@ -506,7 +509,8 @@ print_reductions (FILE *out, int state) if (shiftp) for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) - SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); + if (!SHIFT_IS_DISABLED (shiftp, i)) + SETBIT (shiftset, SHIFT_SYMBOL (shiftp, i)); for (i = 0; i < ntokens; i++) {