139 |
static void |
static void |
140 |
flush_shift (state_t *state, int token) |
flush_shift (state_t *state, int token) |
141 |
{ |
{ |
142 |
shifts_t *shiftp = state->shifts; |
transitions_t *transitions = state->shifts; |
143 |
int i; |
int i; |
144 |
|
|
145 |
bitset_reset (lookaheadset, token); |
bitset_reset (lookaheadset, token); |
146 |
for (i = 0; i < shiftp->nshifts; i++) |
for (i = 0; i < transitions->num; i++) |
147 |
if (!SHIFT_IS_DISABLED (shiftp, i) && SHIFT_SYMBOL (shiftp, i) == token) |
if (!TRANSITION_IS_DISABLED (transitions, i) && TRANSITION_SYMBOL (transitions, i) == token) |
148 |
SHIFT_DISABLE (shiftp, i); |
TRANSITION_DISABLE (transitions, i); |
149 |
} |
} |
150 |
|
|
151 |
|
|
249 |
set_conflicts (state_t *state) |
set_conflicts (state_t *state) |
250 |
{ |
{ |
251 |
int i; |
int i; |
252 |
shifts_t *shiftp; |
transitions_t *transitions; |
253 |
|
|
254 |
if (state->consistent) |
if (state->consistent) |
255 |
return; |
return; |
256 |
|
|
257 |
bitset_zero (lookaheadset); |
bitset_zero (lookaheadset); |
258 |
|
|
259 |
shiftp = state->shifts; |
transitions = state->shifts; |
260 |
for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) |
for (i = 0; i < transitions->num && TRANSITION_IS_SHIFT (transitions, i); i++) |
261 |
if (!SHIFT_IS_DISABLED (shiftp, i)) |
if (!TRANSITION_IS_DISABLED (transitions, i)) |
262 |
bitset_set (lookaheadset, SHIFT_SYMBOL (shiftp, i)); |
bitset_set (lookaheadset, TRANSITION_SYMBOL (transitions, i)); |
263 |
|
|
264 |
/* Loop over all rules which require lookahead in this state. First |
/* Loop over all rules which require lookahead in this state. First |
265 |
check for shift-reduce conflict, and try to resolve using |
check for shift-reduce conflict, and try to resolve using |
308 |
{ |
{ |
309 |
int i; |
int i; |
310 |
int src_count = 0; |
int src_count = 0; |
311 |
shifts_t *shiftp = state->shifts; |
transitions_t *transitions = state->shifts; |
312 |
|
|
313 |
if (!shiftp) |
if (!transitions) |
314 |
return 0; |
return 0; |
315 |
|
|
316 |
bitset_zero (lookaheadset); |
bitset_zero (lookaheadset); |
317 |
bitset_zero (shiftset); |
bitset_zero (shiftset); |
318 |
|
|
319 |
for (i = 0; i < shiftp->nshifts && SHIFT_IS_SHIFT (shiftp, i); i++) |
for (i = 0; i < transitions->num && TRANSITION_IS_SHIFT (transitions, i); i++) |
320 |
if (!SHIFT_IS_DISABLED (shiftp, i)) |
if (!TRANSITION_IS_DISABLED (transitions, i)) |
321 |
bitset_set (shiftset, SHIFT_SYMBOL (shiftp, i)); |
bitset_set (shiftset, TRANSITION_SYMBOL (transitions, i)); |
322 |
|
|
323 |
for (i = 0; i < state->nlookaheads; ++i) |
for (i = 0; i < state->nlookaheads; ++i) |
324 |
bitset_or (lookaheadset, lookaheadset, state->lookaheads[i]); |
bitset_or (lookaheadset, lookaheadset, state->lookaheads[i]); |