XFREE (yyrhs);
}
-
-#if 0
- if (!semantic_parser && !no_parser_flag)
- obstack_sgrow (&table_obstack, "\n#endif\n");
-#endif
}
static void
output_actions (void)
{
+ int i;
nvectors = nstates + nvars;
froms = XCALLOC (short *, nvectors);
width = XCALLOC (short, nvectors);
token_actions ();
- LIST_FREE (shifts, first_shift);
- LIST_FREE (reductions, first_reduction);
XFREE (LA);
XFREE (LAruleno);
output_table ();
output_check ();
- LIST_FREE (state_t, first_state);
+
+ for (i = 0; i < nstates; ++i)
+ {
+ XFREE (state_table[i]->shifts);
+ XFREE (state_table[i]->reductions);
+ XFREE (state_table[i]->errs);
+ free (state_table[i]);
+ }
XFREE (state_table);
}
obstack_sgrow (oout, muscle_value);
else if (!strcmp (muscle_key, "line"))
obstack_fgrow1 (oout, "%d", line + 1);
- else if (!strcmp (muscle_key, "input-line"))
- obstack_fgrow1 (oout, "%d", lineno);
else
{
obstack_sgrow (oout, "%%");
MUSCLE_INSERT_INT ("maxtok", max_user_token_number);
MUSCLE_INSERT_INT ("ntbase", ntokens);
MUSCLE_INSERT_INT ("error-verbose", error_verbose);
+ MUSCLE_INSERT_STRING ("prefix", spec_name_prefix);
MUSCLE_INSERT_INT ("nnts", nvars);
MUSCLE_INSERT_INT ("nrules", nrules);
MUSCLE_INSERT_INT ("locations-flag", locations_flag);
/* We need to save the actions in the muscle %%action. */
+ obstack_1grow (&action_obstack, 0);
muscle_insert ("action", obstack_finish (&action_obstack));
- if (spec_name_prefix)
- MUSCLE_INSERT_STRING ("prefix", spec_name_prefix);
}
/*----------------------------------------------------------.
XFREE (user_toknums);
output_actions ();
-#if 0
- if (!no_parser_flag) */
-#endif
prepare ();
/* Copy definitions in directive. */
+ obstack_1grow (&attrs_obstack, 0);
muscle_insert ("prologue", obstack_finish (&attrs_obstack));
output_master_parser ();