* doc/bison.texinfo (Multi-function Calc): Add missing includes.
Fix the rendering of the result: use @result and remove the
initial tabulation in the actual code.
Fix stylistic issues: avoid the , operator.
Add extexi mark-up.
* examples/extexi: Also support @smallexample.
* tests/c++.at (Syntax error as exception): Avoid spurious failure
at least when compiling with g++-4.7.x due to lack of declaration
of getenv. Include <stdlib.h>.
* Makefile.am (AM_YFLAGS): Automake looks for "-d" alone.
Move other options in here.
(BISON): New.
(YACC): Use it.
(bison_SOURCES): Now that automake can see `-d' in AM_YFLAGS,
we can rely on it to compile and ship the parser header
files.
Based on commit 737406a32c and
commit 3d6ca33908.
Rely on $(YACC) being the bison being built, and let Automake do the
rest. It turned out to be much more difficult than anticipated, for
various reasons, including some bad behavior from Automake 1.11.2
which (i) generates calc++-parser.h instead of calc++-parser.hh, and
(ii) leaves an #include "y.tab.h" in the generated parser instead
of #include "calc++-parser.h".
The authors of Automake appear to be aware of the problem,
http://lists.gnu.org/archive/html/automake/2011-05/msg00008.html
so a simple work around will suffice for the time being.
* examples/calc++/y.tab.h, examples/calc++/calc++-parser.hh: New.
To work around Automake 1.11.2 issues.
* examples/calc++/local.mk: Remove all the rules for compilation
with bison, leave them to Automake.
So provide it with "calc++-parse.yy" as a source file.
(calc_sources_generated, calc_sources_extracted): Rename as.
(calc_generated, calc_extracted): these.
(calc_sources): New.
Fix them.
* src/local.mk: Put yacc related variables together.
(AUTOMAKE_OPTIONS): Move to...
* Makefile.am: here.
Remove an old Emacs mode request which disables Automake support.
* src/local.mk (YACC, AM_YFLAGS): Move to...
* Makefile.am: here, as they will be used by other local.mks.
The directory was still using a local Makefile.am because it provides
"scoped" Make variables: these examples are not meant to use the same
CPPFLAGS etc. If we were to use the same -I set, we'd pick up
gnulib's stdio.h for instance, which we do not want for these simple
examples.
Yet, as a result, the dependencies are less accurate, there is code
duplication, etc. This is especially perceptible when trying to
extract more examples from the documentation, as will be done in
forthcoming changes.
In order to make the tuning of CPPFLAGS easier, discard the predefined
-I from Automake.
* examples/calc++/Makefile.am: Rename as...
* examples/calc++/local.mk: this.
Adjust the paths which are now rooted in top_srcdir/top_builddir.
Handle BISON_CXX_WORKS here, instead of the too crude previous
approach that completely discarded the whole directory.
($(BISON)): Remove now useless bouncing recipe.
(calc___CPPFLAGS): New.
Stay away from -Ilib.
* Makefile.am, configure.ac, examples/local.mk,
* examples/calc++/test: Adjust.
* configure.ac: Pass nostdinc to Automake.
* src/local.mk, lib/local.mk (AM_CPPFLAGS): Move to...
* Makefile.am: here.
* src/local.mk, examples/calc++/Makefile.am (BISON, BISON_IN): Factor
to...
* Makefile.am: here.
* tests/local.mk: Use it.
* data/lalr1.cc (parse): Catch syntax_error around yylex and
forward them to errlab1.
* tests/c++.at (Syntax error as exception): Check support for
syntax exceptions raised by the scanner.
* NEWS, doc/bison.texinfo: Document it.
* tests/local.mk (TESTSUITE_AT): Include plackage.m4.
Adjust dependencies.
Make testsuite.at its first argument.
(package.m4): Be silent.
(testsuite): Be silent.
Use $<.
* data/c.m4 (b4_parse_param_use): Also accept optional arguments
to "use".
Simplify callers.
* data/glr.c (yyuserAction): Simplify use of b4_parse_param_use.
(yy_reduce_print): Don't use b4_parse_param_use, as all the arguments
_are_ used.
* data/lalr1.cc (YY_SYMBOL_PRINT): Even when disabled, "use" the
symbol argument.
This neutralizes a warning in yypush_ when there are no symbols
with a semantic values.
(yy_destroy_): Remove useless "use" of yymsg.
See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.
Use quotearg as often as possible instead of leaving the choice of
the quotes to the translators. Use shorter messages. Factor similar
messages to a single format, to make localization easier.
* src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c
* src/scan-code.l, src/scan-gram.l, src/symtab.c:
Use quote() or quotearg_colon() on printf arguments instead of
quotes in the format string.
* data/bison.m4: Keep sync with the changes in muscle-tab.c.
* tests/skeletons.at, tests/input.at, tests/regression.at: Adjust
expected messages.
(cherry picked from commit 4a9cd8f24a)
Conflicts:
src/muscle-tab.c
See <http://lists.gnu.org/archive/html/bug-bison/2012-01/msg00120.html>.
Use quotearg as often as possible instead of leaving the choice of
the quotes to the translators. Use shorter messages. Factor similar
messages to a single format, to make localization easier.
* src/files.c, src/getargs.c, src/muscle-tab.c, src/reader.c
* src/scan-code.l, src/scan-gram.l, src/symtab.c:
Use quote() or quotearg_colon() on printf arguments instead of
quotes in the format string.
* data/bison.m4: Keep sync with the changes in muscle-tab.c.
* tests/skeletons.at, tests/input.at, tests/regression.at: Adjust
expected messages.
* doc/local.mk, src/local.mk, examples/calc++/Makefile.am: Use
$(AM_V_GEN) and $(AM_V_at) where appropriate.
(cherry picked from commit f67c0a1c35)
Conflicts:
doc/local.mk
examples/calc++/Makefile.am
src/local.mk
Standard output was never explicitly closed, so we could not
detect failure. Thus, bison would ignore the errors of writing
to a full file system and getting an I/O error on write, but only
for standard output, e.g., for --print-localedir, --print-datadir,
--help and some verbose output.
Now, "bison --print-datadir > /dev/full" reports the write failure:
bison: write error: No space left on device
Before, it would exit 0 with no diagnostic, implying success.
This is not an issue for "--output=-" or the other FILE-accepting
command-line options, because unlike most other GNU programs,
an output file argument of "-" is treated as the literal "./-",
rather than standard output.
* bootstrap.conf (gnulib_modules): Add closeout.
* src/main.c: Include "closeout.h".
Use atexit to ensure we close stdout.
* .gitignore: Ignore new files pulled in via gnulib-tool.
(cherry picked from commit acb5895680)
Conflicts:
m4/.gitignore
Standard output was never explicitly closed, so we could not
detect failure. Thus, bison would ignore the errors of writing
to a full file system and getting an I/O error on write, but only
for standard output, e.g., for --print-localedir, --print-datadir,
--help and some verbose output.
Now, "bison --print-datadir > /dev/full" reports the write failure:
bison: write error: No space left on device
Before, it would exit 0 with no diagnostic, implying success.
This is not an issue for "--output=-" or the other FILE-accepting
command-line options, because unlike most other GNU programs,
an output file argument of "-" is treated as the literal "./-",
rather than standard output.
* bootstrap.conf (gnulib_modules): Add closeout.
* src/main.c: Include "closeout.h".
Use atexit to ensure we close stdout.
* .gitignore: Ignore new files pulled in via gnulib-tool.
Reported by David Kastrup:
https://lists.gnu.org/archive/html/bug-bison/2011-10/msg00002.html.
* data/yacc.c (YYBACKUP): Accept rhs size.
Restore the proper state value.
* TODO (YYBACKUP): Make it...
* tests/actions.at: a new test case.
* NEWS, THANKS: Update.
(cherry picked from commit d115aad911)
Conflicts:
TODO
data/yacc.c
* configure.ac: Use enable_gcc_warnings instead of enableval,
which is valid only with AC_ARG_ENABLE.
(cherry picked from commit 1890a2a816)
Conflicts:
configure.ac
* lib/yyerror.c (yyerror): Use fputs and fputc rather than fprintf
with a mere "%s\n" format. Always return 0 now, on the assumption
that the return value was never used anyway.
Don't include <config.h> after all. This avoids a problem
reported by Thiru Ramakrishnan in
http://lists.gnu.org/archive/html/help-bison/2011-11/msg00000.html
* cfg.mk: Exempt lib/yyerror.c from the sc_require_config_h_first test.
* THANKS: Update.
(cherry picked from commit fb9eea8885)