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