mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 06:13:02 +00:00
* src/symtab.h, src/symtab.c (symbol_t): printer and
printer_location are new members. (symbol_printer_set): New. * src/parse-gram.y (PERCENT_PRINTER): New token. Handle its associated rule. * src/scan-gram.l: Adjust. (handle_destructor_at, handle_destructor_dollar): Rename as... (handle_symbol_code_at, handle_symbol_code_dollar): these. * src/output.c (symbol_printers_output): New. (output_skeleton): Call it. * data/bison.simple (yysymprint): New. Cannot be named yyprint since there are already many grammar files with a user `yyprint'. Replace the calls to YYPRINT to calls to yysymprint. * tests/calc.at: Adjust. * tests/torture.at (AT_DATA_STACK_TORTURE): Remove YYPRINT: it was taking advantage of parser very internal details (stack size!).
This commit is contained in:
@@ -103,9 +103,13 @@ braced_code_t current_braced_code = action_braced_code;
|
||||
|
||||
%token PERCENT_TOKEN "%token"
|
||||
%token PERCENT_NTERM "%nterm"
|
||||
|
||||
%token PERCENT_TYPE "%type"
|
||||
%token PERCENT_DESTRUCTOR "%destructor"
|
||||
%token PERCENT_PRINTER "%printer"
|
||||
|
||||
%token PERCENT_UNION "%union"
|
||||
|
||||
%token PERCENT_LEFT "%left"
|
||||
%token PERCENT_RIGHT "%right"
|
||||
%token PERCENT_NONASSOC "%nonassoc"
|
||||
@@ -212,6 +216,16 @@ grammar_declaration:
|
||||
symbol_list_free ($4);
|
||||
current_braced_code = action_braced_code;
|
||||
}
|
||||
| "%printer"
|
||||
{ current_braced_code = printer_braced_code; }
|
||||
BRACED_CODE symbols.1
|
||||
{
|
||||
symbol_list_t *list;
|
||||
for (list = $4; list; list = list->next)
|
||||
symbol_printer_set (list->sym, $3, list->location);
|
||||
symbol_list_free ($4);
|
||||
current_braced_code = action_braced_code;
|
||||
}
|
||||
;
|
||||
|
||||
symbol_declaration:
|
||||
|
||||
Reference in New Issue
Block a user