]>
Commit | Line | Data |
---|---|---|
56c47203 | 1 | /* Lists of symbols for Bison |
e3921448 | 2 | |
867a3e00 | 3 | Copyright (C) 2002, 2005 Free Software Foundation, Inc. |
56c47203 AD |
4 | |
5 | This file is part of Bison, the GNU Compiler Compiler. | |
6 | ||
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) | |
10 | any later version. | |
11 | ||
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. | |
16 | ||
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 | |
0fb669f9 PE |
19 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
20 | Boston, MA 02110-1301, USA. */ | |
56c47203 AD |
21 | |
22 | #ifndef SYMLIST_H_ | |
23 | # define SYMLIST_H_ | |
24 | ||
56c47203 | 25 | # include "location.h" |
e3921448 | 26 | # include "symtab.h" |
56c47203 | 27 | |
e3921448 | 28 | typedef struct symbol_list |
56c47203 | 29 | { |
e3921448 PE |
30 | struct symbol_list *next; |
31 | symbol *sym; | |
32 | location location; | |
56c47203 AD |
33 | |
34 | /* The action is attached to the LHS of a rule. */ | |
35 | const char *action; | |
e3921448 | 36 | location action_location; |
56c47203 | 37 | |
e3921448 | 38 | symbol *ruleprec; |
676385e2 PH |
39 | int dprec; |
40 | int merger; | |
e3921448 | 41 | } symbol_list; |
56c47203 AD |
42 | |
43 | ||
e3921448 PE |
44 | /* Create a list containing SYM at LOC. */ |
45 | symbol_list *symbol_list_new (symbol *sym, location loc); | |
56c47203 | 46 | |
867a3e00 | 47 | /* Print it. */ |
22dda0f0 | 48 | void symbol_list_print (symbol_list *l, FILE *f); |
867a3e00 | 49 | |
e3921448 PE |
50 | /* Prepend SYM at LOC to the LIST. */ |
51 | symbol_list *symbol_list_prepend (symbol_list *list, | |
52 | symbol *sym, | |
53 | location loc); | |
56c47203 | 54 | |
56c47203 | 55 | /* Free the LIST, but not the symbols it contains. */ |
e3921448 | 56 | void symbol_list_free (symbol_list *list); |
56c47203 | 57 | |
dafdc66f | 58 | /* Return its length. */ |
e3921448 | 59 | unsigned int symbol_list_length (symbol_list *list); |
56c47203 AD |
60 | |
61 | /* Get the data type (alternative in the union) of the value for | |
62 | symbol N in rule RULE. */ | |
e3921448 | 63 | uniqstr symbol_list_n_type_name_get (symbol_list *rp, location loc, int n); |
56c47203 AD |
64 | |
65 | #endif /* !SYMLIST_H_ */ |