}
-/* FIXME. */
+/*----------------------------------------------------------------.
+| Format the FIRST and then TABLE_DATA[BEGIN..END[ into OOUT, and |
+| return the number of bits needed for its longuest value. |
+`----------------------------------------------------------------*/
-static inline void
+static inline long int
output_table_data (struct obstack *oout,
short *table_data,
short first,
int begin,
int end)
{
+ long int max = first;
int i;
int j = 1;
else
++j;
obstack_fgrow1 (oout, "%6d", table_data[i]);
+ if (table_data[i] > max)
+ max = table_data[i];
}
obstack_1grow (oout, 0);
+
+ return max;
}
static void
prepare_tokens (void)
{
- output_table_data (&format_obstack, token_translations,
- 0, 1, max_user_token_number + 1);
+ long int max = output_table_data (&format_obstack, token_translations,
+ 0, 1, max_user_token_number + 1);
muscle_insert ("translate", obstack_finish (&format_obstack));
+ MUSCLE_INSERT_LONG_INT ("token_number_max", max);
XFREE (token_translations);
{
/* and record this rule as the rule to use if that
token follows. */
if (bitset_test (LA[state->lookaheadsp + i], j))
- actrow[j] = -LAruleno[state->lookaheadsp + i];
+ actrow[j] = -LArule[state->lookaheadsp + i]->number;
}
/* Now see which tokens are allowed for shifts in this state. For
for (i = 0; i < state->nlookaheads; i++)
{
int count = 0;
- int rule = -LAruleno[state->lookaheadsp + i];
+ int rule = -LArule[state->lookaheadsp + i]->number;
int j;
for (j = 0; j < ntokens; j++)
int first = 1;
for (i = 0; i < ntokens; ++i)
{
- bucket *symbol = symbols[i];
+ symbol_t *symbol = symbols[i];
int number = symbol->user_token_number;
if (number == SALIAS)
token_actions ();
bitsetv_free (LA);
- XFREE (LAruleno);
+ free (LArule);
goto_actions ();
XFREE (goto_map + ntokens);