Since we now use obstacks, more % directives can be enabled.

* src/lex.c (percent_table): Also accept `%yacc',
`%fixed_output_files', `%defines', `%no_parser', `%verbose', and
`%debug'.
Handle the actions for `%semantic_parser' and `%pure_parser' here,
instead of returning a token.
* src/lex.h (SEMANTIC_PARSER, PURE_PARSER): Remove, unused.
* src/reader.c (read_declarations): Adjust.
* src/files.c (open_files): Don't call `compute_base_names', don't
compute `attrsfile' since they depend upon data which might be
*in* the input file now.
(output_files): Do it here.
* src/output.c (output_headers): Document the fact that this patch
introduces a guaranteed SEGV for semantic parsers.
* doc/bison.texinfo: Document them.
* tests/suite.at: Exercise these %options.
This commit is contained in:
Akim Demaille
2001-01-18 14:47:09 +00:00
parent dde188fc64
commit 6deb44470e
14 changed files with 496 additions and 388 deletions

View File

@@ -223,10 +223,18 @@ register YYLTYPE *yylsp;\n\
void
output_headers (void)
{
char *attrsfile_quoted = quotearg_style (c_quoting_style, attrsfile);
char *attrsfile_quoted = 0;
if (semantic_parser)
obstack_fgrow1 (&guard_obstack, GUARDSTR, attrsfile_quoted);
{
/* FIXME: This is *buggy*. ATTRSFILE is not computed yet, since
we are waiting for the full input file to have been read to
be sure of the output file name. So basically, here, a SEGV
is guaranteed. OTOH, currently semantic parsers are not
supported. */
attrsfile_quoted = quotearg_style (c_quoting_style, attrsfile);
obstack_fgrow1 (&guard_obstack, GUARDSTR, attrsfile_quoted);
}
if (no_parser_flag)
return;