(longopts): --skeleton is a new option.
(shortopts, getargs): -S is a new option.
* getargs.h: Declare skeleton.
* output.c (output_parser): Use it.
+2001-03-16 Akim Demaille <akim@epita.fr>
+
+ * getargs.c (skeleton): New variable.
+ (longopts): --skeleton is a new option.
+ (shortopts, getargs): -S is a new option.
+ * getargs.h: Declare skeleton.
+ * output.c (output_parser): Use it.
+
2001-03-16 Akim Demaille <akim@epita.fr>
* m4/strerror_r.m4: New.
* Added `--locations' and `%locations'.
+* Added `-S' and `--skeleton'.
+
+* Special characters are escaped when output. This solves the problems
+ of the #line lines with path names including backslashes.
+
* New directives.
`%yacc', `%fixed_output_files', `%defines', `%no_parser', `%verbose', and
`%debug'.
bison.info-2: 50276
bison.info-3: 98079
bison.info-4: 147596
-bison.info-5: 191991
+bison.info-5: 192129
\1f
Tag Table:
(Indirect)
Node: Debugging\7f174489
Node: Invocation\7f177790
Node: Bison Options\7f178520
-Node: Environment Variables\7f181893
-Node: Option Cross Key\7f182741
-Node: VMS Invocation\7f183631
-Node: Table of Symbols\7f184415
-Node: Glossary\7f191991
-Node: Index\7f198281
+Node: Environment Variables\7f182031
+Node: Option Cross Key\7f182879
+Node: VMS Invocation\7f183769
+Node: Table of Symbols\7f184553
+Node: Glossary\7f192129
+Node: Index\7f198419
\1f
End Tag Table
Tuning the parser:
+`-S FILE'
+`--skeleton=FILE'
+ Specify the skeleton to use. You probably don't need this option
+ unless you are developing Bison.
+
`-t'
`--debug'
Output a definition of the macro `YYDEBUG' into the parser file, so
Tuning the parser:
@table @option
+@item -S @var{file}
+@itemx --skeleton=@var{file}
+Specify the skeleton to use. You probably don't need this option unless
+you are developing Bison.
+
@item -t
@itemx --debug
Output a definition of the macro @code{YYDEBUG} into the parser file, so
-@set UPDATED 18 January 2001
+@set UPDATED 16 March 2001
@set EDITION 1.28a
@set VERSION 1.28a
-y, --yacc emulate POSIX yacc\n", 26},
{"\
Parser:\n\
+ -S, --skeleton=FILE specify the skeleton to use\n\
-t, --debug instrument the parser for debugging\n\
--locations enable locations computation\n\
-p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\
-o, --output-file=FILE leave output to FILE\n", 28},
{"Report bugs to <bug-bison@gnu.org>.\n", 29},
{"bison (GNU Bison) %s", 30},
- {"Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.\n", 31},
+ {"\
+Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n", 31},
{"\
This is free software; see the source for copying conditions. There is NO\n\
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", 32},
/* Parse command line arguments for bison.
- Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
+ Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
int no_lines_flag = 0;
int no_parser_flag = 0;
int raw_flag = 0;
+char *skeleton = 0;
int token_table_flag = 0;
int verbose_flag = 0;
int statistics_flag = 0;
int yacc_flag = 0; /* for -y */
extern char *program_name;
-const char *shortopts = "yvdhrltknVo:b:p:";
+const char *shortopts = "yvdhrltknVo:b:p:S:";
static struct option longopts[] =
{
/* Operation modes. */
{"fixed-output-files",no_argument, 0, 'y'},
/* Parser. */
+ {"skeleton", required_argument, 0, 'S'},
+ {"debug", no_argument, 0, 'd'},
{"locations", no_argument, &locations_flag, 1},
/* was 'a'; apparently unused -wjh */
{"name-prefix", required_argument, 0, 'p'},
{"no-parser", no_argument, 0, 'n'},
{"raw", no_argument, 0, 'r'},
{"token-table", no_argument, 0, 'k'},
- {"debug", no_argument, 0, 'd'},
/* Output. */
{"defines", no_argument, 0, 'd'},
fputs (_("\
Parser:\n\
+ -S, --skeleton=FILE specify the skeleton to use\n\
-t, --debug instrument the parser for debugging\n\
--locations enable locations computation\n\
-p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\
putc ('\n', stream);
fputs (_("\
-Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.\n"),
+Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.\n"),
stream);
fputs (_("\
{
int c;
- while ((c = getopt_long (argc, argv, "yvdhrltknVo:b:p:", longopts, (int *)0))
- != EOF)
- {
- switch (c)
- {
- case 0:
- /* Certain long options cause getopt_long to return 0. */
- break;
-
- case 'y':
- yacc_flag = 1;
- break;
-
- case 'h':
- usage (stdout);
- exit (0);
-
- case 'V':
- version (stdout);
- exit (0);
-
- case 'v':
- verbose_flag = 1;
- break;
-
- case 'd':
- defines_flag = 1;
- break;
-
- case 'l':
- no_lines_flag = 1;
- break;
-
- case 'k':
- token_table_flag = 1;
- break;
-
- case 'r':
- raw_flag = 1;
- break;
-
- case 'n':
- no_parser_flag = 1;
- break;
-
- case 't':
- debug_flag = 1;
- break;
-
- case 'o':
- spec_outfile = optarg;
- break;
-
- case 'b':
- spec_file_prefix = optarg;
- break;
-
- case 'p':
- spec_name_prefix = optarg;
- break;
-
- default:
- fprintf (stderr, _("Try `%s --help' for more information.\n"),
- program_name);
- exit (1);
- }
- }
+ while ((c = getopt_long (argc, argv, shortopts, longopts, NULL)) != EOF)
+ switch (c)
+ {
+ case 0:
+ /* Certain long options cause getopt_long to return 0. */
+ break;
+
+ case 'y':
+ yacc_flag = 1;
+ break;
+
+ case 'h':
+ usage (stdout);
+ exit (0);
+
+ case 'V':
+ version (stdout);
+ exit (0);
+
+ case 'v':
+ verbose_flag = 1;
+ break;
+
+ case 'S':
+ skeleton = optarg;
+ break;
+
+ case 'd':
+ defines_flag = 1;
+ break;
+
+ case 'l':
+ no_lines_flag = 1;
+ break;
+
+ case 'k':
+ token_table_flag = 1;
+ break;
+
+ case 'r':
+ raw_flag = 1;
+ break;
+
+ case 'n':
+ no_parser_flag = 1;
+ break;
+
+ case 't':
+ debug_flag = 1;
+ break;
+
+ case 'o':
+ spec_outfile = optarg;
+ break;
+
+ case 'b':
+ spec_file_prefix = optarg;
+ break;
+
+ case 'p':
+ spec_name_prefix = optarg;
+ break;
+
+ default:
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ exit (1);
+ }
if (optind == argc)
{
/* Parse command line arguments for bison.
- Copyright 1984, 1986, 1989, 1992, 2000 Free Software Foundation, Inc.
+ Copyright 1984, 1986, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler.
/* flags set by % directives */
extern char *spec_file_prefix; /* for -b */
extern char *spec_name_prefix; /* for -p */
+extern char *skeleton;
extern int debug_flag; /* for -t */
extern int defines_flag; /* for -d */
int c;
FILE *fskel;
size_t line;
- const char *skeleton = NULL;
int actions_dumped = 0;
if (pure_parser)
obstack_sgrow (&table_obstack, "#define YYPURE 1\n\n");
/* Loop over lines in the standard parser file. */
- if (semantic_parser)
- skeleton = skeleton_find ("BISON_HAIRY", BISON_HAIRY);
- else
- skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
+ if (!skeleton)
+ {
+ if (semantic_parser)
+ skeleton = skeleton_find ("BISON_HAIRY", BISON_HAIRY);
+ else
+ skeleton = skeleton_find ("BISON_SIMPLE", BISON_SIMPLE);
+ }
fskel = xfopen (skeleton, "r");
/* Set LINE to 2, not 1: `#line LINENUM' -- Here LINENUM is a