278 |
static void |
static void |
279 |
nonterminals_reduce (void) |
nonterminals_reduce (void) |
280 |
{ |
{ |
281 |
token_number_t i, n; |
symbol_number_t i, n; |
282 |
|
|
283 |
/* Map the nonterminals to their new index: useful first, useless |
/* Map the nonterminals to their new index: useful first, useless |
284 |
afterwards. Kept for later report. */ |
afterwards. Kept for later report. */ |
285 |
|
|
286 |
token_number_t *nontermmap = XCALLOC (token_number_t, nvars) - ntokens; |
symbol_number_t *nontermmap = XCALLOC (symbol_number_t, nvars) - ntokens; |
287 |
n = ntokens; |
n = ntokens; |
288 |
for (i = ntokens; i < nsyms; i++) |
for (i = ntokens; i < nsyms; i++) |
289 |
if (bitset_test (V, i)) |
if (bitset_test (V, i)) |
313 |
item_number_t *rhsp; |
item_number_t *rhsp; |
314 |
for (rhsp = rules[r].rhs; *rhsp >= 0; ++rhsp) |
for (rhsp = rules[r].rhs; *rhsp >= 0; ++rhsp) |
315 |
if (ISVAR (*rhsp)) |
if (ISVAR (*rhsp)) |
316 |
*rhsp = token_number_as_item_number (nontermmap[*rhsp]); |
*rhsp = symbol_number_as_item_number (nontermmap[*rhsp]); |
317 |
} |
} |
318 |
start_symbol = nontermmap[start_symbol]; |
start_symbol = nontermmap[start_symbol]; |
319 |
} |
} |