* examples/mfcalc/test, examples/calc++/test: Extract the
common bits into...
* examples/test: here.
(cwd): New.
Use it to avoid a race on the temporary directory.
Reported by Jim Meyering.
* examples/mfcalc/test, examples/calc++/test: Rename into...
* examples/mfcalc/mfcalc.test, examples/calc++/calc++.test: these.
* examples/calc++/local.mk, examples/mfcalc/local.mk,
* examples/local.mk: Adjust.
* examples/calc++/test, examples/mfcalc/test (me): Be more
meaningfull: include the example name.
(prog): Factor.
(run): Avoid printf, use echo.
Add missing parens.
(cleanup): New.
Call it on trap.
Remove the previous "rm" that did the cleanup.
Move into a private directory to avoid concurrency issues.
Reported by Jim Meyering.
* Makefile.am (TESTS, check_PROGRAMS): Initialize here.
* examples/local.mk (doc, extexi): Define here.
* examples/calc++/local.mk: Adjust accordingly.
* configure.ac: Ask for parallel-tests (for the way the logs
are handled).
* examples/calc++/test: As a consequence, always be verbose.
($prog): New.
(run): Use it.
Sort the tests in a more natural order (simplest first).
* 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.
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.
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.
* 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
This change was made by applying emacs' untabify function to
nearly all files in Bison's repository. Required tabs in make
files, ChangeLog, regexps, and test code were manually skipped.
Other notable exceptions and changes are listed below.
* bootstrap: Skip because we sync this with gnulib.
* data/m4sugar/foreach.m4
* data/m4sugar/m4sugar.m4: Skip because we sync these with
Autoconf.
* djgpp: Skip because I don't know how to test djgpp properly, and
this code appears to be unmaintained anyway.
* README-hacking (Hacking): Specify that tabs should be avoided
where not required.
* .cvsignore, build-aux/.cvsignore, doc/.cvsignore, etc/.cvsignore:
* examples/calc++/.cvsignore, lib/.cvsignore, m4/.cvsignore:
* po/.cvsignore, runtime-po/.cvsignore, src/.cvsignore:
* tests/.cvsignore: Remove; I don't use CVS to maintain Bison
anymore and don't know of anybody else who does. If someone needs
these files, they can resurrect them.
* .gitignore, build-aux/.gitignore, doc/.gitignore, lib/.gitignore:
* m4/.gitignore, po/.gitignore, runtime-po/.gitignore:
Omit leading '/', since bootstrap omits it.
Adjust file names to match current contents better.
* bootstrap: Sync from gnulib: this contains the new gnulib_mk_hook
installed just for us.
* bootstrap.conf (excluded_files): Don't exclude codeset.m4,
glibc21.m4, inttypes_h.m4, size_max.m4, xsize.m4, as they are now
needed somehow. Don't have time to look into why.
(gnulib_modules): Change malloc to malloc-gnu. Do we really assume
the GNU malloc behavior, where malloc (0) != NULL unless we're
out of storage? If not, we can omit malloc-gnu; but for now I left
it in to be safe.
(vc_ignore): Remove.
* README-hacking: Renamed from HACKING, since gnulib bootstrap now
uses that convention.
(cherry picked from commit 95aed8db15)
Conflicts:
bootstrap
build-aux/.cvsignore
build-aux/.gitignore
doc/.cvsignore
doc/.gitignore
etc/.cvsignore
m4/.cvsignore
m4/.gitignore
src/.cvsignore
src/.gitignore
tests/.cvsignore
* .cvsignore, build-aux/.cvsignore, doc/.cvsignore, etc/.cvsignore:
* examples/calc++/.cvsignore, lib/.cvsignore, m4/.cvsignore:
* po/.cvsignore, runtime-po/.cvsignore, src/.cvsignore:
* tests/.cvsignore: Remove; I don't use CVS to maintain Bison
anymore and don't know of anybody else who does. If someone needs
these files, they can resurrect them.
* .gitignore, build-aux/.gitignore, doc/.gitignore, lib/.gitignore:
* m4/.gitignore, po/.gitignore, runtime-po/.gitignore:
Omit leading '/', since bootstrap omits it.
Adjust file names to match current contents better.
* bootstrap: Sync from gnulib: this contains the new gnulib_mk_hook
installed just for us.
* bootstrap.conf (excluded_files): Don't exclude codeset.m4,
glibc21.m4, inttypes_h.m4, size_max.m4, xsize.m4, as they are now
needed somehow. Don't have time to look into why.
(gnulib_modules): Change malloc to malloc-gnu. Do we really assume
the GNU malloc behavior, where malloc (0) != NULL unless we're
out of storage? If not, we can omit malloc-gnu; but for now I left
it in to be safe.
(vc_ignore): Remove.
(gnulib_mk_hook): New function.
* README-hacking: Renamed from HACKING, since gnulib bootstrap now
uses that convention.
* examples/calc++/Makefile.am (calc.stamp): New.
Depend on it to create the sources of calc++ so that concurrent
builds don't launch several "extexi" in parallel.
Not only this is inefficient, this also builds incorrect sources
with several extractions mixed together.
Cherry-picked from 5ece73eaa1.
* examples/calc++/Makefile.am (calc.stamp): New.
Depend on it to create the sources of calc++ so that concurrent
builds don't launch several "extexi" in parallel.
Not only this is inefficient, this also builds incorrect sources
with several extractions mixed together.
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.
There are two issues to handle: first scanning nested angle bracket pairs
to support types such as std::pair< std::string, std::list<std::string> > >.
Another issue is to address idiosyncracies of C++: do not glue two closing
angle brackets together (otherwise it's operator>>), and avoid sticking
blindly a TYPE to the opening <, as it can result in '<:' which is a
digraph for '['.
* src/scan-gram.l (brace_level): Rename as...
(nesting): this.
(SC_TAG): New.
Implement support for complex tags.
(tag): Accept \n, but not <.
* data/lalr1.cc (b4_symbol_value, b4_symbol_value_template)
(b4_symbol_variant): Leave space around types as parameters.
* examples/variant.yy: Use nested template types and leading ::.
* src/parse-gram.y (TYPE, TYPE_TAG_ANY, TYPE_TAG_NONE, type.opt):
Rename as...
(TAG, TAG_ANY, TAG_NONE, tag.opt): these.
* tests/c++.at: Test parametric types.
* tests/Makefile.am: Rename as...
* tests/local.mk: this.
* Makefile.am, configure.ac: Adjust.
* Makefile.am (DISTCLEANFILES): Define.
(maintainer-check, maintainer-xml-check, maintainer-push-check):
Remove, we no longer need to bounce to the real targets.
examples/calc++/Makefile.am might be interesting to keep as is, since
it is an example in itself.
* examples/Makefile.am: Rename as...
* examples/local.mk: this.
Adjust.
* Makefile.am, configure.ac: Adjust.
std::list cannot be copied via memcpy, they are more demanding than
std::string. Use one std::list to strengthen the test.
* examples/variant.yy: Use lalr1-fusion.cc, not lalr1.cc.
Adjust.
Create a list of strings, instead of a single large string.
* doc/bison.texinfo (calc++.cc): Propagate failures to the exit
status.
* examples/calc++/test ($me, $number, $exit, run): New.
Use them to propagate errors to the exit status.