1f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* Input parser for Bison
2f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
3f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   Copyright (C) 2000-2003, 2005-2007, 2009-2012 Free Software
4f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   Foundation, Inc.
5f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
6f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   This file is part of Bison, the GNU Compiler Compiler.
7f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
8f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   This program is free software: you can redistribute it and/or modify
9f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   it under the terms of the GNU General Public License as published by
10f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   the Free Software Foundation, either version 3 of the License, or
11f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   (at your option) any later version.
12f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
13f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   This program is distributed in the hope that it will be useful,
14f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   but WITHOUT ANY WARRANTY; without even the implied warranty of
15f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   GNU General Public License for more details.
17f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
18f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   You should have received a copy of the GNU General Public License
19f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
21f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef READER_H_
22f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch# define READER_H_
23f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
24f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch# include "location.h"
25f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch# include "symlist.h"
26f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch# include "named-ref.h"
27f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
28f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch# include "parse-gram.h"
29f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
30f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochtypedef struct merger_list
31f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch{
32f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch  struct merger_list* next;
33f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch  uniqstr name;
34f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch  uniqstr type;
35f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch  location type_declaration_location;
36f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch} merger_list;
37f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
38f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* From the parser.  */
39f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern int gram_debug;
404a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochint gram_parse (void);
41f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochchar const *token_name (int type);
42f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
43f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
44f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* From reader.c. */
454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvoid grammar_start_symbol_set (symbol *sym, location loc);
46f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid grammar_current_rule_begin (symbol *lhs, location loc,
47f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch				 named_ref *lhs_named_ref);
48f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid grammar_current_rule_end (location loc);
494a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvoid grammar_midrule_action (void);
50f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid grammar_current_rule_prec_set (symbol *precsym, location loc);
51f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid grammar_current_rule_dprec_set (int dprec, location loc);
524a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvoid grammar_current_rule_merge_set (uniqstr name, location loc);
534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochvoid grammar_current_rule_symbol_append (symbol *sym, location loc,
54f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch					 named_ref *nref);
55f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid grammar_current_rule_action_append (const char *action, location loc,
56f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch					 named_ref *nref);
57f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid reader (void);
58f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochvoid free_merger_functions (void);
59f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
60f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern merger_list *merge_functions;
61f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
62f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* Was %union seen?  */
63f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern bool union_seen;
64f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
65f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* Was a tag seen?  */
66f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern bool tag_seen;
67731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
68f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* Should rules have a default precedence?  */
69f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochextern bool default_prec;
70f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch
71f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif /* !READER_H_ */
72f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch