mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-18 16:53:02 +00:00
Use the new code_props interface in parse-gram.y.
* src/parse-gram.y (prologue_declaration, braceless, epilogue.opt): Update all uses of translate_* functions to use the new code_props interface and to use gram_scanner_last_string_free and code_scanner_last_string_free where possible. (grammar_declaration): symbol_list_destructor_set and symbol_list_printer_set now perform the translation, so don't do it here. Use gram_scanner_last_string_free where possible. * src/scan-code.h, src/scan-code.l (translate_symbol_action, translate_code): Remove, no longer used. * src/symlist.h, src/symlist.c (symbol_list_destructor_set, symbol_list_printer_set): Perform code translation here rather than depending on the caller to do so. * src/symlist.h (struct symbol_list): Correct some documentation typos. * src/scan-gram.h (gram_last_string): Remove declaration. * src/scan-gram.l (last_string): Declare it static.
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
# define SYMLIST_H_
|
||||
|
||||
# include "location.h"
|
||||
# include "scan-code.h"
|
||||
# include "symtab.h"
|
||||
|
||||
/* A list of symbols, used during the parsing to store the rules. */
|
||||
@@ -37,9 +38,14 @@ typedef struct symbol_list
|
||||
SYMLIST_DEFAULT_TAGGED, SYMLIST_DEFAULT_TAGLESS
|
||||
} content_type;
|
||||
union {
|
||||
/** The symbol or \c NULL iff <tt>node_type = SYMLIST_SYMBOL</tt>. */
|
||||
/**
|
||||
* The symbol or \c NULL iff
|
||||
* <tt>symbol_list::content_type = SYMLIST_SYMBOL</tt>.
|
||||
*/
|
||||
symbol *sym;
|
||||
/** The semantic type iff <tt>node_type = SYMLIST_TYPE</tt>. */
|
||||
/**
|
||||
* The semantic type iff <tt>symbol_list::content_type = SYMLIST_TYPE</tt>.
|
||||
*/
|
||||
uniqstr type_name;
|
||||
} content;
|
||||
location location;
|
||||
@@ -106,12 +112,12 @@ symbol_list *symbol_list_n_get (symbol_list *l, int n);
|
||||
symbol N in rule RULE. */
|
||||
uniqstr symbol_list_n_type_name_get (symbol_list *l, location loc, int n);
|
||||
|
||||
/** Set the \c \%destructor for \c node as \c destructor at \c loc. */
|
||||
void symbol_list_destructor_set (symbol_list *node, const char *destructor,
|
||||
/** Set the \c \%destructor for \c node as \c code at \c loc. */
|
||||
void symbol_list_destructor_set (symbol_list *node, char const *code,
|
||||
location loc);
|
||||
|
||||
/** Set the \c \%printer for \c node as \c printer at \c loc. */
|
||||
void symbol_list_printer_set (symbol_list *node, const char *printer,
|
||||
/** Set the \c \%printer for \c node as \c code at \c loc. */
|
||||
void symbol_list_printer_set (symbol_list *node, char const *code,
|
||||
location loc);
|
||||
|
||||
#endif /* !SYMLIST_H_ */
|
||||
|
||||
Reference in New Issue
Block a user