]>
git.saurik.com Git - bison.git/blob - src/symlist.c
   1 /* Lists of symbols for Bison 
   3    Copyright (C) 2002 Free Software Foundation, Inc. 
   5    This file is part of Bison, the GNU Compiler Compiler. 
   7    Bison is free software; you can redistribute it and/or modify 
   8    it under the terms of the GNU General Public License as published by 
   9    the Free Software Foundation; either version 2, or (at your option) 
  12    Bison is distributed in the hope that it will be useful, 
  13    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  15    GNU General Public License for more details. 
  17    You should have received a copy of the GNU General Public License 
  18    along with Bison; see the file COPYING.  If not, write to 
  19    the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
  20    Boston, MA 02111-1307, USA.  */ 
  28 /*--------------------------------------. 
  29 | Create a list containing SYM at LOC.  | 
  30 `--------------------------------------*/ 
  33 symbol_list_new (symbol 
*sym
, location loc
) 
  35   symbol_list 
*res 
= MALLOC (res
, 1); 
  47 /*---------------------------------. 
  48 | Prepend SYM at LOC to the LIST.  | 
  49 `---------------------------------*/ 
  52 symbol_list_prepend (symbol_list 
*list
, symbol 
*sym
, location loc
) 
  54   symbol_list 
*res 
= symbol_list_new (sym
, loc
); 
  60 /*-------------------------------------------------. 
  61 | Free the LIST, but not the symbols it contains.  | 
  62 `-------------------------------------------------*/ 
  65 symbol_list_free (symbol_list 
*list
) 
  67   LIST_FREE (symbol_list
, list
); 
  71 /*--------------------. 
  72 | Return its length.  | 
  73 `--------------------*/ 
  76 symbol_list_length (symbol_list 
*list
) 
  79   for (/* Nothing. */; list
; list 
= list
->next
) 
  85 /*--------------------------------------------------------------. 
  86 | Get the data type (alternative in the union) of the value for | 
  87 | symbol N in symbol list RP.                                   | 
  88 `--------------------------------------------------------------*/ 
  91 symbol_list_n_type_name_get (symbol_list 
*rp
, location loc
, int n
) 
  97       complain_at (loc
, _("invalid $ value")); 
 106       if (rp 
== NULL 
|| rp
->sym 
== NULL
) 
 108           complain_at (loc
, _("invalid $ value")); 
 114   return rp
->sym
->type_name
;