mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 04:13:03 +00:00
* 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:
@@ -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
5
NEWS
@@ -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'.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
@set UPDATED 18 January 2001
|
||||
@set UPDATED 16 March 2001
|
||||
@set EDITION 1.28a
|
||||
@set VERSION 1.28a
|
||||
|
||||
@@ -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},
|
||||
|
||||
118
src/getargs.c
118
src/getargs.c
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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 */
|
||||
|
||||
12
src/output.c
12
src/output.c
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user