X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/f16b08196c780556cbf50691e2944960aebc46f6..3c0be4341168b7dfdfba9430db0b74bc71d911c3:/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; }