]> git.saurik.com Git - bison.git/blame - src/getargs.h
style: use %code for local function declarations in our parser
[bison.git] / src / getargs.h
CommitLineData
ceed8467 1/* Parse command line arguments for bison.
8405b70c 2
7d6bad19 3 Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
575619af 4 Foundation, Inc.
ceed8467
AD
5
6 This file is part of Bison, the GNU Compiler Compiler.
7
f16b0819
PE
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
ceed8467 12
f16b0819
PE
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
ceed8467
AD
17
18 You should have received a copy of the GNU General Public License
f16b0819 19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
ceed8467 20
b2ca4022
AD
21#ifndef GETARGS_H_
22# define GETARGS_H_
23
a99ec53e 24# include "location.h"
0e021770 25
51365192 26enum { command_line_prio, grammar_prio, default_prio };
0e021770 27
ceed8467 28/* flags set by % directives */
04098407
PE
29
30/* for -S */
31extern char const *skeleton;
51365192 32extern int skeleton_prio;
04098407
PE
33
34/* for -I */
35extern char const *include;
ceed8467 36
e9690142
JD
37extern bool defines_flag; /* for -d */
38extern bool graph_flag; /* for -g */
39extern bool xml_flag; /* for -x */
40extern bool no_lines_flag; /* for -l */
41extern bool token_table_flag; /* for -k */
42extern bool yacc_flag; /* for -y */
273a74fa 43
4e83ea15 44
916708d5
AD
45/* GLR_PARSER is true if the input file says to use the GLR
46 (Generalized LR) parser, and to output some additional information
47 used by the GLR algorithm. */
48
49extern bool glr_parser;
50
916708d5
AD
51/* NONDETERMINISTIC_PARSER is true iff conflicts are accepted. This
52 is used by the GLR parser, and might be used in BackTracking
53 parsers too. */
54
55extern bool nondeterministic_parser;
56
7b42569e 57
0e021770
PE
58/* --language. */
59struct bison_language
60{
8405b70c
PB
61 char language[sizeof "Java"];
62 char skeleton[sizeof "java-skel.m4"];
63 char src_extension[sizeof ".java"];
64 char header_extension[sizeof ".java"];
0e021770
PE
65 bool add_tab;
66};
67
51365192 68extern int language_prio;
0e021770
PE
69extern struct bison_language const *language;
70
7b42569e
AD
71/*-----------.
72| --report. |
73`-----------*/
74
e8a0acd6 75enum report
ec3bc396 76 {
273a74fa
AD
77 report_none = 0,
78 report_states = 1 << 0,
79 report_itemsets = 1 << 1,
742e4900 80 report_lookahead_tokens = 1 << 2,
b408954b 81 report_solved_conflicts = 1 << 3,
273a74fa 82 report_all = ~0
ec3bc396 83 };
b8a41559 84/** What appears in the *.output file. */
ec3bc396
AD
85extern int report_flag;
86
7b42569e
AD
87/*----------.
88| --trace. |
89`----------*/
b8a41559
AD
90enum trace
91 {
92 trace_none = 0, /**< No traces. */
93 trace_scan = 1 << 0, /**< Grammar scanner traces. */
94 trace_parse = 1 << 1, /**< Grammar parser traces. */
95 trace_resource = 1 << 2, /**< Memory allocation. */
96 trace_sets = 1 << 3, /**< Grammar sets: firsts, nullable etc. */
97 trace_bitsets = 1 << 4, /**< Use of bitsets. */
98 trace_tools = 1 << 5, /**< m4 invocation. */
99 trace_automaton = 1 << 6, /**< Construction of the automaton. */
100 trace_grammar = 1 << 7, /**< Reading, reducing the grammar. */
101 trace_time = 1 << 8, /**< Time consumption. */
102 trace_skeleton = 1 << 9, /**< Skeleton postprocessing. */
103 trace_m4 = 1 << 10, /**< M4 traces. */
5263bea9 104 trace_muscles = 1 << 11, /**< M4 definitions of the muscles. */
db34f798 105 trace_ielr = 1 << 12, /**< IELR conversion. */
b8a41559
AD
106 trace_all = ~0 /**< All of the above. */
107 };
108/** What debug items bison displays during its run. */
109extern int trace_flag;
110
0db26489
TR
111/*-------------.
112| --features. |
113`-------------*/
114
115enum feature
116 {
117 feature_none = 0, /**< No additional feature. */
118 feature_caret = 1 << 0, /**< Enhance the output of errors with carets. */
119 feature_all = ~0 /**< All above features. */
120 };
121/** What additional features to use. */
122extern int feature_flag;
7b42569e 123
219458e2 124
7b42569e
AD
125/** Process the command line arguments.
126 *
127 * \param argc size of \a argv
128 * \param argv list of arguments.
129 */
d33cb3ae 130void getargs (int argc, char *argv[]);
b2ca4022 131
0e021770 132/* Used by parse-gram.y. */
5a893c2b
AD
133void language_argmatch (char const *arg, int prio, location loc);
134void skeleton_arg (const char *arg, int prio, location loc);
0e021770 135
67212941
JD
136/** In the string \c s, replace all characters \c from by \c to. */
137void tr (char *s, char from, char to);
138
b2ca4022 139#endif /* !GETARGS_H_ */