]> git.saurik.com Git - bison.git/blame - src/getargs.h
command line: fix minor leaks.
[bison.git] / src / getargs.h
CommitLineData
ceed8467 1/* Parse command line arguments for bison.
8405b70c 2
c932d613 3 Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
ea0a7676 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
0e021770
PE
24#include "location.h"
25
4b1ebc49 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;
4b1ebc49 32extern int skeleton_prio;
04098407
PE
33
34/* for -I */
35extern char const *include;
ceed8467 36
d0829076
PE
37extern bool debug_flag; /* for -t */
38extern bool defines_flag; /* for -d */
4e83ea15 39extern bool graph_flag; /* for -g */
41d7a5f2 40extern bool xml_flag; /* for -x */
d0829076
PE
41extern bool locations_flag;
42extern bool no_lines_flag; /* for -l */
d0829076 43extern bool token_table_flag; /* for -k */
d0829076 44extern bool yacc_flag; /* for -y */
273a74fa 45
4e83ea15
AD
46extern bool error_verbose;
47
48
916708d5
AD
49/* GLR_PARSER is true if the input file says to use the GLR
50 (Generalized LR) parser, and to output some additional information
51 used by the GLR algorithm. */
52
53extern bool glr_parser;
54
916708d5
AD
55/* NONDETERMINISTIC_PARSER is true iff conflicts are accepted. This
56 is used by the GLR parser, and might be used in BackTracking
57 parsers too. */
58
59extern bool nondeterministic_parser;
60
7b42569e 61
0e021770
PE
62/* --language. */
63struct bison_language
64{
8405b70c
PB
65 char language[sizeof "Java"];
66 char skeleton[sizeof "java-skel.m4"];
67 char src_extension[sizeof ".java"];
68 char header_extension[sizeof ".java"];
0e021770
PE
69 bool add_tab;
70};
71
4b1ebc49 72extern int language_prio;
0e021770
PE
73extern struct bison_language const *language;
74
7b42569e
AD
75/*-----------.
76| --report. |
77`-----------*/
78
e8a0acd6 79enum report
ec3bc396 80 {
273a74fa
AD
81 report_none = 0,
82 report_states = 1 << 0,
83 report_itemsets = 1 << 1,
742e4900 84 report_lookahead_tokens = 1 << 2,
b408954b 85 report_solved_conflicts = 1 << 3,
273a74fa 86 report_all = ~0
ec3bc396 87 };
b8a41559 88/** What appears in the *.output file. */
ec3bc396
AD
89extern int report_flag;
90
7b42569e
AD
91/*----------.
92| --trace. |
93`----------*/
b8a41559
AD
94enum trace
95 {
96 trace_none = 0, /**< No traces. */
97 trace_scan = 1 << 0, /**< Grammar scanner traces. */
98 trace_parse = 1 << 1, /**< Grammar parser traces. */
99 trace_resource = 1 << 2, /**< Memory allocation. */
100 trace_sets = 1 << 3, /**< Grammar sets: firsts, nullable etc. */
101 trace_bitsets = 1 << 4, /**< Use of bitsets. */
102 trace_tools = 1 << 5, /**< m4 invocation. */
103 trace_automaton = 1 << 6, /**< Construction of the automaton. */
104 trace_grammar = 1 << 7, /**< Reading, reducing the grammar. */
105 trace_time = 1 << 8, /**< Time consumption. */
106 trace_skeleton = 1 << 9, /**< Skeleton postprocessing. */
107 trace_m4 = 1 << 10, /**< M4 traces. */
c65e5292 108 trace_muscles = 1 << 11, /**< M4 definitions of the muscles. */
f805dfcb 109 trace_ielr = 1 << 12, /**< IELR conversion. */
b8a41559
AD
110 trace_all = ~0 /**< All of the above. */
111 };
112/** What debug items bison displays during its run. */
113extern int trace_flag;
114
7b42569e
AD
115/*-------------.
116| --warnings. |
117`-------------*/
118
119enum warnings
120 {
121 warnings_none = 0, /**< Issue no warnings. */
122 warnings_error = 1 << 0, /**< Warnings are treated as errors. */
17bd8a73
JD
123 warnings_midrule_values = 1 << 1, /**< Unset or unused midrule values. */
124 warnings_yacc = 1 << 2, /**< POSIXME. */
6f8bdce2
JD
125 warnings_conflicts_sr = 1 << 3, /**< S/R conflicts. */
126 warnings_conflicts_rr = 1 << 4, /**< R/R conflicts. */
127 warnings_other = 1 << 5, /**< All other warnings. */
89eb3c76 128 warnings_all = ~warnings_error /**< All above warnings. */
7b42569e
AD
129 };
130/** What warnings are issued. */
131extern int warnings_flag;
132
133
134/** Process the command line arguments.
135 *
136 * \param argc size of \a argv
137 * \param argv list of arguments.
138 */
d33cb3ae 139void getargs (int argc, char *argv[]);
b2ca4022 140
0e021770 141/* Used by parse-gram.y. */
e186a284
AD
142void language_argmatch (char const *arg, int prio, location loc);
143void skeleton_arg (const char *arg, int prio, location loc);
0e021770 144
812775a0
JD
145/** In the string \c s, replace all characters \c from by \c to. */
146void tr (char *s, char from, char to);
147
b2ca4022 148#endif /* !GETARGS_H_ */