(b4_yy_symbol_print_generate): Use 'YYSTYPE const' rather than
'const YYSTYPE', and similarly for YYLTYPE. This fixes one
of the bugs reported today by Derek M Jones in
<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00027.html>.
* doc/bison.texinfo (Value Type): Document that YYSTYPE must be
defined to be a type name without parens or brackets.
(Location Type): Similarly for YYLTYPE.
* tests/regression.at (Trivial grammars): Put in a test for this
bug that will be caught by 'make maintainer-check' (though not,
alas, by 'make check' unless your compiler is picky).
preceding the RHS. This fixes the segmentation fault reported by Derek
M. Jones in
<http://lists.gnu.org/archive/html/help-bison/2006-05/msg00035.html>.
(yyreportTree, yypdumpstack): Subtract 1 from yyrule before printing
to the user. Reported for yyreportTree by Derek M. Jones later in the
same thread.
* THANKS: Add Derek M. Jones.
Update my email address.
Fix typo in Steve Murphy's name.
checking against YYLAST that caused the parser to miss a potential
alternative in its diagnostic.
Problem reported by Maria Jose Moron Fernandez in
<http://lists.gnu.org/archive/html/bug-bison/2006-05/msg00024.html>.
* data/lalr1.cc (yysyntax_error_): Likewise.
* data/yacc.c (yysyntax_error): Likewise.
* tests/regression.at (_AT_DATA_DANCER_Y): Use static array for
tokens, in case we run into an older C compiler.
(_AT_DATA_EXPECT2_Y, AT_CHECK_EXPECT2): New macros.
Use them to check for the off-by-one error fixed above.
* src/getargs.c (trace_types, trace_args): Accept trace_m4.
* src/output.c (output_skeleton): When set, pass -dV to m4.
Factor the handling of flags in m4.
* src/output.c (prepare): Rename the muscle names debug, defines,
error_verbose to debug_flag, defines_flag, error_verbose_flag.
* data/c.m4: Adjust.
(_b4_define_flag_if, b4_define_flag_if, b4_defines_if): New.
Use b4_define_flag_if to define other b4_FLAG_if macros.
(b4_location_if): As a consequence, rename as...
(b4_locations_if): this, for consistency.
Adjust all the skeletons.
skeletons here, so we don't have to put it in each skeleton. All
uses changed. Wrap the copyright notice, in case it is longer
than 80 columns. Replace comma by newline after title.
the copyright notice. Use more-regular format for titles and
copyright notices.
* data/glr.cc: Likewise.
* data/location.cc: Likewise.
* data/yacc.cc: Likewise.
* doc/bison.texinfo (Conditions): Document this.
* NEWS: likewise. Upgrade version to 2.2.
The test suite already exercize these cases.
* data/c++.m4 (b4_namespace): New.
* data/lalr1.cc, data/glr.cc, data/location.cc: Use it instead of `yy'.
* data/lalr1.cc (yytnameerr_): Move its definition into the namespace.
* data/yacc.c, data/glr.c: Remove a useless `[]'.
* doc/bison.texinfo: Document it.
(Option Cross Key): Use @multitable in all formats. It looks
nicer, even in TeX outputs.
(Rules): Use the same code whatever the output type is.
* tests/local.at (_AT_BISON_OPTION_PUSHDEFS)
(_AT_BISON_OPTION_POPDEFS): Support AT_NAME_PREFIX.
* tests/calc.at: Use it, instead of hard coding `yy'.
* src/assoc.h (assoc_to_string): Give a name to the arg, as
this is the usual Bison style.
* src/location.h (location_print): Likewise.
* src/reader.h (token_name): Likewise.
* doc/FAQ: Remove ancient Y2K FAQ, replacing it with "secure"
and "POSIX". Use more-modern syntax for URLs. Mention C++
and ask for Java. Don't hardwire OS version numbers. Add
copyright notice.
* m4/.cvsignore: Add unistd_h.m4, for latest gnulib.
* src/conflicts.c (solved_conflicts_obstack): Now static.
shadowing warnings. Use usual patter for iterating through RHS.
* tests/glr-regression.at
(Uninitialized location when reporting ambiguity):
Modify yylex so that it uses its argument, rather than trying
to rely on ARGSUSED (which doesn't work for gcc with warnings).
const char -> char const.
ambiguity): New test case.
* data/glr.c (yyresolveLocations): New function, which uses
YYLLOC_DEFAULT.
(yyresolveValue): Invoke yyresolveLocations before reporting an
ambiguity.
* doc/bison.texinfo (Default Action for Locations): Note
YYLLOC_DEFAULT's usage for ambiguity locations.
(GLR Semantic Actions): Cross-reference those notes.
ambiguity): Remove unnecessary union and type declarations.
(Leaked lookahead after nondeterministic parse syntax error): New test
case.
* data/glr.c (yyparse): Check for zero stacks remaining before
attempting to shift the lookahead so that you don't lose it.
* tests/glr-regression.at (Leaked semantic values when reporting
ambiguity): New test case.
* data/glr.c (yyreportAmbiguity): Invoke yyyerror directly and return
yyabort rather than invoking yyFail, which invokes longjmp. Remove the
now unnecessary yystackp parameter.
(yyresolveValue): Return yyreportAmbiguity's result. Now the necessary
destructors can be called.
* tests/glr-regression.at: Don't invoke bison with `-t' unnecessarily
in existing testcases.
parser, and clean up related code a bit.
* tests/glr-regression.at (Leaked merged semantic value if user action
cuts parse) Rename to...
(Leaked semantic values if user action cuts parse) ... this. Add check
for leaked parent RHS values.
* data/glr.c (yydestroyGLRState): In debugging output, distinguish
between an unresolved state (non-empty chain of semantic options) and
an incomplete one (signaled by an empty chain).
(yyresolveStates): Document the interface. Move all manipulation of an
successfully or unsuccessfully resolved yyGLRState to...
(yyresolveValue): ... here so that yyresolveValue always leaves a
yyGLRState with consistent data and thus is easier to understand.
Remove the yyvalp and yylocp parameters since they are always just
taken from the yys parameter. When reporting a discarded merged value
in debugging output, note that it is incompletely merged. Document the
interface.
(yyresolveAction): If resolving any of the RHS states fails, destroy
them all rather than leaking them. Thus, as long as user actions are
written to clean up the RHS correctly, yyresolveAction always cleans up
the RHS of a semantic option. Document the interface.