summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAkim Demaille <akim.demaille@gmail.com>2019-01-27 07:51:07 +0100
committerAkim Demaille <akim.demaille@gmail.com>2019-01-28 06:47:07 +0100
commit9cd7bd4d5fb5032b2ce2c4e26c4bd0a0baeb708a (patch)
treef8a1e2678d75fee063e25363a92e4c9dcaac4852 /src
parenta108d84f883df77c5c32ae8875406f669d7fe38d (diff)
downloadbison-9cd7bd4d5fb5032b2ce2c4e26c4bd0a0baeb708a.tar.gz
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.
Diffstat (limited to 'src')
-rw-r--r--src/getargs.c5
-rw-r--r--src/getargs.h9
-rw-r--r--src/main.c7
3 files changed, 15 insertions, 6 deletions
diff --git a/src/getargs.c b/src/getargs.c
index 394221a0..e71aafd3 100644
--- a/src/getargs.c
+++ b/src/getargs.c
@@ -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':
diff --git a/src/getargs.h b/src/getargs.h
index c5adb848..f630d0f5 100644
--- a/src/getargs.h
+++ b/src/getargs.h
@@ -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;
diff --git a/src/main.c b/src/main.c
index b56fae78..065540db 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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 ();