]>
git.saurik.com Git - bison.git/blob - src/symlist.c
   1 /* Lists of symbols for Bison 
   2    Copyright (C) 2002  Free Software Foundation, Inc. 
   4    This file is part of Bison, the GNU Compiler Compiler. 
   6    Bison is free software; you can redistribute it and/or modify 
   7    it under the terms of the GNU General Public License as published by 
   8    the Free Software Foundation; either version 2, or (at your option) 
  11    Bison is distributed in the hope that it will be useful, 
  12    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  14    GNU General Public License for more details. 
  16    You should have received a copy of the GNU General Public License 
  17    along with Bison; see the file COPYING.  If not, write to 
  18    the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
  19    Boston, MA 02111-1307, USA.  */ 
  26 /*----------------------------------------------. 
  27 | Create a list containing SYMBOL at LOCATION.  | 
  28 `----------------------------------------------*/ 
  31 symbol_list_new (symbol_t 
*sym
, location_t location
) 
  33   symbol_list_t 
*res 
= XMALLOC (symbol_list_t
, 1); 
  36   res
->location 
= location
; 
  45 /*-----------------------------------------. 
  46 | Prepend SYMBOL at LOCATION to the LIST.  | 
  47 `-----------------------------------------*/ 
  50 symbol_list_prepend (symbol_list_t 
*list
, 
  51                      symbol_t 
*symbol
, location_t location
) 
  53   symbol_list_t 
*res 
= symbol_list_new (symbol
, location
); 
  59 /*-------------------------------------------------. 
  60 | Free the LIST, but not the symbols it contains.  | 
  61 `-------------------------------------------------*/ 
  64 symbol_list_free (symbol_list_t 
*list
) 
  66   LIST_FREE (symbol_list_t
, list
); 
  70 /*--------------------. 
  71 | Return its length.  | 
  72 `--------------------*/ 
  75 symbol_list_length (symbol_list_t 
*list
) 
  78   for (/* Nothing. */; list
; list 
= list
->next
) 
  84 /*--------------------------------------------------------------. 
  85 | Get the data type (alternative in the union) of the value for | 
  86 | symbol N in rule RULE.                                        | 
  87 `--------------------------------------------------------------*/ 
  90 symbol_list_n_type_name_get (symbol_list_t 
*rule
, location_t location
, int n
) 
  97       complain_at (location
, _("invalid $ value")); 
 107       if (rp 
== NULL 
|| rp
->sym 
== NULL
) 
 109           complain_at (location
, _("invalid $ value")); 
 115   return rp
->sym
->type_name
;