Akim Demaille [Tue, 15 May 2012 09:22:34 +0000 (11:22 +0200)]
build: do not prototype flex-generated functions.
Some versions of Flex, possibly modified by the distribution package
maintainers, have incompatible signatures. Since newer versions of
Flex prototype their functions, avoid the conflicts in that case.
Reported by Stefano Lattarini.
<http://lists.gnu.org/archive/html/bug-bison/2012-05/msg00012.html>.
* src/flex-scanner.h (FLEX_VERSION_GT): New.
Use it to issue prototypes for flex-generated functions only for
versions up to 2.5.31, in accordance with the comment.
See commit dc9701e848f27ae64b6ddcf809580998667d60f2.
Use it to define yylex_destroy when needed.
Akim Demaille [Fri, 11 May 2012 15:11:09 +0000 (17:11 +0200)]
tests: save/restore Autotest special files when checking XML support.
Currently the test 248, "parse-gram.y: LALR = IELR", fails
BISON_TEST_XML is set.
* tests/local.at (AT_BISON_CHECK_XML): Belt: Save/restore files.
* tests/regression.at (parse-gram.y: LALR = IELR): Suspenders: Don't
rely on expout.
Each one of these changes suffices.
Some of our macros play with expout and other Autotest special files,
which may break their callers (e.g., currently TESTSUITEFLAGS='248
BISON_TEST_XML=1' fails).
There is already some support for this. Expand it to be ready to use
it elsewhere.
* tests/local.at (AT_RESTORE_SPECIAL_FILES, AT_SAVE_SPECIAL_FILES)
(at_save_special_files, at_restore_special_files): New.
(AT_BISON_CHECK_NO_XML): Use them.
Akim Demaille [Wed, 9 May 2012 09:00:32 +0000 (11:00 +0200)]
build: config.in.h.
Historically we used config.hin (where everybody else used
config.h.in) to please DOS. Now that we use gnulib, there are already
tons of files with several dots, especially *.in.h.
Akim Demaille [Sun, 9 Jan 2011 10:06:23 +0000 (11:06 +0100)]
glr.c: reduce variable scopes.
* data/glr.c: Where appropriate, fuse variable declarations followed
by assignments by variable declarations with a value.
Where appropriate, introduce new scopes to limit variable spans.
Jim Meyering [Sat, 5 May 2012 09:30:01 +0000 (11:30 +0200)]
maint: s/strncpy/memcpy/, when equivalent
* src/output.c (output_skeleton): Use memcpy, not strncpy,
since the source is known to fit in the destination buffer.
* src/parse-gram.y (%skeleton): Likewise.
The Hydra buildfarm provides code coverage analysis. For some reason,
in some test cases, code coverage data seem to be incompatible, and
generate error messages at parser run-time. Ignore these messages so
that (i) these tests do pass, (ii) coverage results be provided by
Hydra.
* tests/local.at (AT_PARSER_CHECK): Ignore messages for failed merges
of code coverage/profiling results.
* gnulib: Fix install-pdf in po/ and runtime-po/.
Reported by Hans Aberg.
Fixed by Joel E. Denny.
http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html
lalr1.cc used to support yyo, but not yyoutput. Support both,
but document only yyoutput (at least until there is some consensus
on this).
* data/c.m4 (yy_symbol_value_print): Also support yyo.
* data/glr.cc (yy_symbol_value_print_): Support both yyo and yyoutput.
* data/lalr1.cc: Also support yyoutput.
* doc/bison.texinfo: Explicitly use yyoutput in the examples.
* examples/mfcalc/mfcalc.test: Test the -p option.
(cherry picked from commit c50263271db482261b11f7452283c142a780a09d)
* doc/bison.texinfo (Printer Decl): New.
Number mfcalc.y snippets so that they are output in
the proper order.
(The mfcalc Main): Use yydebug.
(Debugging): Simplify the text.
(Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New.
(Table of Symbols): Document YYPRINT and YYFPRINTF.
* tests/input.at: Use "print" in %printer instead of "destroy".
It is unused, so we don't care, yet it is less surprising.
* tests/actions.at: Comment changes.
lalr1.cc used to support yyo, but not yyoutput. Support both,
but document only yyoutput (at least until there is some consensus
on this).
* data/c.m4 (yy_symbol_value_print): Also support yyo.
* data/glr.cc (yy_symbol_value_print_): Support both yyo and yyoutput.
* data/lalr1.cc: Also support yyoutput.
* doc/bison.texinfo: Explicitly use yyoutput in the examples.
* examples/mfcalc/mfcalc.test: Test the -p option.
* doc/bison.texinfo (Printer Decl): New.
Number mfcalc.y snippets so that they are output in
the proper order.
(The mfcalc Main): Use yydebug.
(Debugging): Simplify the text.
(Enabling Traces, Mfcalc Traces, The YYPRINT Macro): New.
(Table of Symbols): Document YYPRINT and YYFPRINTF.
* tests/input.at: Use "print" in %printer instead of "destroy".
It is unused, so we don't care, yet it is less surprising.
* tests/actions.at: Comment changes.
* m4/flex.m4 (_AC_PROG_LEX_YYTEXT_DECL): Check that $LEX
supports some of the Flex options, and exclusive start conditions.
Define FLEX to 'yes'/'', as AC_PROG_CC does for GCC.
* TODO (Documentation, %printer, Java): Remove, already done (or just
waiting for approval).
(Fortran, BTYacc): Remove, there does not seem to be demand.
Bison uses "/usr/bin/perl" or "perl" in several places, and it does
not appear to be a problem. But, at least to make it simpler to
change PERL on the make command line, check for perl in configure.
* configure.ac (PERL): New.
* doc/Doxyfile.in, doc/local.mk, examples/local.mk,
* tests/bison.in: Use it.
* bootstrap.conf (bootstrap_sync): True again.
It was disabled while waiting for changes to be integrated
in gnulib's bootstrap, which was done long ago.
* bootstrap, gnulib: Update.
* doc/bison.texinfo: Avoid using @def* variant with more
than the defined entity as main entity, as it results in
an incorrect index. For instance, don't document
{return YYERROR;}, which results in a single index entry
"return YYERROR;", but rather as typed function whose
return type is "type", and whose argument list is ";".
For some reason it seems that texi2dvi -o no longer forces --clean
mode, so we have stray TeX compilation files staying in top_builddir
since TeX is run from there.
While at it, upgrade the generation of the (completely obsolete)
reference card. Target PDF.
Caught by maintainer-check-g++.
* data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at,
* tests/glr-regression.at, tests/push.at:
When simple to do, avoid expliciting the null ptr.
Otherwise use YY_NULL.
(cherry picked from commit eeaf1dc646048e464d97f6a572b8894632e6e47a)
Caught by maintainer-check-g++.
* data/glr.c, data/lalr1.cc, data/yacc.c, tests/cxx-type.at,
* tests/glr-regression.at, tests/push.at:
When simple to do, avoid expliciting the null ptr.
Otherwise use YY_NULL.
* origin/maint:
bump to 2012 in skeletons.
build: remove ancient Autoconf tests.
doc: c++: complete the location documentation.
c++: locations: provide convenience constructors.
c++: locations: remove useless "inline".
glr: do not use locations when they are not requested
c++: use nullptr for C++11.
build: simplify and improve the compiler warnings for tests.
gnulib: update.
maint: formatting changes.
NEWS: update.
Java: Fix syntax error handling without error token.
tests: beware of -pedantic on large #line numbers.
tests: when using the C++ compiler, use its flags too.
Akim Demaille [Sat, 31 Mar 2012 07:46:12 +0000 (09:46 +0200)]
doc: c++: complete the location documentation.
* data/location.cc (position::initialize, location::initialize):
Also accept line and column, with default values.
* doc/bison.texinfo (C++ position, C++ location): New nodes.
Describe more thoroughly these classes.
Fix several Texinfo misuses.
* data/location.cc (position::position): Accept file, line and
column as arguments with default values.
Always qualify initial line and column literals as unsigned.
(location::location): Provide convenience constructors.
(cherry picked from commit 0634493cdde92cbdb8d9fb95a5bebe596bb53798)
Akim Demaille [Sat, 31 Mar 2012 07:45:59 +0000 (09:45 +0200)]
glr: do not use locations when they are not requested
When the test suite runs with -O2 and warnings enabled, G++
complains of locations being used, but not initialized.
The simplest is to not use locations.
* data/glr.c (b4_locuser_formals, b4_locuser_args): New.
Use them when locations should not be used.
Use b4_locations_if where appropriate.
(yyuserAction): Modify the order to the arguments to make
it more alike the other routines, and to make use of
b4_locuser_args simpler.
Akim Demaille [Fri, 30 Mar 2012 13:50:45 +0000 (15:50 +0200)]
c++: use nullptr for C++11.
C++11 introduces "nullptr" which plays the role of C's NULL, in
replacement of "0". Fix the C++ skeletons to avoid warnings about
uses of "0" in place of "nullptr", and improve C skeletons to also use
this "nullptr" when compiled with a C++11 compiler.
* configure.ac: More C++ warnings.
* NEWS (2.5.1): Document this.
* data/c++.m4, data/c.m4 (b4_null_define): New.
(b4_null): Use YY_NULL instead of 0.
* data/glr.c, data/lalr1.cc, data/location.cc, data/yacc.c:
Call b4_null_define/b4_null where appropriate.
Use YY_NULL instead of NULL.
* data/location.cc (initialize): Accept a default argument,
YY_NULL.
* tests/actions.at, tests/calc.at: Adjust.
* data/glr.c, lib/libiberty.h, src/system.h (__attribute__):
Do not disable it when __STRICT_ANSI__ is defined, as, for
instance, it disables the __attribute__((unused)) which
protects us from some compiler warnings.
This was already done elsewhere in Bison, in 2001, see 4a0d89369599a2cea01f4fbdf791f426a02cb5a3.
* tests/regression.at: Adjust output.
Akim Demaille [Tue, 27 Mar 2012 14:20:34 +0000 (16:20 +0200)]
build: simplify and improve the compiler warnings for tests.
* configure.ac (warn_common, warn_c, warn_cxx): New.
Use them to compute independently the options supported
by the C and C++ compilers.
Don't AC_SUBST the variables passed to gl_WARN_ADD: it
does it for us.
(WARN_CFLAGS_TEST, WARN_CXXFLAGS_TEST): Don't aggregate
$WARN_CFLAGS and $WARN_CXXFLAGS in them now, leave it
to atlocal.in.
(O0CFLAGS, O0CXXFLAGS): Move their definition to...
* tests/atlocal.in: here.
Be more systematic between C and C++.
Reorder to factor between variables.
Propagate all of the variables when --compile-c-with-cxx.
Akim Demaille [Fri, 23 Mar 2012 15:05:15 +0000 (16:05 +0100)]
tests: when using the C++ compiler, use its flags too.
* tests/local.at: Go for colors.
(--compile-c-with-cxx): New option.
We used to pass "CC=$CXX" as command line argument,
but it was not possible to adjust CFLAGS accordingly
in atlocal, since it is loaded before assignments on
the command line are honored (so that the command line
takes precedence).
* tests/atlocal.in: Implement it.
* tests/local.mk: Use it.
(cherry picked from commit ac3f2e33b464a168b84ddb8a2da2195a6656dd19)
Akim Demaille [Sat, 24 Mar 2012 13:26:24 +0000 (14:26 +0100)]
tests: style changes in the Makefile.
* tests/local.mk: Prefer passing variable assignment by
the command line, instead of the environment, so that it
is reported in the logs.
Prefer single quotes for shell literal strings.
Akim Demaille [Fri, 23 Mar 2012 15:05:15 +0000 (16:05 +0100)]
tests: when using the C++ compiler, use its flags too.
* tests/local.at: Go for colors.
(--compile-c-with-cxx): New option.
We used to pass "CC=$CXX" as command line argument,
but it was not possible to adjust CFLAGS accordingly
in atlocal, since it is loaded before assignments on
the command line are honored (so that the command line
takes precedence).
* tests/atlocal.in: Implement it.
* tests/local.mk: Use it.
Akim Demaille [Fri, 23 Mar 2012 15:00:42 +0000 (16:00 +0100)]
tests: fix dependencies.
* tests/local.mk (check_SCRIPTS): Add atlocal and atconfig so
that they are properly updated before running tests.
(RUN_TESTSUITE_deps): New.
Use it to factor the dependencies of "*-check" targets,
especially those that don't bounce to the regular
"check-local" target, since then they don't benefit from the
proper dependencies (such as atlocal).
Akim Demaille [Fri, 16 Mar 2012 13:31:44 +0000 (14:31 +0100)]
doc: stmt, not stmnt.
* doc/bison.texinfo: s/stmnt/stmt/g. This is a
much more common abbreviation for "statement".
(cherry picked from commit 0860e38311eb80b0cba0b026d1fe7a8c81ffeec6)
Akim Demaille [Fri, 16 Mar 2012 13:29:43 +0000 (14:29 +0100)]
doc: save width.
* doc/bison.texinfo (Language and Grammar): Use the same
layout for an example in all the versions, i.e., keep
as general case what used to be used only for Info.
(cherry picked from commit 1d280c0999ada8fc3fb0a96d01530948642f4444)
Akim Demaille [Fri, 16 Mar 2012 13:26:00 +0000 (14:26 +0100)]
doc: reformat grammar snippets.
* doc/bison.texinfo: Convert the grammar examples to
use a narrower style. This helps fitting into the
@smallbook constraints.
http://lists.gnu.org/archive/html/bison-patches/2012-03/msg00011.html
(cherry picked from commit 5e9b6624d78e7390a05e2c6b0708cc4944fb1861)