We used to raise an error if a symbol appears only in a %printer or
%destructor. Make it a warning.
* src/symtab.h (status): New enum.
(symbol): Replace the binary "declared" with the three-state "status".
Adjust dependencies.
* src/symtab.c (symbol_check_defined): Needed symbols are an error,
whereas "used" are simply warnings.
* src/symlist.c (symbol_list_destructor_set, symbol_list_printer): Set
symbol status to 'used' when associated to destructors or printers.
* input.at (Undeclared symbols used for a printer or destructor): New.
Basically, revert ba60c39547a445dee3e07920931b4d7a81843868's move to
mbs* functions, which was prompted by -DGNULIB_POSIXCHECK. See
<http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html>
and following.
* bootstrap.conf: No longer ask for them.
* src/files.c, src/getargs.c, src/location.c,
* src/parse-gram.c, src/parse-gram.y, src/scan-gram.l,
* src/symtab.c: s/mbs(r?chr)/str$1/g.
* bootstrap.conf (gnulib_modules): Request it.
* src/output.h, src/output.c (compute_pkgdatadir): Rename as...
(pkgdatadir): this.
Adjust dependencies.
* src/output.c (output_skeleton): Reduce the scope of "in".
Use xconcatenated_filename to simplify the construction of the
qualified paths to m4sugar.m4, bison.m4, and the selected skeleton.
There are a few minor differences: the new code uses strchr instead of
mbschr (but this was not really justified), and the new code does not
garantee a single slash even if $BISON_PKGDATADIR ends with several
(which was considered more accurate). See the discussion at
<http://lists.gnu.org/archive/html/bison-patches/2012-05/msg00052.html>.
Using http://github.com/lyda/misspell-check, massage its
output into sed commands to perform the suggested changes.
Initially, I filtered out the THRU->Through changes, because
that failed to retain capitalization in the grammar token.
Instead, do this manually, beforehand:
sed -i s/THRU/THROUGH/ tests/existing.at
git ls-files|misspellings -f -|perl -nl \
-e '/^(.*?)\[(\d+)\]: (\w+) -> "(.*?)"$/ or next;' \
-e '($file,$n,$l,$r)=($1,$2,$3,$4); $q="'\''"; $r=~s/$q/$q\\$q$q/g;'\
-e 'print "sed -i $q${n}s!$l!$r!$q $file"'|bash
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 dc9701e848.
Use it to define yylex_destroy when needed.
* src/parse-gram.y (add_param): Use xmemdup0 in place of
xmalloc+memcpy, and strspn in place of an open-coded loop.
Co-authored-by: Akim Demaille <akim@lrde.epita.fr>
* 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.
* 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.
Conflicts:
data/glr.c
data/glr.cc
data/lalr1.cc
data/location.cc
data/yacc.c
tests/Makefile.am
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
4a0d893695.
* tests/regression.at: Adjust output.
Before this change, bison would accept either .tab and _tab equivalently,
whatever the current platform. Besides, it was not obeying everywhere
to the possible definition of TAB_EXT to something else than .tab.
For consistency, handle only TAB_EXT (".tab" on non DJGPP platforms).
Support for "_tab" is neither documented, nor tested.
* src/system.h (STRNCMP_LIT): New.
From Jim Meyering.
(STRPREFIX_LIT): New.
* src/files.c, src/getargs.c: Use it.
* doc/bison.texinfo: Space change.
* src/system.h (STREQ, STRNEQ): New.
* src/files.c, src/ielr.c, src/lalr.c, src/muscle-tab.c,
* src/output.c, src/print.c, src/print_graph.c,
* src/reader.c, src/scan-skel.l, src/tables.c,
* src/uniqstr.c:
Use them.
* src/scan-gram.l: Do not use streq.h, use system.h's STREQ.
* cfg.mk: The documentation is an exception.
Exit status 63 is documented for version-mismatch.
* bootstrap.conf (gnulib_modules): Remove sysexits.
* src/system.h (EX_MISMATCH): Define.
* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.
Missing includes.
* tests/calc.at, tests/named-refs.at: Include assert.h.
(cherry picked from commit 459a57a90f)
Exit status 63 is documented for version-mismatch.
* bootstrap.conf (gnulib_modules): Remove sysexits.
* src/system.h (EX_MISMATCH): Define.
* src/parse-gram.y (version_check): Use it instead of EX_CONFIG.
Missing includes.
* tests/calc.at, tests/named-refs.at: Include assert.h.
* bootstrap.conf (gnulib_modules): Require progname.
* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
* cfg.mk (exclude): New.
Use it.
Skip lib/main.c for bindtextdomain and set_program_name.
(cherry picked from commit 4d699f44e6)
Conflicts:
cfg.mk
* bootstrap.conf (gnulib_modules): Require progname.
* src/complain.c, src/getargs.c, src/getargs.h, src/main.c: Use it.
* cfg.mk (exclude): New.
Use it.
Skip lib/main.c for bindtextdomain and set_program_name.
* cfg.mk (local-checks-to-skip): No longer skip it.
* bootstrap.conf (gnulib_modules): Add sysexits.
* doc/bison.texinfo, etc/bench.pl.in, src/parse-gram.y,
* src/system.h, tests/calc.at, tests/named-refs.at: Use assert
where appropriate instead of "if (...) exit".
Use symbolic exit status elsewhere.