* tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Avoid tripping
autoconf bug related to # in test.
Signed-off-by: Eric Blake <ebb9@byu.net>
(cherry picked from commit ab3a683f05)
* src/getargs.h, src/getargs.c (locations_flag): Remove.
* src/getargs.c, src/scan-code.l: Use muscle_percent_define_ensure
to set "locations" to true.
* src/output.c (prepare): Don't output "locations".
* src/scan-gram.l (%locations): Handle it as a %<flag>.
* src/parse-gram.y: It's no longer a token.
Don't handle it.
* data/bison.m4 (b4_locations_if): Define it with
b4_percent_define_if_define.
* data/c.m4, data/glr.cc: Adjust.
Suggested by Joel E. Denny.
* src/muscle_tab.h, src/muscle_tab.c (muscle_percent_define_ensure):
New, extracted from...
* src/parse-gram.y (prologue_declaration: pure-parser): here.
Remove it.
(prologue_declaration: "%<flag>"): Use
muscle_percent_define_ensure.
(%error-verbose, %pure-parser): No longer tokens.
* src/scan-gram.l (pure-parser): Return as a %<flag>.
* build-aux/cross-options.pl: As in --help output, write optional
arguments as [=ARG] not =[ARG].
* doc/bison.texinfo (Bison Options): Add -W/--warnings argument.
If the first m4 in $PATH is wrong, it keeps looking. Moreover, its
requirements for a correct m4 are stricter.
* m4/m4.m4: Make it a symbolic link to submodules/autoconf/m4/m4.m4.
* configure.ac: Update to use AC_PROG_GNU_M4.
Reported by Eric Blake.
* src/parse-gram.y (PERCENT_DEBUG, PERCENT_ERROR_VERBOSE): Token
definitions and associated rules, replaced by....
(PERCENT_FLAG): this new token type, and rule.
* src/scan-gram.l (RETURN_PERCENT_FLAG): New.
Use it for %debug and %error-verbose.
Reported by Akim Demaille at
<http://lists.gnu.org/archive/html/bug-bison/2007-12/msg00001.html>
and discussed again starting at
<http://lists.gnu.org/archive/html/bison-patches/2008-11/msg00102.html>.
* data/bison.m4 (b4_percent_define_default): Leave syncline blank
because location information is bogus.
Use angle brackets to delimit fake file name because square brackets
look like over-quoted m4. Choose a better fake file name.
Use negative line numbers.
* src/muscle_tab.c (muscle_percent_define_default): Likewise.
* src/location.c (location_print): If line for a boundary is negative,
only print that boundary's file name.
* src/location.h: Document that.
* tests/skeletons.at (%define Boolean variables: invalid skeleton
defaults): Update output.
* Makefile.am (AM_CFLAGS): Remove $(WERROR_CFLAGS) because many files
in lib won't compile with it.
* src/local.mk (src_bison_CFLAGS): Use $(WERROR_CFLAGS) here only.
GCC 4.3 now warns about "a || b && c" and asks for explicit
parentheses.
Reported by Alexandre Duret-Lutz.
* data/location.cc: Update copyright years.
(Position::operator==): Use parens to make precedence explicit.
Compare lines and columns first, as they are more likely to be
different, and they are faster to compare.
Yes, this obfuscates the point of this example, variants only. But glr.cc
cannot work (yet?) without locations. This change makes it easier to use
this example with glr.cc.
* examples/variant.yy (assert): %define it.
(locations): Request them.
(yylex): Bind the location to the stage.
* data/c++.m4 (b4_symbol_constructor_declare)
(b4_symbol_constructor_define): New empty stubs.
(b4_public_types_declare, b4_public_types_define): Use them.
* data/lalr1.cc (b4_symbol_constructor_declare)
(b4_symbol_constructor_declare_)
(b4_symbol_constructor_define_, b4_symbol_constructor_define):
Move to...
* data/variant.hh: here.
Remove the "b4_variant_if" parts, as variant.hh is loaded only if
needed.
* data/lalr1.cc: No longer invoke b4_symbol_constructor_define and
b4_symbol_constructor_declare, as it is now done by
b4_public_types_define and b4_public_types_declare.
* data/c++.m4 (b4_public_types_declare): Now define
symbol_type_base and symbol_type.
(b4_public_types_define): New.
In both cases, the definitions are taken verbatim from lalr1.cc.
* data/lalr1.cc: Adjust.
* data/c++.m4 (b4_semantic_type_declare): New.
Factors and generalizes what was in glr.cc and lalr1.cc.
* data/variant.hh (b4_semantic_type_declare): Redefine it for
variants.
* data/lalr1.cc, data/glr.cc: Use it.
* data/lalr1.cc: here.
There is no good reason to keep it private (and it is convenient
to use it from the scanner for instance). It is already public in
glr.cc.
The epilogue has its own ending \n, no need to add another.
* data/glr.c, data/lalr1.java, data/yacc.c: dnl when outputing the
epilogue.
* data/glr.cc: dnl when extending the epilogue.
Remove stray "private:".