217 |
`----------------------------------------------------------*/ |
`----------------------------------------------------------*/ |
218 |
|
|
219 |
static int |
static int |
220 |
map_goto (int state, token_number_t symbol) |
map_goto (int state, symbol_number_t symbol) |
221 |
{ |
{ |
222 |
int high; |
int high; |
223 |
int low; |
int low; |
267 |
|
|
268 |
for (; j < sp->nshifts; j++) |
for (; j < sp->nshifts; j++) |
269 |
{ |
{ |
270 |
token_number_t symbol = SHIFT_SYMBOL (sp, j); |
symbol_number_t symbol = SHIFT_SYMBOL (sp, j); |
271 |
if (nullable[symbol]) |
if (nullable[symbol]) |
272 |
edge[nedges++] = map_goto (stateno, symbol); |
edge[nedges++] = map_goto (stateno, symbol); |
273 |
} |
} |
408 |
for (i = 0; i < ngotos; i++) |
for (i = 0; i < ngotos; i++) |
409 |
{ |
{ |
410 |
int nedges = 0; |
int nedges = 0; |
411 |
token_number_t symbol1 = states[to_state[i]]->accessing_symbol; |
symbol_number_t symbol1 = states[to_state[i]]->accessing_symbol; |
412 |
short *rulep; |
short *rulep; |
413 |
|
|
414 |
for (rulep = derives[symbol1]; *rulep > 0; rulep++) |
for (rulep = derives[symbol1]; *rulep > 0; rulep++) |
427 |
{ |
{ |
428 |
state = states[sp->shifts[j]]; |
state = states[sp->shifts[j]]; |
429 |
if (state->accessing_symbol |
if (state->accessing_symbol |
430 |
== item_number_as_token_number (*rp)) |
== item_number_as_symbol_number (*rp)) |
431 |
break; |
break; |
432 |
} |
} |
433 |
|
|
446 |
/* JF added rp>=ritem && I hope to god its right! */ |
/* JF added rp>=ritem && I hope to god its right! */ |
447 |
if (rp >= ritem && ISVAR (*rp)) |
if (rp >= ritem && ISVAR (*rp)) |
448 |
{ |
{ |
449 |
/* Downcasting from item_number_t to token_number_t. */ |
/* Downcasting from item_number_t to symbol_number_t. */ |
450 |
edge[nedges++] = map_goto (states1[--length], |
edge[nedges++] = map_goto (states1[--length], |
451 |
item_number_as_token_number (*rp)); |
item_number_as_symbol_number (*rp)); |
452 |
if (nullable[*rp]) |
if (nullable[*rp]) |
453 |
done = 0; |
done = 0; |
454 |
} |
} |