mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 23:03:04 +00:00
* data/m4sugar/m4sugar.m4 (m4_map): Recognize when the list of
arguments is really empty, not only equal to `[]'. * src/symtab.h, src/symtab.c (symbol_t): `destructor' is a new member. (symbol_destructor_set): New. * src/output.c (symbol_destructors_output): New. * src/reader.h (brace_code_t, current_braced_code): New. * src/scan-gram.l (BRACED_CODE): Use it to branch on... (handle_dollar): Rename as... (handle_action_dollar): this. (handle_destructor_dollar): New. * src/parse-gram.y (PERCENT_DESTRUCTOR): New. (grammar_declaration): Use it. * data/bison.simple (yystos): Is always defined. (yydestructor): New. * tests/actions.at (Destructors): New. * tests/calc.at (_AT_CHECK_CALC_ERROR): Don't rely on egrep.
This commit is contained in:
28
src/output.c
28
src/output.c
@@ -606,6 +606,33 @@ token_definitions_output (FILE *out)
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------.
|
||||
| Output the symbol destructors to OOUT. |
|
||||
`----------------------------------------*/
|
||||
|
||||
static void
|
||||
symbol_destructors_output (FILE *out)
|
||||
{
|
||||
int i;
|
||||
int first = 1;
|
||||
|
||||
fputs ("m4_define([b4_symbol_destructors], \n[", out);
|
||||
for (i = 0; i < nsyms; ++i)
|
||||
if (symbols[i]->destructor)
|
||||
{
|
||||
symbol_t *symbol = symbols[i];
|
||||
|
||||
/* Symbol-number, destructor. */
|
||||
fprintf (out, "%s[[[%d]], [[%s]], [[%s]]]",
|
||||
first ? "" : ",\n",
|
||||
symbol->number, symbol->destructor, symbol->type_name);
|
||||
|
||||
first = 0;
|
||||
}
|
||||
fputs ("])\n\n", out);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
save_column (int symbol, int default_state)
|
||||
{
|
||||
@@ -1019,6 +1046,7 @@ output_skeleton (void)
|
||||
|
||||
actions_output (out);
|
||||
token_definitions_output (out);
|
||||
symbol_destructors_output (out);
|
||||
|
||||
muscles_m4_output (out);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user