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:
Akim Demaille
2019-01-27 07:51:07 +01:00
parent a108d84f88
commit 9cd7bd4d5f
5 changed files with 23 additions and 6 deletions

6
NEWS
View File

@@ -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]

View File

@@ -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

View File

@@ -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':

View File

@@ -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;

View File

@@ -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 ();