]> git.saurik.com Git - bison.git/blame - src/complain.h
lalr1.cc: rename lex_symbol as api.token.constructor
[bison.git] / src / complain.h
CommitLineData
a0f6b076 1/* Declaration for error-reporting function for Bison.
7d424de1 2
34136e65 3 Copyright (C) 2000-2002, 2006, 2009-2012 Free Software Foundation,
575619af 4 Inc.
a0f6b076 5
f16b0819
PE
6 This program is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
a0f6b076
AD
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
f16b0819 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
a0f6b076
AD
18
19#ifndef COMPLAIN_H_
ee000ba4 20# define COMPLAIN_H_ 1
a0f6b076 21
ee000ba4
AD
22# include "location.h"
23
46bdb8ec
TR
24/* Sub-messages indent. */
25#define SUB_INDENT (4)
26
d0f11c1b
VS
27/*-------------.
28| --warnings. |
29`-------------*/
30
6fb8b256 31typedef enum
d0f11c1b 32 {
b6403170
VS
33 Wnone = 0, /**< Issue no warnings. */
34 Wmidrule_values = 1 << 0, /**< Unset or unused midrule values. */
35 Wyacc = 1 << 1, /**< POSIXME. */
36 Wconflicts_sr = 1 << 2, /**< S/R conflicts. */
37 Wconflicts_rr = 1 << 3, /**< R/R conflicts. */
518e8830
AD
38 Wdeprecated = 1 << 4, /**< Obsolete constructs. */
39 Wother = 1 << 5, /**< All other warnings. */
b6403170 40
9503b0a4
TR
41 Werror = 1 << 10, /** This bit is no longer used. */
42
b6403170
VS
43 complaint = 1 << 11, /**< All complaints. */
44 fatal = 1 << 12, /**< All fatal errors. */
45 silent = 1 << 13, /**< Do not display the warning type. */
9503b0a4
TR
46
47 /**< All above warnings. */
48 Wall = ~complaint & ~fatal & ~silent
6fb8b256 49 } warnings;
d0f11c1b
VS
50
51/** What warnings are issued. */
6fb8b256 52extern warnings warnings_flag;
d0f11c1b 53
9503b0a4
TR
54/** What warnings are made errors. */
55extern warnings errors_flag;
56
b6403170
VS
57/** Display a "[-Wyacc]" like message on stderr. */
58void warnings_print_categories (warnings warn_flags);
59
bb8e56ff 60/** Make a complaint, with maybe a location. */
b999409e 61void complain (location const *loc, warnings flags, char const *message, ...)
66381412
AR
62 __attribute__ ((__format__ (__printf__, 3, 4)));
63
782e8187 64/** Likewise, but with an \a argc/argv interface. */
c6c8de16
TR
65void complain_args (location const *loc, warnings w, unsigned *indent,
66 int argc, char *arg[]);
782e8187 67
6fb8b256 68/** Make a complaint with location and some indentation. */
b999409e
TR
69void complain_indent (location const *loc, warnings flags, unsigned *indent,
70 char const *message, ...)
6fb8b256 71 __attribute__ ((__format__ (__printf__, 4, 5)));
a0f6b076 72
697a8022
TR
73
74/** Warnings treated as errors shouldn't stop the execution as regular errors
75 should (because due to their nature, it is safe to go on). Thus, there are
76 three possible execution statuses. */
77typedef enum
78 {
79 status_none,
80 status_warning_as_error,
81 status_complaint
82 } err_status;
83
23eb2a69 84/** Whether an error was reported. */
697a8022 85extern err_status complaint_status;
a0f6b076 86
a0f6b076 87#endif /* !COMPLAIN_H_ */