From: Marc Autret Date: Mon, 17 Sep 2001 23:00:01 +0000 (+0000) Subject: * src/getargs.c (longopts): Declare --defines and --graph as options X-Git-Tag: BISON-1_29a~17 X-Git-Url: https://git.saurik.com/bison.git/commitdiff_plain/6526f6dbf776033fc2950b9303693551277d5478 * src/getargs.c (longopts): Declare --defines and --graph as options with optional arguments. * src/files.h: Add extern declarations. * src/files.c (spec_graph_file, spec_defines_file): New. (output_files): Update. Remove CPP-outed code. --- diff --git a/ChangeLog b/ChangeLog index 13b1dd61..adf7058d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2001-09-18 Marc Autret + + * src/getargs.c (longopts): Declare --defines and --graph as options + with optional arguments. + * src/files.h: Add extern declarations. + * src/files.c (spec_graph_file, spec_defines_file): New. + (output_files): Update. + Remove CPP-outed code. + 2001-09-18 Marc Autret Turn off %{source,header}_extension feature. diff --git a/src/files.c b/src/files.c index 35cd872d..f9cb6f33 100644 --- a/src/files.c +++ b/src/files.c @@ -39,6 +39,8 @@ struct obstack graph_obstack; char *spec_outfile = NULL; /* for -o. */ char *spec_file_prefix = NULL; /* for -b. */ char *spec_name_prefix = NULL; /* for -p. */ +char *spec_graph_file = NULL; /* for -g. */ +char *spec_defines_file = NULL; /* for --defines. */ char *infile = NULL; char *attrsfile = NULL; @@ -418,14 +420,14 @@ output_files (void) compute_base_names (); -#if 0 - /* Set default extensions */ - if (!src_extension) - src_extension = ".c"; - if (!header_extension) - header_extension = ".h"; -#endif - + /* It the defines filename if not given, we create it. */ + if (!spec_defines_file) + spec_defines_file = stringappend (base_name, header_extension); + + /* It the graph filename if not given, we create it. */ + if (!spec_graph_file) + spec_graph_file = stringappend (short_base_name, ".vcg"); + attrsfile = stringappend (short_base_name, EXT_STYPE_H); #ifndef MSDOS stringappend (attrsfile, header_extension); @@ -439,7 +441,7 @@ output_files (void) /* Output the header file if wanted. */ if (defines_flag) - defines_obstack_save (stringappend (base_name, header_extension)); + defines_obstack_save (spec_defines_file); /* If we output only the table, dump the actions in ACTFILE. */ if (no_parser_flag) @@ -466,5 +468,5 @@ output_files (void) stringappend (short_base_name, EXT_OUTPUT)); if (graph_flag) - obstack_save (&graph_obstack, stringappend (short_base_name, ".vcg")); + obstack_save (&graph_obstack, spec_graph_file); } diff --git a/src/files.h b/src/files.h index 7ffaf958..1d540f2c 100644 --- a/src/files.h +++ b/src/files.h @@ -33,10 +33,16 @@ extern char *spec_name_prefix; /* File name pfx specified with -b, or 0 if no -b. */ extern char *spec_file_prefix; +/* File name specified for the output VCG graph. */ +extern char *spec_graph_file; + +/* File name specified with --defines. */ +extern char *spec_defines_file; /* Read grammar specifications. */ extern FILE *finput; + /* Output all the action code; precise form depends on which parser. */ extern struct obstack action_obstack; diff --git a/src/getargs.c b/src/getargs.c index 70f0d32c..4bcd3775 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -60,11 +60,11 @@ static struct option longopts[] = {"token-table", no_argument, 0, 'k'}, /* Output. */ - {"defines", no_argument, 0, 'd'}, + {"defines", optional_argument, 0, 'd'}, {"verbose", no_argument, 0, 'v'}, {"file-prefix", required_argument, 0, 'b'}, {"output-file", required_argument, 0, 'o'}, - {"graph", no_argument, 0, 'g'}, + {"graph", optional_argument, 0, 'g'}, /* Hidden. */ {"statistics", no_argument, &statistics_flag, 1}, @@ -183,7 +183,9 @@ getargs (int argc, char *argv[]) exit (0); case 'g': + /* Here, the -g and --graph=FILE options are differentiated. */ graph_flag = 1; + spec_graph_file = optarg; break; case 'v': @@ -195,7 +197,9 @@ getargs (int argc, char *argv[]) break; case 'd': + /* Here, the -d and --defines options are differentiated. */ defines_flag = 1; + spec_defines_file = optarg; break; case 'l':