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