diff options
author | Joel E. Denny <jdenny@ces.clemson.edu> | 2006-10-21 10:03:35 +0000 |
---|---|---|
committer | Joel E. Denny <jdenny@ces.clemson.edu> | 2006-10-21 10:03:35 +0000 |
commit | 12e3584054c16ab255672c07af0ffc7bb220e8bc (patch) | |
tree | 8a6b4c9c1877fe1d752992dd072f7ba7742c3fa5 /src/symlist.h | |
parent | f91b1629440cb52b851004570b7f280e79167383 (diff) | |
download | bison-12e3584054c16ab255672c07af0ffc7bb220e8bc.tar.gz |
Split the default %destructor/%printer into two kinds: <*> and <!>.
Discussed starting at
<http://lists.gnu.org/archive/html/bison-patches/2006-09/msg00060.html>.
* NEWS (2.3a+): Mention.
* doc/bison.texinfo (Freeing Discarded Symbols): Document this and the
previous change today related to mid-rules.
(Bison Symbols): Remove %symbol-default and add <*> and <!>.
* src/parser-gram.y (PERCENT_SYMBOL_DEFAULT): Remove.
(TYPE_TAG_ANY): Add as <*>.
(TYPE_TAG_NONE): Add as <!>.
(generic_symlist_item): Remove RHS for %symbol-default and add RHS's
for <*> and <!>.
* src/scan-gram.l (PERCENT_SYMBOL_DEFAULT): Remove.
(TYPE_TAG_ANY, TYPE_TAG_NONE): Add.
* src/symlist.c (symbol_list_default_new): Split into tagged and
tagless versions.
(symbol_list_destructor_set, symbol_list_printer_set): Split
SYMLIST_DEFAULT case into SYMLIST_DEFAULT_TAGGED and
SYMLIST_DEFAULT_TAGLESS.
* src/symlist.h: Update symbol_list_default*_new prototypes.
(symbol_list.content_type): Split enum value SYMLIST_DEFAULT into
SYMLIST_DEFAULT_TAGGED and SYMLIST_DEFAULT_TAGLESS.
* src/symtab.c (default_destructor, default_destructor_location,
default_printer, default_printer_location): Split each into tagged and
tagless versions.
(symbol_destructor_get, symbol_destructor_location_get,
symbol_printer_get, symbol_printer_location_get): Implement tagged
default and tagless default cases.
(default_destructor_set, default_printer_set): Split each into tagged
and tagless versions.
* src/symtab.h: Update prototypes.
* tests/actions.at (Default %printer and %destructor): Rename to...
(Default tagless %printer and %destructor): ... this, and extend.
(Per-type %printer and %destructor): Rename to...
(Default tagged and per-type %printer and %destructor): ... this, and
extend.
(Default %printer and %destructor for user-defined end token): Extend.
(Default %printer and %destructor are not for error or $undefined):
Update.
(Default %printer and %destructor are not for $accept): Update.
(Default %printer and %destructor for mid-rule values): Extend.
* tests/input.at (Default %printer and %destructor redeclared): Extend.
(Unused values with default %destructor): Extend.
Diffstat (limited to 'src/symlist.h')
-rw-r--r-- | src/symlist.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/symlist.h b/src/symlist.h index 6acb982e..9da8afe5 100644 --- a/src/symlist.h +++ b/src/symlist.h @@ -29,10 +29,13 @@ typedef struct symbol_list { /** - * Whether this node contains a symbol, a semantic type, or a - * \c \%symbol-default. + * Whether this node contains a symbol, a semantic type, a \c <*>, or a + * \c <!>. */ - enum { SYMLIST_SYMBOL, SYMLIST_TYPE, SYMLIST_DEFAULT } content_type; + enum { + SYMLIST_SYMBOL, SYMLIST_TYPE, + SYMLIST_DEFAULT_TAGGED, SYMLIST_DEFAULT_TAGLESS + } content_type; union { /** The symbol or \c NULL iff <tt>node_type = SYMLIST_SYMBOL</tt>. */ symbol *sym; @@ -76,8 +79,10 @@ symbol_list *symbol_list_sym_new (symbol *sym, location loc); /** Create a list containing \c type_name at \c loc. */ symbol_list *symbol_list_type_new (uniqstr type_name, location loc); -/** Create a list containing a \c \%symbol-default at \c loc. */ -symbol_list *symbol_list_default_new (location loc); +/** Create a list containing a \c <*> at \c loc. */ +symbol_list *symbol_list_default_tagged_new (location loc); +/** Create a list containing a \c <!> at \c loc. */ +symbol_list *symbol_list_default_tagless_new (location loc); /** Print this list. |