* 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.
This commit is contained in:
Akim Demaille
2001-03-16 15:16:08 +00:00
parent 5141b01619
commit cd5bd6ac4f
10 changed files with 104 additions and 72 deletions

View File

@@ -1,3 +1,11 @@
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.

5
NEWS
View File

@@ -11,6 +11,11 @@ Changes in version 1.28a:
* 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'.

View File

@@ -34,7 +34,7 @@ bison.info-1: 1306
bison.info-2: 50276
bison.info-3: 98079
bison.info-4: 147596
bison.info-5: 191991
bison.info-5: 192129

Tag Table:
(Indirect)
@@ -124,11 +124,11 @@ Node: Tie-in Recovery172317
Node: Debugging174489
Node: Invocation177790
Node: Bison Options178520
Node: Environment Variables181893
Node: Option Cross Key182741
Node: VMS Invocation183631
Node: Table of Symbols184415
Node: Glossary191991
Node: Index198281
Node: Environment Variables182031
Node: Option Cross Key182879
Node: VMS Invocation183769
Node: Table of Symbols184553
Node: Glossary192129
Node: Index198419

End Tag Table

View File

@@ -846,6 +846,11 @@ Operations modes:
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

View File

@@ -4984,6 +4984,11 @@ bison -y $*
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

View File

@@ -1,3 +1,3 @@
@set UPDATED 18 January 2001
@set UPDATED 16 March 2001
@set EDITION 1.28a
@set VERSION 1.28a

View File

@@ -43,6 +43,7 @@ Operation modes:\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\
@@ -58,7 +59,8 @@ Output:\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},

View File

@@ -1,5 +1,5 @@
/* 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.
@@ -30,13 +30,14 @@ int locations_flag = 0;
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. */
@@ -46,6 +47,8 @@ static struct option longopts[] =
{"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'},
@@ -53,7 +56,6 @@ static struct option longopts[] =
{"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'},
@@ -98,6 +100,7 @@ Operation modes:\n\
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\
@@ -136,7 +139,7 @@ bison (GNU Bison) %s"), VERSION);
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 (_("\
@@ -156,73 +159,74 @@ getargs (int argc, char *argv[])
{
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;
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 'y':
yacc_flag = 1;
break;
case 'h':
usage (stdout);
exit (0);
case 'h':
usage (stdout);
exit (0);
case 'V':
version (stdout);
exit (0);
case 'V':
version (stdout);
exit (0);
case 'v':
verbose_flag = 1;
break;
case 'v':
verbose_flag = 1;
break;
case 'd':
defines_flag = 1;
break;
case 'S':
skeleton = optarg;
break;
case 'l':
no_lines_flag = 1;
break;
case 'd':
defines_flag = 1;
break;
case 'k':
token_table_flag = 1;
break;
case 'l':
no_lines_flag = 1;
break;
case 'r':
raw_flag = 1;
break;
case 'k':
token_table_flag = 1;
break;
case 'n':
no_parser_flag = 1;
break;
case 'r':
raw_flag = 1;
break;
case 't':
debug_flag = 1;
break;
case 'n':
no_parser_flag = 1;
break;
case 'o':
spec_outfile = optarg;
break;
case 't':
debug_flag = 1;
break;
case 'b':
spec_file_prefix = optarg;
break;
case 'o':
spec_outfile = optarg;
break;
case 'p':
spec_name_prefix = optarg;
break;
case 'b':
spec_file_prefix = optarg;
break;
default:
fprintf (stderr, _("Try `%s --help' for more information.\n"),
program_name);
exit (1);
}
}
case 'p':
spec_name_prefix = optarg;
break;
default:
fprintf (stderr, _("Try `%s --help' for more information.\n"),
program_name);
exit (1);
}
if (optind == argc)
{

View File

@@ -1,5 +1,5 @@
/* 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.
@@ -24,6 +24,7 @@
/* 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 */

View File

@@ -1154,17 +1154,19 @@ output_parser (void)
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