X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f16b08196c780556cbf50691e2944960aebc46f6..5ea72c19daec27f1213c4292134c40f81d956fb3:/src/symtab.c

diff --git a/src/symtab.c b/src/symtab.c
index 83851351..93e5f194 100644
--- a/src/symtab.c
+++ b/src/symtab.c
@@ -1,7 +1,7 @@
 /* Symbol table manager for Bison.
 
-   Copyright (C) 1984, 1989, 2000, 2001, 2002, 2004, 2005, 2006, 2007 Free
-   Software Foundation, Inc.
+   Copyright (C) 1984, 1989, 2000-2002, 2004-2010 Free Software
+   Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -168,6 +168,23 @@ symbol_type_set (symbol *sym, uniqstr type_name, location loc)
     }
 }
 
+/*-----------------------------------.
+| 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.  |
@@ -341,8 +358,6 @@ symbol_user_token_number_set (symbol *sym, int user_token_number, location loc)
 {
   int *user_token_numberp;
 
-  aver (sym->class == token_sym);
-
   if (sym->user_token_number != USER_NUMBER_ALIAS)
     user_token_numberp = &sym->user_token_number;
   else
@@ -657,7 +672,8 @@ symbol_from_uniqstr (const uniqstr key, location loc)
     {
       /* First insertion in the hash. */
       entry = symbol_new (key, loc);
-      hash_insert (symbol_table, entry);
+      if (!hash_insert (symbol_table, entry))
+        xalloc_die ();
     }
   return entry;
 }
@@ -681,7 +697,8 @@ semantic_type_from_uniqstr (const uniqstr key)
     {
       /* First insertion in the hash. */
       entry = semantic_type_new (key);
-      hash_insert (semantic_type_table, entry);
+      if (!hash_insert (semantic_type_table, entry))
+        xalloc_die ();
     }
   return entry;
 }