(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.
2001-03-16 Akim Demaille <akim@epita.fr>
* m4/strerror_r.m4: New.
* Added `--locations' and `%locations'.
* 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'.
* 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-2: 50276
bison.info-3: 98079
bison.info-4: 147596
\1f
Tag Table:
(Indirect)
\1f
Tag Table:
(Indirect)
Node: Debugging\7f174489
Node: Invocation\7f177790
Node: Bison Options\7f178520
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
+`-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
`-t'
`--debug'
Output a definition of the macro `YYDEBUG' into the parser file, so
Tuning the parser:
@table @option
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
@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
@set EDITION 1.28a
@set VERSION 1.28a
-y, --yacc emulate POSIX yacc\n", 26},
{"\
Parser:\n\
-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\
-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},
-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},
{"\
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.
/* 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.
This file is part of Bison, the GNU Compiler Compiler.
int no_lines_flag = 0;
int no_parser_flag = 0;
int raw_flag = 0;
int no_lines_flag = 0;
int no_parser_flag = 0;
int raw_flag = 0;
int token_table_flag = 0;
int verbose_flag = 0;
int statistics_flag = 0;
int yacc_flag = 0; /* for -y */
extern char *program_name;
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. */
static struct option longopts[] =
{
/* Operation modes. */
{"fixed-output-files",no_argument, 0, 'y'},
/* Parser. */
{"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'},
{"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'},
{"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'},
/* Output. */
{"defines", no_argument, 0, 'd'},
+ -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\
-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 (_("\
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"),
- 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);
+ }
/* Parse command line arguments for bison.
/* 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.
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 */
/* flags set by % directives */
extern char *spec_file_prefix; /* for -b */
extern char *spec_name_prefix; /* for -p */
extern int debug_flag; /* for -t */
extern int defines_flag; /* for -d */
extern int debug_flag; /* for -t */
extern int defines_flag; /* for -d */
int c;
FILE *fskel;
size_t line;
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. */
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
fskel = xfopen (skeleton, "r");
/* Set LINE to 2, not 1: `#line LINENUM' -- Here LINENUM is a