-/*-----------------------------------.
-| Get the CLASS associated with SYM. |
-`-----------------------------------*/
-
-const char *
-symbol_class_get_string (symbol *sym)
-{
- if (sym->class)
- {
- if (sym->class == token_sym)
- return "terminal";
- else if (sym->class == nterm_sym)
- return "nonterminal";
- }
- return "unknown";
-}
-
-
-/*-----------------------------------------.
-| Set the DESTRUCTOR associated with SYM. |
-`-----------------------------------------*/
-
-void
-symbol_destructor_set (symbol *sym, code_props const *destructor)
-{
- if (sym->destructor.code)
- symbol_redeclaration (sym, "%destructor", sym->destructor.location,
- destructor->location);
- sym->destructor = *destructor;
-}
-
-/*------------------------------------------.
-| Set the DESTRUCTOR associated with TYPE. |
-`------------------------------------------*/
-
-void
-semantic_type_destructor_set (semantic_type *type,
- code_props const *destructor)
-{
- if (type->destructor.code)
- semantic_type_redeclaration (type, "%destructor",
- type->destructor.location,
- destructor->location);
- type->destructor = *destructor;
-}
-
-/*---------------------------------------.
-| Get the computed %destructor for SYM. |
-`---------------------------------------*/
-
-code_props const *
-symbol_destructor_get (symbol const *sym)
-{
- /* Per-symbol %destructor. */
- if (sym->destructor.code)
- return &sym->destructor;
-
- /* Per-type %destructor. */
- if (sym->type_name)
- {
- code_props const *destructor =
- &semantic_type_get (sym->type_name)->destructor;
- if (destructor->code)
- return destructor;
- }
-
- /* Apply default %destructor's only to user-defined symbols. */
- if (sym->tag[0] == '$' || sym == errtoken)
- return &code_props_none;
-
- if (sym->type_name)
- return &default_tagged_destructor;
- return &default_tagless_destructor;
-}
-
-/*--------------------------------------.
-| Set the PRINTER associated with SYM. |
-`--------------------------------------*/