mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-13 14:23:04 +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:
@@ -59,11 +59,12 @@ struct symbol_s
|
||||
/* The location of its first occurence. */
|
||||
location_t location;
|
||||
|
||||
/* Its %type and associated destructor. */
|
||||
/* Its %type and associated printer and destructor. */
|
||||
char *type_name;
|
||||
char *destructor;
|
||||
location_t destructor_location;
|
||||
|
||||
char *printer;
|
||||
location_t printer_location;
|
||||
|
||||
symbol_number_t number;
|
||||
short prec;
|
||||
@@ -116,6 +117,10 @@ void symbol_type_set PARAMS ((symbol_t *symbol, location_t location,
|
||||
void symbol_destructor_set PARAMS ((symbol_t *symbol, location_t location,
|
||||
char *destructor));
|
||||
|
||||
/* Set the PRINTER associated to SYMBOL. */
|
||||
void symbol_printer_set PARAMS ((symbol_t *symbol,
|
||||
char *printer, location_t location));
|
||||
|
||||
/* Set the PRECEDENCE associated to SYMBOL. Ensures that SYMBOL is a
|
||||
terminal. Does nothing if invoked with UNDEF_ASSOC as ASSOC. */
|
||||
void symbol_precedence_set PARAMS ((symbol_t *symbol, location_t location,
|
||||
|
||||
Reference in New Issue
Block a user