mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
add -fsyntax-only
When debugging Bison itself, this is very handy, especially when tweaking the frontend badly enough to break the backends. It can also be used to check a grammar. * src/getargs.h, src/getargs.c (feature_syntax_only): New. (feature_args, feature_types): Adjust. * src/main.c (main): Use it.
This commit is contained in:
6
NEWS
6
NEWS
@@ -2,6 +2,12 @@ GNU Bison NEWS
|
||||
|
||||
* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
|
||||
** New features
|
||||
|
||||
*** Disabling output
|
||||
|
||||
When given -fsyntax-only, the diagnostics are reported, but no output is
|
||||
generated.
|
||||
|
||||
* Noteworthy changes in release 3.3.1 (2019-01-27) [stable]
|
||||
|
||||
|
||||
@@ -10601,6 +10601,8 @@ foo.y: warning: fix-its can be applied. Rerun with option '--update'. [-Wother]
|
||||
The fix-its are applied by @command{bison} itself when given the option
|
||||
@option{-u}/@option{--update}. See its documentation above.
|
||||
|
||||
@item syntax-only
|
||||
Do not generate the output files.
|
||||
@end table
|
||||
@end table
|
||||
|
||||
|
||||
@@ -231,6 +231,7 @@ static const char * const feature_args[] =
|
||||
"none",
|
||||
"caret", "diagnostics-show-caret",
|
||||
"fixit", "diagnostics-parseable-fixits",
|
||||
"syntax-only",
|
||||
"all",
|
||||
0
|
||||
};
|
||||
@@ -240,6 +241,7 @@ static const int feature_types[] =
|
||||
feature_none,
|
||||
feature_caret, feature_caret,
|
||||
feature_fixit_parsable, feature_fixit_parsable,
|
||||
feature_syntax_only,
|
||||
feature_all
|
||||
};
|
||||
|
||||
@@ -362,6 +364,8 @@ FEATURES is a list of comma separated words that can include:\n\
|
||||
show errors with carets\n\
|
||||
'fixit', 'diagnostics-parseable-fixits'\n\
|
||||
show machine-readable fixes\n\
|
||||
'syntax-only'\n\
|
||||
do not generate any file\n\
|
||||
'all'\n\
|
||||
all of the above\n\
|
||||
'none'\n\
|
||||
@@ -698,6 +702,7 @@ getargs (int argc, char *argv[])
|
||||
|
||||
case 'u':
|
||||
update_flag = true;
|
||||
feature_flag |= feature_syntax_only;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
|
||||
@@ -114,10 +114,11 @@ extern int trace_flag;
|
||||
|
||||
enum feature
|
||||
{
|
||||
feature_none = 0, /**< No additional feature. */
|
||||
feature_caret = 1 << 0, /**< Output errors with carets. */
|
||||
feature_fixit_parsable = 1 << 1, /**< Issue instructions to fix the sources. */
|
||||
feature_all = ~0 /**< All above features. */
|
||||
feature_none = 0, /**< No additional feature. */
|
||||
feature_caret = 1 << 0, /**< Output errors with carets. */
|
||||
feature_fixit_parsable = 1 << 1, /**< Issue instructions to fix the sources. */
|
||||
feature_syntax_only = 1 << 2, /**< Don't generate output. */
|
||||
feature_all = ~0 /**< All above features. */
|
||||
};
|
||||
/** What additional features to use. */
|
||||
extern int feature_flag;
|
||||
|
||||
@@ -155,7 +155,10 @@ main (int argc, char *argv[])
|
||||
|
||||
print_precedence_warnings ();
|
||||
|
||||
if (!update_flag)
|
||||
/* Whether to generate output files. */
|
||||
bool generate = !(feature_flag & feature_syntax_only);
|
||||
|
||||
if (generate)
|
||||
{
|
||||
/* Output file names. */
|
||||
compute_output_file_names ();
|
||||
@@ -196,7 +199,7 @@ main (int argc, char *argv[])
|
||||
timevar_pop (tv_free);
|
||||
|
||||
/* Output the tables and the parser to ftable. In file output. */
|
||||
if (!update_flag)
|
||||
if (generate)
|
||||
{
|
||||
timevar_push (tv_parser);
|
||||
output ();
|
||||
|
||||
Reference in New Issue
Block a user