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 <autret_m@epita.fr>
+
+ * 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 <autret_m@epita.fr>
Turn off %{source,header}_extension feature.
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;
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);
/* 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)
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);
}
/* 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;
{"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},
exit (0);
case 'g':
+ /* Here, the -g and --graph=FILE options are differentiated. */
graph_flag = 1;
+ spec_graph_file = optarg;
break;
case 'v':
break;
case 'd':
+ /* Here, the -d and --defines options are differentiated. */
defines_flag = 1;
+ spec_defines_file = optarg;
break;
case 'l':