]> git.saurik.com Git - bison.git/blobdiff - src/symtab.h
2007-02-07 Paolo Bonzini <bonzini@gnu.org>
[bison.git] / src / symtab.h
index 9d5604af2f2f43934b1178c5f8aa64d8db5d8a24..7a25b360a747890e3418d2c276cefff8a9e46471 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions for symtab.c and callers, part of Bison.
 
 /* Definitions for symtab.c and callers, part of Bison.
 
-   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004, 2005, 2006
+   Copyright (C) 1984, 1989, 1992, 2000, 2001, 2002, 2004, 2005, 2006, 2007
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
    Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -30,6 +30,7 @@
 
 # include "assoc.h"
 # include "location.h"
 
 # include "assoc.h"
 # include "location.h"
+# include "scan-code.h"
 # include "uniqstr.h"
 
 /*----------.
 # include "uniqstr.h"
 
 /*----------.
@@ -72,25 +73,13 @@ struct symbol
      example, if <tt>symbol::destructor = NULL</tt>, a default \c \%destructor
      or a per-type \c \%destructor might be appropriate, and
      \c symbol_destructor_get will compute the correct one.  */
      example, if <tt>symbol::destructor = NULL</tt>, a default \c \%destructor
      or a per-type \c \%destructor might be appropriate, and
      \c symbol_destructor_get will compute the correct one.  */
-  const char *destructor;
-
-  /** The location of \c symbol::destructor.
-
-     Access this field only through <tt>symbol</tt>'s interface functions.
-     \sa symbol::destructor  */
-  location destructor_location;
+  code_props destructor;
 
   /** Any \c \%printer declared specifically for this symbol.
 
      Access this field only through <tt>symbol</tt>'s interface functions.
      \sa symbol::destructor  */
 
   /** Any \c \%printer declared specifically for this symbol.
 
      Access this field only through <tt>symbol</tt>'s interface functions.
      \sa symbol::destructor  */
-  const char *printer;
-
-  /** The location of \c symbol::printer.
-
-     Access this field only through <tt>symbol</tt>'s interface functions.
-     \sa symbol::destructor  */
-  location printer_location;
+  code_props printer;
 
   symbol_number number;
   location prec_location;
 
   symbol_number number;
   location prec_location;
@@ -144,26 +133,18 @@ void symbol_make_alias (symbol *sym, symbol *symval, location loc);
 void symbol_type_set (symbol *sym, uniqstr type_name, location loc);
 
 /** Set the \c destructor associated with \c sym.  */
 void symbol_type_set (symbol *sym, uniqstr type_name, location loc);
 
 /** Set the \c destructor associated with \c sym.  */
-void symbol_destructor_set (symbol *sym, const char *destructor, location loc);
-
-/** Get the computed \c \%destructor for \c sym, or \c NULL if none.   */
-const char *symbol_destructor_get (symbol *sym);
-
-/** Get the grammar location of the computed \c \%destructor for \c sym.
+void symbol_destructor_set (symbol *sym, code_props const *destructor);
 
 
-  \pre <tt>symbol_destructor_get (sym) != NULL</tt> */
-location symbol_destructor_location_get (symbol *sym);
+/** Get the computed \c \%destructor for \c sym, which was initialized with
+    \c code_props_none_init if there's no \c \%destructor.  */
+code_props const *symbol_destructor_get (symbol const *sym);
 
 /** Set the \c printer associated with \c sym.  */
 
 /** Set the \c printer associated with \c sym.  */
-void symbol_printer_set (symbol *sym, const char *printer, location loc);
+void symbol_printer_set (symbol *sym, code_props const *printer);
 
 
-/** Get the computed \c \%printer for \c sym, or \c NULL if none.  */
-const char *symbol_printer_get (symbol *sym);
-
-/** Get the grammar location of the computed \c \%printer for \c sym.
-
-  \pre <tt>symbol_printer_get (sym) != NULL</tt> */
-location symbol_printer_location_get (symbol *sym);
+/** Get the computed \c \%printer for \c sym, which was initialized with
+    \c code_props_none_init if there's no \c \%printer.  */
+code_props const *symbol_printer_get (symbol const *sym);
 
 /* Set the \c precedence associated with \c sym.
 
 
 /* Set the \c precedence associated with \c sym.
 
@@ -209,14 +190,9 @@ typedef struct {
   uniqstr tag;
 
   /** Any \c %destructor declared for this semantic type.  */
   uniqstr tag;
 
   /** Any \c %destructor declared for this semantic type.  */
-  const char *destructor;
-  /** The location of \c semantic_type::destructor.  */
-  location destructor_location;
-
+  code_props destructor;
   /** Any \c %printer declared for this semantic type.  */
   /** Any \c %printer declared for this semantic type.  */
-  const char *printer;
-  /** The location of \c semantic_type::printer.  */
-  location printer_location;
+  code_props printer;
 } semantic_type;
 
 /** Fetch (or create) the semantic type associated to KEY.  */
 } semantic_type;
 
 /** Fetch (or create) the semantic type associated to KEY.  */
@@ -226,12 +202,12 @@ semantic_type *semantic_type_from_uniqstr (const uniqstr key);
 semantic_type *semantic_type_get (const char *key);
 
 /** Set the \c destructor associated with \c type.  */
 semantic_type *semantic_type_get (const char *key);
 
 /** Set the \c destructor associated with \c type.  */
-void semantic_type_destructor_set (semantic_type *type, const char *destructor,
-                                   location loc);
+void semantic_type_destructor_set (semantic_type *type,
+                                   code_props const *destructor);
 
 /** Set the \c printer associated with \c type.  */
 
 /** Set the \c printer associated with \c type.  */
-void semantic_type_printer_set (semantic_type *type, const char *printer,
-                                location loc);
+void semantic_type_printer_set (semantic_type *type,
+                                code_props const *printer);
 
 /*----------------------------------.
 | Symbol and semantic type tables.  |
 
 /*----------------------------------.
 | Symbol and semantic type tables.  |
@@ -260,13 +236,13 @@ void symbols_pack (void);
 `---------------------------------------*/
 
 /** Set the default \c \%destructor for tagged values.  */
 `---------------------------------------*/
 
 /** Set the default \c \%destructor for tagged values.  */
-void default_tagged_destructor_set (const char *destructor, location loc);
+void default_tagged_destructor_set (code_props const *destructor);
 /** Set the default \c \%destructor for tagless values.  */
 /** Set the default \c \%destructor for tagless values.  */
-void default_tagless_destructor_set (const char *destructor, location loc);
+void default_tagless_destructor_set (code_props const *destructor);
 
 /** Set the default \c \%printer for tagged values.  */
 
 /** Set the default \c \%printer for tagged values.  */
-void default_tagged_printer_set (const char *printer, location loc);
+void default_tagged_printer_set (code_props const *printer);
 /** Set the default \c \%printer for tagless values.  */
 /** Set the default \c \%printer for tagless values.  */
-void default_tagless_printer_set (const char *printer, location loc);
+void default_tagless_printer_set (code_props const *printer);
 
 #endif /* !SYMTAB_H_ */
 
 #endif /* !SYMTAB_H_ */