mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-14 14:53:03 +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:
@@ -82,6 +82,7 @@ symbol_t *current_lhs;
|
||||
location_t current_lhs_location;
|
||||
associativity current_assoc;
|
||||
int current_prec = 0;
|
||||
braced_code_t current_braced_code = action_braced_code;
|
||||
%}
|
||||
|
||||
|
||||
@@ -100,13 +101,14 @@ int current_prec = 0;
|
||||
%token STRING CHARACTER
|
||||
%token INT
|
||||
|
||||
%token PERCENT_TOKEN "%token"
|
||||
%token PERCENT_NTERM "%nterm"
|
||||
%token PERCENT_TYPE "%type"
|
||||
%token PERCENT_UNION "%union"
|
||||
%token PERCENT_LEFT "%left"
|
||||
%token PERCENT_RIGHT "%right"
|
||||
%token PERCENT_NONASSOC "%nonassoc"
|
||||
%token PERCENT_TOKEN "%token"
|
||||
%token PERCENT_NTERM "%nterm"
|
||||
%token PERCENT_TYPE "%type"
|
||||
%token PERCENT_DESTRUCTOR "%destructor"
|
||||
%token PERCENT_UNION "%union"
|
||||
%token PERCENT_LEFT "%left"
|
||||
%token PERCENT_RIGHT "%right"
|
||||
%token PERCENT_NONASSOC "%nonassoc"
|
||||
|
||||
%token PERCENT_EXPECT "%expect"
|
||||
%token PERCENT_START "%start"
|
||||
@@ -200,6 +202,16 @@ grammar_declaration:
|
||||
MUSCLE_INSERT_INT ("stype_line", @2.first_line);
|
||||
muscle_insert ("stype", $2);
|
||||
}
|
||||
| "%destructor"
|
||||
{ current_braced_code = destructor_braced_code; }
|
||||
BRACED_CODE symbols.1
|
||||
{
|
||||
symbol_list_t *list;
|
||||
for (list = $4; list; list = list->next)
|
||||
symbol_destructor_set (list->sym, list->location, $3);
|
||||
symbol_list_free ($4);
|
||||
current_braced_code = action_braced_code;
|
||||
}
|
||||
;
|
||||
|
||||
symbol_declaration:
|
||||
|
||||
Reference in New Issue
Block a user