1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Input parser for Bison 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 305436638acc7c010349a69c3395f1a57c642dc62Ying Wang Copyright (C) 2000-2003, 2005-2007, 2009-2012 Free Software 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Foundation, Inc. 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This file is part of Bison, the GNU Compiler Compiler. 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 805436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is free software: you can redistribute it and/or modify 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project it under the terms of the GNU General Public License as published by 1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang the Free Software Foundation, either version 3 of the License, or 1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang (at your option) any later version. 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang This program is distributed in the hope that it will be useful, 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project but WITHOUT ANY WARRANTY; without even the implied warranty of 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project GNU General Public License for more details. 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project You should have received a copy of the GNU General Public License 1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang along with this program. If not, see <http://www.gnu.org/licenses/>. */ 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef READER_H_ 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define READER_H_ 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include "location.h" 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include "symlist.h" 2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include "named-ref.h" 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# include "parse-gram.h" 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef struct merger_list 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project struct merger_list* next; 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project uniqstr name; 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project uniqstr type; 3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang location type_declaration_location; 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} merger_list; 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* From the parser. */ 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern int gram_debug; 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint gram_parse (void); 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectchar const *token_name (int type); 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* From reader.c. */ 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_start_symbol_set (symbol *sym, location loc); 4605436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid grammar_current_rule_begin (symbol *lhs, location loc, 4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang named_ref *lhs_named_ref); 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_current_rule_end (location loc); 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_midrule_action (void); 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_current_rule_prec_set (symbol *precsym, location loc); 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_current_rule_dprec_set (int dprec, location loc); 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid grammar_current_rule_merge_set (uniqstr name, location loc); 5305436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid grammar_current_rule_symbol_append (symbol *sym, location loc, 5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang named_ref *nref); 5505436638acc7c010349a69c3395f1a57c642dc62Ying Wangvoid grammar_current_rule_action_append (const char *action, location loc, 5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang named_ref *nref); 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid reader (void); 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid free_merger_functions (void); 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern merger_list *merge_functions; 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Was %union seen? */ 6305436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern bool union_seen; 6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang 6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Was a tag seen? */ 6605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern bool tag_seen; 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Should rules have a default precedence? */ 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern bool default_prec; 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* !READER_H_ */ 72