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