Imported Upstream version 2.6.2 upstream/2.6.2
authorAnas Nashif <anas.nashif@intel.com>
Fri, 12 Oct 2012 15:01:42 +0000 (08:01 -0700)
committerAnas Nashif <anas.nashif@intel.com>
Fri, 12 Oct 2012 15:01:42 +0000 (08:01 -0700)
216 files changed:
.prev-version
.tarball-version
.version
ChangeLog
Makefile.in
NEWS
README-alpha [new file with mode: 0644]
README-release
THANKS
aclocal.m4
build-aux/Makefile.in
build-aux/config.guess
build-aux/config.sub
build-aux/do-release-commit-and-tag
build-aux/gitlog-to-changelog
build-aux/gnu-web-doc-update
build-aux/texinfo.tex
cfg.mk
configure
configure.ac
data/Makefile.am
data/Makefile.in
data/bison.m4
data/c-like.m4 [new file with mode: 0644]
data/c.m4
data/glr.c
data/glr.cc
data/java.m4
data/lalr1.cc
data/lalr1.java
data/yacc.c
doc/Makefile.in
doc/bison.1
doc/bison.info
doc/bison.info-1
doc/bison.info-2
doc/bison.texi
doc/stamp-vti
doc/version.texi
etc/Makefile.in
examples/Makefile.in
examples/calc++/Makefile.in
examples/calc++/calc++-driver.cc
examples/calc++/calc++-driver.hh
examples/calc++/calc++-parser.cc
examples/calc++/calc++-parser.hh
examples/calc++/calc++-parser.yy
examples/calc++/calc++-scanner.cc
examples/calc++/calc++.cc
examples/calc++/location.hh
examples/calc++/position.hh
examples/calc++/stack.hh
lib/Makefile.in
lib/config.in.h
lib/gnulib.mk
lib/obstack_printf.c [new file with mode: 0644]
lib/verify.h
m4/gnulib-comp.m4
m4/obstack-printf.m4 [new file with mode: 0644]
maint.mk
po/bison.pot
po/da.gmo
po/da.po
po/de.gmo
po/de.po
po/el.gmo
po/el.po
po/eo.gmo
po/eo.po
po/es.gmo
po/es.po
po/et.gmo
po/et.po
po/fi.gmo
po/fi.po
po/fr.gmo
po/fr.po
po/ga.gmo
po/ga.po
po/hr.gmo
po/hr.po
po/id.gmo
po/id.po
po/it.gmo
po/it.po
po/ja.gmo
po/ja.po
po/ms.gmo
po/ms.po
po/nb.gmo
po/nb.po
po/nl.gmo
po/nl.po
po/pl.gmo
po/pl.po
po/pt.gmo
po/pt.po
po/pt_BR.gmo
po/pt_BR.po
po/ro.gmo
po/ro.po
po/ru.gmo
po/ru.po
po/sv.gmo
po/sv.po
po/tr.gmo
po/tr.po
po/uk.gmo
po/uk.po
po/vi.gmo
po/vi.po
po/zh_CN.gmo
po/zh_CN.po
po/zh_TW.gmo
po/zh_TW.po
runtime-po/ast.gmo
runtime-po/ast.po
runtime-po/bison-runtime.pot
runtime-po/da.gmo
runtime-po/da.po
runtime-po/de.gmo
runtime-po/de.po
runtime-po/el.gmo
runtime-po/el.po
runtime-po/eo.gmo
runtime-po/eo.po
runtime-po/es.gmo
runtime-po/es.po
runtime-po/et.gmo
runtime-po/et.po
runtime-po/fi.gmo
runtime-po/fi.po
runtime-po/fr.gmo
runtime-po/fr.po
runtime-po/ga.gmo
runtime-po/ga.po
runtime-po/gl.gmo
runtime-po/gl.po
runtime-po/hr.gmo
runtime-po/hr.po
runtime-po/hu.gmo
runtime-po/hu.po
runtime-po/id.gmo
runtime-po/id.po
runtime-po/it.gmo
runtime-po/it.po
runtime-po/ja.gmo
runtime-po/ja.po
runtime-po/ky.gmo
runtime-po/ky.po
runtime-po/lt.gmo
runtime-po/lt.po
runtime-po/lv.gmo
runtime-po/lv.po
runtime-po/ms.gmo
runtime-po/ms.po
runtime-po/nb.gmo
runtime-po/nb.po
runtime-po/nl.gmo
runtime-po/nl.po
runtime-po/pl.gmo
runtime-po/pl.po
runtime-po/pt.gmo
runtime-po/pt.po
runtime-po/pt_BR.gmo
runtime-po/pt_BR.po
runtime-po/ro.gmo
runtime-po/ro.po
runtime-po/ru.gmo
runtime-po/ru.po
runtime-po/sl.gmo
runtime-po/sl.po
runtime-po/sr.gmo
runtime-po/sr.po
runtime-po/sv.gmo
runtime-po/sv.po
runtime-po/th.gmo
runtime-po/th.po
runtime-po/tr.gmo
runtime-po/tr.po
runtime-po/uk.gmo
runtime-po/uk.po
runtime-po/vi.gmo
runtime-po/vi.po
runtime-po/zh_CN.gmo
runtime-po/zh_CN.po
runtime-po/zh_TW.gmo
runtime-po/zh_TW.po
src/Makefile.in
src/conflicts.c
src/muscle-tab.c
src/muscle-tab.h
src/output.c
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/print_graph.c
src/scan-code.c
src/scan-code.h
src/scan-code.l
src/scan-gram.c
src/scan-skel.c
src/scan-skel.l
src/symlist.c
src/symlist.h
src/symtab.h
src/system.h
tests/Makefile.in
tests/actions.at
tests/calc.at
tests/input.at
tests/local.at
tests/package.m4
tests/regression.at
tests/synclines.at
tests/testsuite

index e710b3f..6a6a3d8 100644 (file)
@@ -1 +1 @@
-2.5.91
+2.6.1
index 5154b3f..097a15a 100644 (file)
@@ -1 +1 @@
-2.6
+2.6.2
index 5154b3f..097a15a 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-2.6
+2.6.2
index 1f318ca..c958207 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,389 @@
+2012-08-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.2
+       * NEWS: Record release date.
+
+2012-08-02  Akim Demaille  <akim@lrde.epita.fr>
+
+       NEWS: update.
+       * NEWS: Catch up with the other changes from 2.6.1.
+
+2012-08-02  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc: remove trailing end of line at end of file
+       There are still spurious spaces at the end of some lines.  But this is
+       addressed in the master branch, and I am reluctant to try to backport
+       this.
+
+       * data/yacc.c, data/glr.c, data/lalr1.cc, data/glr.cc: here.
+       * tests/calc.at (AT_CHECK_SPACES): New.
+       Use it.
+       Be sure not to introduce trailing empty lines in the *.y files.
+       * NEWS: Doc it.
+       * cfg.mk (syntax-check): Remove the exception.
+
+2012-08-02  Akim Demaille  <akim@lrde.epita.fr>
+
+       thanks: fix a contributor name
+       * THANKS: On his request.
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: synch line -> syncline, for consistency
+       * tests/synclines.at: Do it, as "syncline" is used consistently
+       everywhere else in Bison.
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: synclines: style changes
+       * tests/synclines.at (AT_TEST_SYNCLINE): Rename as...
+       (AT_TEST): this.
+       Use pushdef/popdef.
+       Formatting changes.
+       Use '+' instead of '*' where appropriate.
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: synclines: fix perl invocation
+       Reported by Summum Bonum.
+
+       * tests/synclines.at: Fix Perl invocation: its -f is not like sed's.
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       c++: trailing end-of-lines in %parse-param
+       * src/parse-gram.y (add_param): No only skip ' ' and '\t', skip all
+       leading and trailing spaces.
+       * tests/regression.at (Lex and parse params): Check it.
+       * NEWS: Document it.
+
+2012-08-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: simplify
+       * tests/regression.at: Remove useless compilations: AT_FULL_COMPILE
+       includes the compilation by bison.
+
+2012-07-31  Akim Demaille  <akim@lrde.epita.fr>
+
+       use obstack_printf
+       This is not just nicer, it is also much safer, since we were
+       using sprintf...
+
+       * bootstrap.conf: Require it.
+       * src/system.h (obstack_fgrow1, obstack_fgrow2, obstack_fgrow3)
+       (obstack_fgrow4): Remove.
+       Adjust dependencies.
+
+2012-07-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       scanner: restore a missing start condition
+       $ flex src/scan-skel.l
+       src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_ARGS
+       src/scan-skel.l:145: multiple <<EOF>> rules for start condition SC_AT_DIRECTIVE_SKIP_WS
+       This is warning, and it seems there are no means to make it an error.
+
+       * src/scan-skel.l: Restore the start-condition INITIAL for an <<EOF>>
+       clause.
+
+2012-07-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-07-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
+2012-07-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.1
+       * NEWS: Record release date.
+
+2012-07-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: fix some syntax-check issues
+       * cfg.mk: Nuke the following warnings which are confused by our
+       text reports (that state that the error token is number 256).
+         prohibit_magic_number_exit
+         ../../doc/bison.texi:8170:error (256)
+         ../../tests/conflicts.at:570:error (256)
+         ../../tests/conflicts.at:673:error (256)
+         ../../tests/conflicts.at:811:error (256)
+         ../../tests/conflicts.at:1154:error (256)
+         ../../tests/regression.at:281:error (256)
+         ../../tests/regression.at:582:error (256)
+         maint.mk: use EXIT_* values rather than magic number
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: do not depend on __cplusplus to decide for C++ or C output
+       Since we do support compiling C code with a C++ compiler.
+
+       * tests/actions.at (Qualified $$ in actions): Use AT_SKEL_CC_IF.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       synclines: remove spurious empty line
+       * data/bison.m4 (b4_syncline): Do not start with an empty line.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       also support $<foo>$ in the %initial-action
+       scan-code.l is already passing argument to b4_dollar_dollar for the
+       initial acton, but its definition (of b4_dollar_dollar) does not use
+       this argument.
+
+       Generalize this definition, and use it for the %initial-action too.
+
+       * data/c.m4 (b4_dollar_dollar_, b4_dollar_pushdef, b4_dollar_popdef):
+       Instead of expecting a pointer, require a value, and use ".".
+       Since they are now generic enough, move to...
+       * data/c-like.m4: this new file.
+       * data/c.m4, data/java.m4: Load it.
+       * data/glr.c, data/lalr1.cc, data/lalr1.java, data/yacc.c: Use
+       b4_dollar_pushdef for the %initial-action.
+       * tests/actions.at: Check that.
+       * data/Makefile.am: Adjust.
+       * NEWS, doc/bison.texi: Document.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       skeletons: b4_dollar_pushdef and popdef to simpify complex definitions
+       M4 is really making it uselessly hard to define macros that define
+       macros.
+       * data/c.m4 (b4_dollar_pushdef, b4_dollar_popdef): New.
+       Use it.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       printer/destructor: translate only once
+       Currently "%printer {...} a b c d e f" translates the {...} six times.
+       Not only is this bad for time and space, it also issues six times the
+       same warnings.
+
+       * src/symlist.h, src/symlist.c (symbol_list_destructor_set)
+       (symbol_list_printer_set): Take the action as code_props instead of
+       const char *.
+       * src/parse-gram.y: Translate these actions here.
+       * src/scan-code.h: Comment change.
+       * tests/input.at: Check that warnings are issued only once.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       factor the handling of m4 escaping
+       The conversion from @ to @@ and so forth is coded is too many
+       different places.  Factor, a bit.
+
+       * src/scan-code.l: Instead of duplicating the logic of obstack_escape,
+       use it.
+       It sure is less efficient, but the cost is negligible.
+       This allows to factor rules that are alike.
+       And to factor some start-condition clauses.
+       * tests/input.at (Stray $ or @): New.
+       * NEWS: Document it.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       news: schedule the removal of the ";" hack
+       scan-code.l is significantly more complex because of this.
+
+       * NEWS: Doc it.
+
+2012-07-27  Akim Demaille  <akim@lrde.epita.fr>
+
+       style changes in the scanners
+       * src/scan-code.l, src/scan-skel.l: Use a more traditional indentation
+       style for start-conditions.
+       Prefer "continue" to a comment, for empty actions.
+       Strip useless {}.
+       Remove useless start-condition clauses.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       support $<tag>$ in printers and destructors
+       * src/scan-code.l (SC_SYMBOL_ACTION): Accept $<tag>$, not just $$.
+       * data/c.m4 (b4_dollar_dollar_): New.
+       (b4_symbol_actions): Let b4_dollar_dollar use b4_dollar_dollar_.
+       * NEWS, doc/bison.texi: Document it.
+       * tests/actions.at: Check this for C and C++.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       scan-code: factor the handling of the type in $<TYPE>$
+       * src/scan-code.l (fetch_type_name): New.
+       (handle_action_dollar): Use it.
+       (gt_ptr): Remove, useless.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       muscles: fix another occurrence of unescaped type name
+       * src/output.c (quoted_output): Split into...
+       (quoted_output, string_output): these.
+       Use the former when outputting a type_name.
+       * tests/input.at: Check this case.
+       * src/symtab.h: Comment changes.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       glr.cc: fix the handling of yydebug
+       * data/glr.cc (yydebug_): Remove, unused.
+       (set_debug_level, debug_level): Work on yydebug instead.
+       * doc/bison.texi, NEWS: Document this.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       formatting changes
+       * src/symtab.h: here.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: fix an assertion
+       * tests/local.at (AT_YYLEX_DEFINE): Be sure to check the array
+       against its length, not its size in bytes.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: adjust to GCC 4.8, which displays caret errors
+       With GCC 4.8, the tests on synclines are skipped.  Transform
+
+         input.y:1:2: error: #error "1"
+          #error "1"
+           ^
+
+       into
+
+         input.y:1: #error "1"
+
+       * tests/synclines.at (AT_SYNCLINES_COMPILE): Do it, using Perl instead of
+       sed.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       be sure to properly escape type names
+       * src/scan-code.l: Use obstack_quote when passing type_name to m4.
+       * tests/input.at (Code injection): New.
+       * NEWS: Document it.
+       Thanks to Paul Eggert for the wording.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       obstack_quote: escape and quote for M4
+       * src/system.h (obstack_quote): New.
+       * src/muscle-tab.c: Use it instead of obstack_escape where applicable.
+       * src/scan-code.l: Since obstack_quote supports NULL, leave type_name
+       as NULL instead of defaulting to "".
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       muscles: shuffle responsabilities
+       * src/muscle-tab.c (muscle_boundary_grow): Be in charge of quotation,
+       instead of leaving this to the caller.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       muscles: make private functions static
+       * src/muscle-tab.h, src/muscle-tab.c (muscle_boundary_grow)
+       (muscle_location_grow): Now static.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       muscles: rename private functions/macros
+       * src/muscle-tab.c (MUSCLE_COMMON_DECODE, muscle_string_decode)
+       (muscle_location_decode): Not related to muscles, rename as...
+       (COMMON_DECODE, string_decode, location_decode): these.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       obstack_escape: escape M4 characters
+       * src/muscle-tab.h (MUSCLE_OBSTACK_SGROW): This is not related to
+       muscles, so move to, and rename as...
+       * src/system.h (obstack_escape): this.
+       Adjust dependencies.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       remove dead macro
+       * src/system.h (DEFAULT_TMPDIR): Remove, unused.
+
+2012-07-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: style changes
+       * src/scan-code.l: Remove useless braces.
+       Formatting changes.
+       Prefer NULL to 0.
+       * src/muscle-tab.c, src/system.h: Formatting changes.
+
+2012-07-24  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: avoid problems with case insensitive file systems
+       makeinfo --html generates index.html, and the node "Index" will result
+       in Index.html.  On case insensitive file systems, such as on Mac OS X
+       by default, this results in a single, invalid, file (Texinfo 4.13).
+       See http://lists.gnu.org/archive/html/bug-texinfo/2012-07/msg00032.html
+
+       * doc/bison.texi (Index): Rename as...
+       (Index of Terms): this.
+
+2012-07-24  Stefano Lattarini  <stefano.lattarini@gmail.com>  (tiny change)
+
+       configure: fix botched quoting
+       * configure.ac: In the AC_SUBST call on 'VALGRIND_PREBISON'.  Without
+       this change, when running ./configure, I see:
+
+           ...
+           checking for valgrind... valgrind
+           ./configure: line 35221: -q: command not found
+           checking for Java compiler... gcj -C -fsource=1.3 -ftarget=1.4
+           ...
+
+2012-07-20  Akim Demaille  <akim@lrde.epita.fr>
+
+       news: fix typo.
+       * NEWS: here.
+       Reported by Ben Pfaff.
+
+2012-07-19  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: update gnu-web-doc-update.
+       * gnulib: here.
+
+2012-07-19  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: post-release administrivia
+       * NEWS: Add header line for next release.
+       * .prev-version: Record previous version.
+       * cfg.mk (old_NEWS_hash): Auto-update.
+
 2012-07-19  Akim Demaille  <akim@lrde.epita.fr>
 
        version 2.6
index 1c46d16..d138a58 100644 (file)
@@ -72,7 +72,8 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
        $(top_srcdir)/build-aux/javacomp.sh.in \
        $(top_srcdir)/build-aux/javaexec.sh.in \
        $(top_srcdir)/build-aux/missing $(top_srcdir)/configure \
-       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS THANKS TODO
+       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README-alpha \
+       THANKS TODO
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/asm-underscore.m4 \
@@ -122,10 +123,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
diff --git a/NEWS b/NEWS
index 912107c..9742570 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,59 @@
 GNU Bison NEWS
 
+* Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
+
+** Bug fixes
+
+  Buffer overruns, complaints from Flex, and portability issues in the test
+  suite have been fixed.
+
+** Spaces in %lex- and %parse-param (lalr1.cc, glr.cc)
+
+  Trailing end-of-lines in %parse-param or %lex-param would result in
+  invalid C++.  This is fixed.
+
+** Spurious spaces and end-of-lines
+
+  The generated files no longer end (nor start) with empty lines.
+
+* Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
+
+ Bison no longer executes user-specified M4 code when processing a grammar.
+
+** Future Changes
+
+  In addition to the removal of the features announced in Bison 2.6, the
+  next major release will remove the "Temporary hack for adding a semicolon
+  to the user action", as announced in the release 2.5.  Instead of:
+
+    exp: exp "+" exp { $$ = $1 + $3 };
+
+  write:
+
+    exp: exp "+" exp { $$ = $1 + $3; };
+
+** Bug fixes
+
+*** Type names are now properly escaped.
+
+*** glr.cc: set_debug_level and debug_level work as expected.
+
+*** Stray @ or $ in actions
+
+  While Bison used to warn about stray $ or @ in action rules, it did not
+  for other actions such as printers, destructors, or initial actions.  It
+  now does.
+
+** Type names in actions
+
+  For consistency with rule actions, it is now possible to qualify $$ by a
+  type-name in destructors, printers, and initial actions.  For instance:
+
+    %printer { fprintf (yyo, "(%d, %f)", $<ival>$, $<fval>$); } <*> <>;
+
+  will display two values for each typed and untyped symbol (provided
+  that YYSTYPE has both "ival" and "fval" fields).
+
 * Noteworthy changes in release 2.6 (2012-07-19) [stable]
 
 ** Future Changes
@@ -7,7 +61,7 @@ GNU Bison NEWS
   The next major release of Bison will drop support for the following
   deprecated features.  Please report disagreements to bug-bison@gnu.org.
 
-*** K&C parsers
+*** K&C parsers
 
   Support for generating parsers in K&R C will be removed.  Parsers
   generated for C support ISO C90, and are tested with ISO C99 and ISO C11
diff --git a/README-alpha b/README-alpha
new file mode 100644 (file)
index 0000000..a137c39
--- /dev/null
@@ -0,0 +1,30 @@
+-*- text -*-
+
+This is a test release of this package.  Using it more or less
+implicitly signs you up to help us find whatever problems you report.
+
+The documentation still needs more work.  Suggestions welcome.
+Patches even more welcome.
+
+Please send comments and problem reports about this test release to
+<bug-bison@gnu.org>.  This program will get better only if you report
+the problems you encounter.
+
+-----
+
+Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+
+This file is part of GNU Bison.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
index 6a27d27..af718ed 100644 (file)
@@ -31,15 +31,10 @@ Here are most of the steps we (maintainers) follow when making a release.
 
     make check syntax-check distcheck
 
-* From top_srcdir, run:
+* To (i) set the date, version number, and release type [stable/alpha/beta]
+  on line 3 of NEWS, (ii) commit that, and (iii) tag the release, run
 
-    build-aux/do-release-commit-and-tag X.Y stable
-
-  in order to (i) set the date, version number, and release type
-  [stable/alpha/beta] on line 3 of NEWS, (ii) commit that, and (iii) tag the
-  release.  See --help if you need options such as:
-
-    build-aux/do-release-commit-and-tag --branch=maint -C _build X.Y.Z stable
+    make release-commit RELEASE='X.Y stable'
 
 * Run the following to create release tarballs.  Your choice selects the
   corresponding upload-to destination in the emitted gnupload command.
@@ -72,17 +67,15 @@ Once all the builds and tests have passed,
 * Announce it on Savannah first, so you can include the savannah.org
   announcement link in the email message.
 
-  From here:
+  Go to the news-submission form:
 
-    https://savannah.gnu.org/projects/bison/
+    https://savannah.gnu.org/news/submit.php?group=bison
 
-  click on "Submit news", then write something like the following:
-  (If there is no such button, then enable "News" for the project via
-  the "Main->Select Features" menu item, or via this link:
+  If it does not work, then enable "News" for the project via this link:
 
     https://savannah.gnu.org/project/admin/editgroupfeatures.php?group=bison
 
-  )
+  Write something like the following:
 
     Subject: bison-X.Y released [stable]
     +verbatim+
@@ -95,12 +88,10 @@ Once all the builds and tests have passed,
 
 * Send the announcement email message.
 
-* After each non-alpha release, update the on-line manual accessible via
+* After each non-alpha release, run
 
-    http://www.gnu.org/software/bison/manual/
+    make web-manual-update
 
-  by running this from top_srcdir:
+  to update the on-line manual accessible at
 
-    build-aux/gnu-web-doc-update
-
-  possibly with "-C <BUILDDIR>"
+    http://www.gnu.org/software/bison/manual/
diff --git a/THANKS b/THANKS
index 284c5a9..95acb1e 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -13,6 +13,7 @@ Anthony Heading           ajrh@ajrh.net
 Arnold Robbins            arnold@skeeve.com
 Art Haas                  ahaas@neosoft.com
 Baron Schwartz            baron@sequent.org
+Ben Pfaff                 blp@cs.stanford.edu
 Benoit Perrot             benoit.perrot@epita.fr
 Bernd Kiefer              kiefer@dfki.de
 Bert Deknuydt             Bert.Deknuydt@esat.kuleuven.ac.be
@@ -100,7 +101,7 @@ Sergei Steshenko          sergstesh@yahoo.com
 Shura                     debil_urod@ngs.ru
 Stefano Lattarini         stefano.lattarini@gmail.com
 Steve Murphy              murf@parsetree.com
-Summum Bonum              sum@geekhouse.org
+Sum Wu                    sum@geekhouse.org
 Thiru Ramakrishnan        thiru.ramakrishnan@gmail.com
 Tim Josling               tej@melbpc.org.au
 Tim Landscheidt           tim@tim-landscheidt.de
index 66a24a4..42cd2c3 100644 (file)
@@ -1190,6 +1190,7 @@ m4_include([m4/msvc-nothrow.m4])
 m4_include([m4/multiarch.m4])
 m4_include([m4/nls.m4])
 m4_include([m4/nocrash.m4])
+m4_include([m4/obstack-printf.m4])
 m4_include([m4/off_t.m4])
 m4_include([m4/open.m4])
 m4_include([m4/pathmax.m4])
index 6a13729..58e48bd 100644 (file)
@@ -114,10 +114,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index aa04f04..ad5f74a 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
 #   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2012-06-17'
+timestamp='2012-07-31'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -805,6 +805,9 @@ EOF
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
        exit ;;
+    *:MINGW64*:*)
+       echo ${UNAME_MACHINE}-pc-mingw64
+       exit ;;
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
@@ -1334,9 +1337,6 @@ EOF
        exit ;;
 esac
 
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
 eval $set_cc_for_build
 cat >$dummy.c <<EOF
 #ifdef _SEQUENT_
index aa2cf19..b15df57 100755 (executable)
@@ -4,7 +4,7 @@
 #   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
 #   2011, 2012 Free Software Foundation, Inc.
 
-timestamp='2012-06-17'
+timestamp='2012-07-31'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -791,6 +791,10 @@ case $basic_machine in
        microblaze)
                basic_machine=microblaze-xilinx
                ;;
+       mingw64)
+               basic_machine=x86_64-pc
+               os=-mingw64
+               ;;
        mingw32)
                basic_machine=i386-pc
                os=-mingw32
@@ -1359,7 +1363,7 @@ case $os in
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
              | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-android* \
+             | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
index 8beca86..fa89e76 100755 (executable)
@@ -3,7 +3,7 @@
 # controlled .prev-version file, automate the procedure by which we record
 # the date, release-type and version string in the NEWS file.  That commit
 # will serve to identify the release, so apply a signed tag to it as well.
-VERSION=2012-07-05.15 # UTC
+VERSION=2012-08-01.09 # UTC
 
 # Note: this is a bash script (could be zsh or dash)
 
@@ -28,9 +28,6 @@ ME=$(basename "$0")
 warn() { printf '%s: %s\n' "$ME" "$*" >&2; }
 die() { warn "$*"; exit 1; }
 
-noteworthy='* Noteworthy changes in release'
-noteworthy_stub="$noteworthy ?.? (????-??-??) [?]"
-
 help()
 {
   cat <<EOF
@@ -49,10 +46,10 @@ Requirements:
 $noteworthy_stub
 
 Options:
-  --branch=BRANCH      set release branch (default: master)
-  -C, --builddir=DIR   location of (configured) Makefile (default: .)
-  --help               print this help, then exit
-  --version            print version number, then exit
+  --branch=BRANCH     set release branch (default: $branch)
+  -C, --builddir=DIR  location of (configured) Makefile (default: $builddir)
+  --help              print this help, then exit
+  --version           print version number, then exit
 
 EXAMPLE:
 To update NEWS and tag the beta 8.1 release of coreutils, I would run this:
@@ -81,7 +78,12 @@ EOF
 ## Main.  ##
 ## ------ ##
 
-branch=master
+# Constants.
+noteworthy='* Noteworthy changes in release'
+noteworthy_stub="$noteworthy ?.? (????-??-??) [?]"
+
+# Variables.
+branch=$(git branch | sed -ne '/^\* /{s///;p;q;}')
 builddir=.
 
 while test $# != 0
index d79e7aa..5184edc 100755 (executable)
@@ -3,7 +3,7 @@ eval '(exit $?0)' && eval 'exec perl -wS "$0" ${1+"$@"}'
     if 0;
 # Convert git log output to ChangeLog format.
 
-my $VERSION = '2012-07-16 18:34'; # UTC
+my $VERSION = '2012-07-29 06:11'; # UTC
 # The definition above must lie within the first 8 lines in order
 # for the Emacs time-stamp write hook (at end) to update it.
 # If you change this file with Emacs, please let the write hook
@@ -68,7 +68,8 @@ OPTIONS:
                   header; the default is to cluster adjacent commit messages
                   if their headers are the same and neither commit message
                   contains multiple paragraphs.
-   --srcdir=DIR the root of the source tree, containing the '.git' directory.
+   --srcdir=DIR the root of the source tree, from which the .git/
+                  directory can be derived.
    --since=DATE convert only the logs since DATE;
                   the default is to convert all log entries.
    --format=FMT set format string for commit subject and body;
@@ -193,6 +194,30 @@ sub parse_amend_file($)
   return $h;
 }
 
+# git_dir_option $SRCDIR
+#
+# From $SRCDIR, the --git-dir option to pass to git (none if $SRCDIR
+# is undef).  Return as a list (0 or 1 element).
+sub git_dir_option($)
+{
+  my ($srcdir) = @_;
+  my @res = ();
+  if (defined $srcdir)
+    {
+      my $qdir = shell_quote $srcdir;
+      my $cmd = "cd $qdir && git rev-parse --show-toplevel";
+      my $qcmd = shell_quote $cmd;
+      my $git_dir = qx($cmd);
+      defined $git_dir
+        or die "$ME: cannot run $qcmd: $!\n";
+      $? == 0
+        or die "$ME: $qcmd had unexpected exit code or signal ($?)\n";
+      chomp $git_dir;
+      push @res, "--git-dir=$git_dir/.git";
+    }
+  @res;
+}
+
 {
   my $since_date;
   my $format_string = '%s%n%b%n';
@@ -224,7 +249,7 @@ sub parse_amend_file($)
   my $amend_code = defined $amend_file ? parse_amend_file $amend_file : {};
 
   my @cmd = ('git',
-             defined $srcdir ? ("--git-dir=$srcdir/.git") : (),
+             git_dir_option $srcdir,
              qw(log --log-size),
              '--pretty=format:%H:%ct  %an  <%ae>%n%n'.$format_string, @ARGV);
   open PIPE, '-|', @cmd
index 851f8b8..4acd69d 100755 (executable)
@@ -24,9 +24,6 @@ VERSION=2009-07-21.16; # UTC
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Requirements: everything required to bootstrap your package,
-# plus these: git, cvs, cvsu, rsync, mktemp
-
 ME=$(basename "$0")
 warn() { printf '%s: %s\n' "$ME" "$*" >&2; }
 die() { warn "$*"; exit 1; }
@@ -36,10 +33,9 @@ help()
   cat <<EOF
 Usage: $ME
 
-Run this script from top_srcdir (no options or arguments) after each
-non-alpha release, to update the web documentation at
-http://www.gnu.org/software/\$pkg/manual/ Run it from your project's
-the top-level directory.
+Run this script from top_srcdir (no arguments) after each non-alpha
+release, to update the web documentation at
+http://www.gnu.org/software/\$pkg/manual/
 
 Options:
   -C, --builddir=DIR  location of (configured) Makefile (default: .)
@@ -64,6 +60,51 @@ EOF
   exit
 }
 
+# find_tool ENVVAR NAMES...
+# -------------------------
+# Search for a required program.  Use the value of ENVVAR, if set,
+# otherwise find the first of the NAMES that can be run (i.e.,
+# supports --version).  If found, set ENVVAR to the program name,
+# die otherwise.
+#
+# FIXME: code duplication, see also bootstrap.
+find_tool ()
+{
+  find_tool_envvar=$1
+  shift
+  find_tool_names=$@
+  eval "find_tool_res=\$$find_tool_envvar"
+  if test x"$find_tool_res" = x; then
+    for i
+    do
+      if ($i --version </dev/null) >/dev/null 2>&1; then
+       find_tool_res=$i
+       break
+      fi
+    done
+  else
+    find_tool_error_prefix="\$$find_tool_envvar: "
+  fi
+  test x"$find_tool_res" != x \
+    || die "one of these is required: $find_tool_names"
+  ($find_tool_res --version </dev/null) >/dev/null 2>&1 \
+    || die "${find_tool_error_prefix}cannot run $find_tool_res --version"
+  eval "$find_tool_envvar=\$find_tool_res"
+  eval "export $find_tool_envvar"
+}
+
+## ------ ##
+## Main.  ##
+## ------ ##
+
+# Requirements: everything required to bootstrap your package, plus
+# these.
+find_tool CVS cvs
+find_tool CVSU cvsu
+find_tool GIT git
+find_tool RSYNC rsync
+find_tool XARGS gxargs xargs
+
 builddir=.
 while test $# != 0
 do
@@ -86,22 +127,22 @@ do
 done
 
 test $# = 0 \
-  || die "$ME: too many arguments"
+  || die "too many arguments"
 
 prev=.prev-version
-version=$(cat $prev) || die "$ME: no $prev file?"
+version=$(cat $prev) || die "no $prev file?"
 pkg=$(sed -n 's/^PACKAGE = \(.*\)/\1/p' $builddir/Makefile) \
-  || die "$ME: no Makefile?"
+  || die "no Makefile?"
 tmp_branch=web-doc-$version-$$
-current_branch=$(git branch | sed -ne '/^\* /{s///;p;q;}')
+current_branch=$($GIT branch | sed -ne '/^\* /{s///;p;q;}')
 
 cleanup()
 {
   __st=$?
   rm -rf "$tmp"
-  git checkout "$current_branch"
-  git submodule update --recursive
-  git branch -d $tmp_branch
+  $GIT checkout "$current_branch"
+  $GIT submodule update --recursive
+  $GIT branch -d $tmp_branch
   exit $__st
 }
 trap cleanup 0
@@ -111,8 +152,8 @@ trap 'exit $?' 1 2 13 15
 # just-released version number, not some string like 7.6.18-20761.
 # That version string propagates into all documentation.
 set -e
-git checkout -b $tmp_branch v$version
-git submodule update --recursive
+$GIT checkout -b $tmp_branch v$version
+$GIT submodule update --recursive
 ./bootstrap
 srcdir=$(pwd)
 cd "$builddir"
@@ -125,16 +166,18 @@ set +e
 
 tmp=$(mktemp -d web-doc-update.XXXXXX) || exit 1
 ( cd $tmp \
-    && cvs -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg )
-rsync -avP "$builddir"/doc/manual/ $tmp/$pkg/manual
+    && $CVS -d $USER@cvs.sv.gnu.org:/webcvs/$pkg co $pkg )
+$RSYNC -avP "$builddir"/doc/manual/ $tmp/$pkg/manual
 
 (
   cd $tmp/$pkg/manual
 
   # Add any new files:
-  cvsu --types='?'|sed s/..// | xargs --no-run-if-empty -- cvs add -ko
+  $CVSU --types='?'                             \
+    | sed s/..//                                \
+    | $XARGS --no-run-if-empty -- $CVS add -ko
 
-  cvs ci -m $version
+  $CVS ci -m $version
 )
 
 # Local variables:
index 2b646dd..c7354ed 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2012-07-03.16}
+\def\texinfoversion{2012-07-29.17}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -2448,34 +2448,12 @@ end
 % @samp.
 \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
 
-% definition of @key that produces a lozenge.  Doesn't adjust to text size.
-%\setfont\keyrm\rmshape{8}{1000}{OT1}
-%\font\keysy=cmsy9
-%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
-%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
-%    \vbox{\hrule\kern-0.4pt
-%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
-%    \kern-0.4pt\hrule}%
-%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-
-% definition of @key with no lozenge.  If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle.  But
-% if it isn't monospace, then use \tt.
-%
-\def\key#1{{\setupmarkupstyle{key}%
-  \nohyphenation
-  \ifmonospace\else\tt\fi
-  #1}\null}
+% @indicateurl is \samp, that is, with quotes.
+\let\indicateurl=\samp
 
-% ctrl is no longer a Texinfo command.
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
+% @code (and similar) prints in typewriter, but with spaces the same
+% size as normal in the surrounding text, without hyphenation, etc.
+% This is a subroutine for that.
 \def\tclose#1{%
   {%
     % Change normal interword space to be same as for the current font.
@@ -2500,7 +2478,7 @@ end
 % We *must* turn on hyphenation at `-' and `_' in @code.
 % Otherwise, it is too hard to avoid overfull hboxes
 % in the Emacs manual, the Library manual, etc.
-
+%
 % Unfortunately, TeX uses one parameter (\hyphenchar) to control
 % both hyphenation at - and hyphenation within words.
 % We must therefore turn them both off (\tclose does that)
@@ -2564,6 +2542,13 @@ end
   \fi\fi
 }
 
+% For @command, @env, @file, @option quotes seem unnecessary,
+% so use \code rather than \samp.
+\let\command=\code
+\let\env=\code
+\let\file=\code
+\let\option=\code
+
 % @uref (abbreviation for `urlref') takes an optional (comma-separated)
 % second argument specifying the text to display and an optional third
 % arg as text to display instead of (rather than in addition to) the url
@@ -2743,10 +2728,24 @@ end
 \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
 \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
 
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
-\let\command=\code
+% definition of @key that produces a lozenge.  Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+%    \vbox{\hrule\kern-0.4pt
+%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+%    \kern-0.4pt\hrule}%
+%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge.  If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle.  But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+  \nohyphenation
+  \ifmonospace\else\tt\fi
+  #1}\null}
 
 % @clicksequence{File @click{} Open ...}
 \def\clicksequence#1{\begingroup #1\endgroup}
@@ -2854,6 +2853,9 @@ end
   }
 }
 
+% ctrl is no longer a Texinfo command, but leave this definition for fun.
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
 % @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
 % Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
 % except specified as a normal braced arg, so no newlines to worry about.
diff --git a/cfg.mk b/cfg.mk
index 2f1a9e9..3a70379 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -65,12 +65,13 @@ exclude = \
 $(call exclude,                                                                \
   bindtextdomain=^lib/main.c$$                                         \
   program_name=^lib/main.c$$                                           \
-  prohibit_always-defined_macros=^data/yacc.c|^djgpp/                  \
+  prohibit_always-defined_macros=^data/yacc.c$$|^djgpp/                        \
   prohibit_always-defined_macros+=?|^lib/timevar.c$$                   \
   prohibit_always-defined_macros+=?|^src/(parse-gram.c|system.h)$$     \
   prohibit_always-defined_macros+=?|^tests/regression.at$$             \
   prohibit_defined_have_decl_tests=?|^lib/timevar.c$$                  \
-  prohibit_empty_lines_at_EOF=^src/parse-gram.[ch]$$                   \
+  prohibit_magic_number_exit=^doc/bison.texi$$                         \
+  prohibit_magic_number_exit+=?|^tests/(conflicts|regression).at$$     \
   require_config_h_first=^(lib/yyerror|data/(glr|yacc))\.c$$           \
   space_tab=^tests/(input|c\+\+)\.at$$                                 \
   trailing_blank=^src/parse-gram.[ch]$$                                        \
index 968964d..ebe6889 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU Bison 2.6.
+# Generated by GNU Autoconf 2.69 for GNU Bison 2.6.2.
 #
 # Report bugs to <bug-bison@gnu.org>.
 #
@@ -580,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GNU Bison'
 PACKAGE_TARNAME='bison'
-PACKAGE_VERSION='2.6'
-PACKAGE_STRING='GNU Bison 2.6'
+PACKAGE_VERSION='2.6.2'
+PACKAGE_STRING='GNU Bison 2.6.2'
 PACKAGE_BUGREPORT='bug-bison@gnu.org'
 PACKAGE_URL='http://www.gnu.org/software/bison/'
 
@@ -2364,7 +2364,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU Bison 2.6 to adapt to many kinds of systems.
+\`configure' configures GNU Bison 2.6.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2434,7 +2434,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU Bison 2.6:";;
+     short | recursive ) echo "Configuration of GNU Bison 2.6.2:";;
    esac
   cat <<\_ACEOF
 
@@ -2559,7 +2559,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU Bison configure 2.6
+GNU Bison configure 2.6.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -3306,7 +3306,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU Bison $as_me 2.6, which was
+It was created by GNU Bison $as_me 2.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3615,6 +3615,7 @@ as_fn_append ac_func_list " mbrtowc"
 as_fn_append ac_func_list " isascii"
 as_fn_append ac_header_list " sys/mman.h"
 as_fn_append ac_func_list " mprotect"
+as_fn_append ac_func_list " obstack_printf"
 as_fn_append ac_func_list " lstat"
 as_fn_append ac_header_list " sys/param.h"
 as_fn_append ac_func_list " strerror_r"
@@ -4242,7 +4243,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='bison'
- VERSION='2.6'
+ VERSION='2.6.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -7280,6 +7281,7 @@ fi
   # Code from module multiarch:
   # Code from module nocrash:
   # Code from module obstack:
+  # Code from module obstack-printf:
   # Code from module open:
   # Code from module pathmax:
   # Code from module perror:
@@ -17581,6 +17583,19 @@ $as_echo "$gl_cv_func_memchr_works" >&6; }
 
 
 
+ac_fn_c_check_decl "$LINENO" "obstack_printf" "ac_cv_have_decl_obstack_printf" "$ac_includes_default"
+if test "x$ac_cv_have_decl_obstack_printf" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_OBSTACK_PRINTF $ac_have_decl
+_ACEOF
+
+
+
 
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for promoted mode_t type" >&5
 
 
 
+
+
+
+  if test $ac_cv_func_obstack_printf = no ; then
+
+
+  if test $ac_cv_func_obstack_printf = yes; then
+    REPLACE_OBSTACK_PRINTF=1
+  fi
+
+  fi
+
+
+
+  if test $ac_cv_have_decl_obstack_printf = no; then
+    HAVE_DECL_OBSTACK_PRINTF=0
+  fi
+
+
+if test $ac_cv_func_obstack_printf = no || test $REPLACE_OBSTACK_PRINTF = 1; then
+
+
+
+
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS obstack_printf.$ac_objext"
+
+fi
+
+
+
+
+
+          GNULIB_OBSTACK_PRINTF=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_OBSTACK_PRINTF 1" >>confdefs.h
+
+
+
+
+
   case "$host_os" in
     mingw* | pw*)
       REPLACE_OPEN=1
@@ -35779,7 +35842,7 @@ case $VALGRIND:$host_os in
     # VALGRIND+=' --suppressions=$(abs_top_srcdir)/build-aux/darwin11.4.0.valgrind'
     VALGRIND=;;
   *:*)
-    VALGRIND_PREBISON=$VALGRIND -q
+    VALGRIND_PREBISON="$VALGRIND -q"
 ;;
 esac
 
@@ -36040,7 +36103,7 @@ EOF
          > conftestver.class
        target_version=`{
          unset JAVA_HOME
-         echo "$as_me:36043: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5
+         echo "$as_me:36106: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5
          CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver 2>&5
        }`
        case "$target_version" in
@@ -36108,23 +36171,23 @@ EOF
         if $JAVAC --version 2>/dev/null | sed -e 1q | grep gcj > /dev/null; then
             if $JAVAC --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then
                         rm -f conftest.class
-        if { echo "$as_me:36111: $JAVAC -d . conftest.java" >&5
+        if { echo "$as_me:36174: $JAVAC -d . conftest.java" >&5
              $JAVAC -d . conftest.java >&5 2>&1
            } \
            && test -f conftest.class \
            && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                     rm -f conftest.class
           rm -f conftestfail.class
-          if { echo "$as_me:36118: $JAVAC -fsource=$source_version -d . conftest.java" >&5
+          if { echo "$as_me:36181: $JAVAC -fsource=$source_version -d . conftest.java" >&5
                $JAVAC -fsource="$source_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
              && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-             && { echo "$as_me:36123: $JAVAC -d . conftestfail.java" >&5
+             && { echo "$as_me:36186: $JAVAC -d . conftestfail.java" >&5
                   $JAVAC -d . conftestfail.java >&5 2>&1
                 } \
              && test -f conftestfail.class \
-             && ! { echo "$as_me:36127: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:36190: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5
                     $JAVAC -fsource="$source_version" -d . conftestfail.java >&5 2>&1
                   }; then
             CONF_JAVAC="$JAVAC -fsource=$source_version"
@@ -36138,7 +36201,7 @@ EOF
         else
                     rm -f conftest.class
           rm -f conftestfail.class
-          if { echo "$as_me:36141: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
+          if { echo "$as_me:36204: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
                $JAVAC -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
@@ -36151,7 +36214,7 @@ EOF
       else
                 if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
                     rm -f conftest.class
-          if { echo "$as_me:36154: $JAVAC -d . conftest.java" >&5
+          if { echo "$as_me:36217: $JAVAC -d . conftest.java" >&5
                $JAVAC -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class; then
@@ -36163,7 +36226,7 @@ EOF
           if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
                                     javac_works=
             rm -f conftest.class
-            if { echo "$as_me:36166: $JAVAC -d . conftest.java" >&5
+            if { echo "$as_me:36229: $JAVAC -d . conftest.java" >&5
                  $JAVAC -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class; then
@@ -36171,7 +36234,7 @@ EOF
             fi
             javac_noassert_works=
             rm -f conftest.class
-            if { echo "$as_me:36174: $JAVAC -fno-assert -d . conftest.java" >&5
+            if { echo "$as_me:36237: $JAVAC -fno-assert -d . conftest.java" >&5
                  $JAVAC -fno-assert -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class; then
@@ -36179,11 +36242,11 @@ EOF
             fi
             if test -n "$javac_works" && test -n "$javac_noassert_works"; then
               rm -f conftestfail.class
-              if { echo "$as_me:36182: $JAVAC -d . conftestfail.java" >&5
+              if { echo "$as_me:36245: $JAVAC -d . conftestfail.java" >&5
                    $JAVAC -d . conftestfail.java >&5 2>&1
                  } \
                  && test -f conftestfail.class \
-                 && ! { echo "$as_me:36186: $JAVAC -fno-assert -d . conftestfail.java" >&5
+                 && ! { echo "$as_me:36249: $JAVAC -fno-assert -d . conftestfail.java" >&5
                         $JAVAC -fno-assert -d . conftestfail.java >&5 2>&1
                       }; then
                                 javac_works=
@@ -36205,23 +36268,23 @@ EOF
       fi
     else
                   rm -f conftest.class
-      if { echo "$as_me:36208: $JAVAC -d . conftest.java" >&5
+      if { echo "$as_me:36271: $JAVAC -d . conftest.java" >&5
            $JAVAC -d . conftest.java >&5 2>&1
          } \
          && test -f conftest.class \
          && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                 rm -f conftest.class
         rm -f conftestfail.class
-        if { echo "$as_me:36215: $JAVAC -source $source_version -d . conftest.java" >&5
+        if { echo "$as_me:36278: $JAVAC -source $source_version -d . conftest.java" >&5
              $JAVAC -source "$source_version" -d . conftest.java >&5 2>&1
            } \
            && test -f conftest.class \
            && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-           && { echo "$as_me:36220: $JAVAC -d . conftestfail.java" >&5
+           && { echo "$as_me:36283: $JAVAC -d . conftestfail.java" >&5
                 $JAVAC -d . conftestfail.java >&5 2>&1
               } \
            && test -f conftestfail.class \
-           && ! { echo "$as_me:36224: $JAVAC -source $source_version -d . conftestfail.java" >&5
+           && ! { echo "$as_me:36287: $JAVAC -source $source_version -d . conftestfail.java" >&5
                   $JAVAC -source "$source_version" -d . conftestfail.java >&5 2>&1
                 }; then
           CONF_JAVAC="$JAVAC -source $source_version"
@@ -36234,23 +36297,23 @@ EOF
         fi
       else
                         rm -f conftest.class
-        if { echo "$as_me:36237: $JAVAC -target $target_version -d . conftest.java" >&5
+        if { echo "$as_me:36300: $JAVAC -target $target_version -d . conftest.java" >&5
              $JAVAC -target "$target_version" -d . conftest.java >&5 2>&1
            } \
            && test -f conftest.class \
            && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                     rm -f conftest.class
           rm -f conftestfail.class
-          if { echo "$as_me:36244: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:36307: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
                $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
              && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-             && { echo "$as_me:36249: $JAVAC -target $target_version -d . conftestfail.java" >&5
+             && { echo "$as_me:36312: $JAVAC -target $target_version -d . conftestfail.java" >&5
                   $JAVAC -target "$target_version" -d . conftestfail.java >&5 2>&1
                 } \
              && test -f conftestfail.class \
-             && ! { echo "$as_me:36253: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:36316: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5
                     $JAVAC -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1
                   }; then
             CONF_JAVAC="$JAVAC -target $target_version -source $source_version"
@@ -36263,7 +36326,7 @@ EOF
           fi
         else
                                         rm -f conftest.class
-          if { echo "$as_me:36266: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:36329: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
                $JAVAC -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
 
                 if test -z "$HAVE_JAVACOMP" && test -n "$HAVE_GCJ_IN_PATH"; then
             if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^3\.[01]/d' | grep '^[3-9]' >/dev/null; then
-                if { echo "$as_me:36384: gcj -C -d . conftestlib.java" >&5
+                if { echo "$as_me:36447: gcj -C -d . conftestlib.java" >&5
              gcj -C -d . conftestlib.java >&5 2>&1
            }; then
                     if gcj --version 2>/dev/null | sed -e 's,^[^0-9]*,,' -e 1q | sed -e '/^4\.[012]/d' | grep '^[4-9]' >/dev/null; then
                                     rm -f conftest.class
-            if { echo "$as_me:36389: gcj -C -d . conftest.java" >&5
+            if { echo "$as_me:36452: gcj -C -d . conftest.java" >&5
                  gcj -C -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class \
                && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                             rm -f conftest.class
               rm -f conftestfail.class
-              if { echo "$as_me:36396: gcj -C -fsource=$source_version -d . conftest.java" >&5
+              if { echo "$as_me:36459: gcj -C -fsource=$source_version -d . conftest.java" >&5
                    gcj -C -fsource="$source_version" -d . conftest.java >&5 2>&1
                  } \
                  && test -f conftest.class \
                  && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-                 && { echo "$as_me:36401: gcj -C -d . conftestfail.java" >&5
+                 && { echo "$as_me:36464: gcj -C -d . conftestfail.java" >&5
                       gcj -C -d . conftestfail.java >&5 2>&1
                     } \
                  && test -f conftestfail.class \
-                 && ! { echo "$as_me:36405: gcj -C -fsource=$source_version -d . conftestfail.java" >&5
+                 && ! { echo "$as_me:36468: gcj -C -fsource=$source_version -d . conftestfail.java" >&5
                         gcj -C -fsource="$source_version" -d . conftestfail.java >&5 2>&1
                       }; then
                 CONF_JAVAC="gcj -C -fsource=$source_version"
@@ -36416,7 +36479,7 @@ fi
             else
                             rm -f conftest.class
               rm -f conftestfail.class
-              if { echo "$as_me:36419: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
+              if { echo "$as_me:36482: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
                    gcj -C -fsource="$source_version" -ftarget="$target_version" -d . conftest.java >&5 2>&1
                  } \
                  && test -f conftest.class \
@@ -36429,7 +36492,7 @@ fi
           else
                                                 if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
               rm -f conftest.class
-              if { echo "$as_me:36432: gcj -C -d . conftest.java" >&5
+              if { echo "$as_me:36495: gcj -C -d . conftest.java" >&5
                    gcj -C -d . conftest.java >&5 2>&1
                  } \
                  && test -f conftest.class; then
@@ -36440,7 +36503,7 @@ fi
             else
               if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
                                                 rm -f conftest.class
-                if { echo "$as_me:36443: gcj -C -fno-assert -d . conftest.java" >&5
+                if { echo "$as_me:36506: gcj -C -fno-assert -d . conftest.java" >&5
                      gcj -C -fno-assert -d . conftest.java >&5 2>&1
                    } \
                    && test -f conftest.class; then
@@ -36449,7 +36512,7 @@ fi
                   HAVE_JAVACOMP=1
                 else
                   rm -f conftest.class
-                  if { echo "$as_me:36452: gcj -C -d . conftest.java" >&5
+                  if { echo "$as_me:36515: gcj -C -d . conftest.java" >&5
                        gcj -C -d . conftest.java >&5 2>&1
                      } \
                      && test -f conftest.class; then
             if { javac -version >/dev/null 2>/dev/null || test $? -le 2; } \
          && ( if javac -help 2>&1 >/dev/null | grep at.dms.kjc.Main >/dev/null && javac -help 2>/dev/null | grep 'released.*2000' >/dev/null ; then exit 1; else exit 0; fi ); then
                                 rm -f conftest.class
-        if { echo "$as_me:36471: javac -d . conftest.java" >&5
+        if { echo "$as_me:36534: javac -d . conftest.java" >&5
              javac -d . conftest.java >&5 2>&1
            } \
            && test -f conftest.class \
            && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                     rm -f conftest.class
           rm -f conftestfail.class
-          if { echo "$as_me:36478: javac -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:36541: javac -source $source_version -d . conftest.java" >&5
                javac -source "$source_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
              && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-             && { echo "$as_me:36483: javac -d . conftestfail.java" >&5
+             && { echo "$as_me:36546: javac -d . conftestfail.java" >&5
                   javac -d . conftestfail.java >&5 2>&1
                 } \
              && test -f conftestfail.class \
-             && ! { echo "$as_me:36487: javac -source $source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:36550: javac -source $source_version -d . conftestfail.java" >&5
                     javac -source "$source_version" -d . conftestfail.java >&5 2>&1
                   }; then
             CONF_JAVAC="javac -source $source_version"
           fi
         else
                               rm -f conftest.class
-          if { echo "$as_me:36500: javac -target $target_version -d . conftest.java" >&5
+          if { echo "$as_me:36563: javac -target $target_version -d . conftest.java" >&5
                javac -target "$target_version" -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class \
              && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5; then
                         rm -f conftest.class
             rm -f conftestfail.class
-            if { echo "$as_me:36507: javac -target $target_version -source $source_version -d . conftest.java" >&5
+            if { echo "$as_me:36570: javac -target $target_version -source $source_version -d . conftest.java" >&5
                  javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class \
                && expr `func_classfile_version conftest.class` '<=' $cfversion >/dev/null 2>&5 \
-               && { echo "$as_me:36512: javac -target $target_version -d . conftestfail.java" >&5
+               && { echo "$as_me:36575: javac -target $target_version -d . conftestfail.java" >&5
                     javac -target "$target_version" -d . conftestfail.java >&5 2>&1
                   } \
                && test -f conftestfail.class \
-               && ! { echo "$as_me:36516: javac -target $target_version -source $source_version -d . conftestfail.java" >&5
+               && ! { echo "$as_me:36579: javac -target $target_version -source $source_version -d . conftestfail.java" >&5
                       javac -target "$target_version" -source "$source_version" -d . conftestfail.java >&5 2>&1
                     }; then
               CONF_JAVAC="javac -target $target_version -source $source_version"
@@ -36526,7 +36589,7 @@ fi
             fi
           else
                                                 rm -f conftest.class
-            if { echo "$as_me:36529: javac -target $target_version -source $source_version -d . conftest.java" >&5
+            if { echo "$as_me:36592: javac -target $target_version -source $source_version -d . conftest.java" >&5
                  javac -target "$target_version" -source "$source_version" -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class \
@@ -37402,7 +37465,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU Bison $as_me 2.6, which was
+This file was extended by GNU Bison $as_me 2.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -37474,7 +37537,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GNU Bison config.status 2.6
+GNU Bison config.status 2.6.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index 2773167..b9d2ea6 100644 (file)
@@ -170,7 +170,7 @@ case $VALGRIND:$host_os in
     # VALGRIND+=' --suppressions=$(abs_top_srcdir)/build-aux/darwin11.4.0.valgrind'
     VALGRIND=;;
   *:*)
-    AC_SUBST([VALGRIND_PREBISON], [$VALGRIND -q]);;
+    AC_SUBST([VALGRIND_PREBISON], ["$VALGRIND -q"]);;
 esac
 
 AM_MISSING_PROG([AUTOM4TE], [autom4te])
index c223188..1fd10b4 100644 (file)
@@ -14,6 +14,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 dist_pkgdata_DATA = README bison.m4 \
+   c-like.m4 \
    c-skel.m4 c.m4 yacc.c glr.c \
    c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \
    java-skel.m4 java.m4 lalr1.java
index d3e0821..0957cc9 100644 (file)
@@ -114,10 +114,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
@@ -1355,6 +1355,7 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 dist_pkgdata_DATA = README bison.m4 \
+   c-like.m4 \
    c-skel.m4 c.m4 yacc.c glr.c \
    c++-skel.m4 c++.m4 location.cc lalr1.cc glr.cc stack.hh \
    java-skel.m4 java.m4 lalr1.java
index 178134a..fac86f2 100644 (file)
@@ -259,8 +259,8 @@ m4_define([b4_basename],
 # b4_syncline(LINE, FILE)
 # -----------------------
 m4_define([b4_syncline],
-[b4_flag_if([synclines], [
-b4_sync_end([__line__], [b4_basename(m4_quote(__file__))])
+[b4_flag_if([synclines],
+[b4_sync_end([__line__], [b4_basename(m4_quote(__file__))])
 b4_sync_start([$1], [$2])])])
 
 m4_define([b4_sync_end], [b4_comment([Line $1 of $2])])
diff --git a/data/c-like.m4 b/data/c-like.m4
new file mode 100644 (file)
index 0000000..c2abce7
--- /dev/null
@@ -0,0 +1,44 @@
+                                                            -*- Autoconf -*-
+
+# Common code for C-like languages (C, C++, Java, etc.)
+
+# Copyright (C) 2012 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# b4_dollar_dollar_(VALUE, FIELD, DEFAULT-FIELD)
+# ----------------------------------------------
+# If FIELD (or DEFAULT-FIELD) is non-null, return "VALUE.FIELD",
+# otherwise just VALUE.  Be sure to pass "(VALUE)" is VALUE is a
+# pointer.
+m4_define([b4_dollar_dollar_],
+[m4_if([$2], [[]],
+       [m4_ifval([$3], [($1.$3)],
+                 [$1])],
+       [($1.$2)])])
+
+# b4_dollar_pushdef(VALUE-POINTER, DEFAULT-FIELD, LOCATION)
+# b4_dollar_popdef
+# ---------------------------------------------------------
+# Define b4_dollar_dollar for VALUE and DEFAULT-FIELD,
+# and b4_at_dollar for LOCATION.
+m4_define([b4_dollar_pushdef],
+[m4_pushdef([b4_dollar_dollar],
+            [b4_dollar_dollar_([$1], m4_dquote($][1), [$2])])dnl
+m4_pushdef([b4_at_dollar], [$3])dnl
+])
+m4_define([b4_dollar_popdef],
+[m4_popdef([b4_at_dollar])dnl
+m4_popdef([b4_dollar_dollar])dnl
+])
index 08296c6..45468e3 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -17,6 +17,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+m4_include(b4_pkgdatadir/[c-like.m4])
 
 # b4_tocpp(STRING)
 # ----------------
@@ -421,17 +422,18 @@ $2
 #                   SYMBOL-TAG, SYMBOL-NUM,
 #                   SYMBOL-ACTION, SYMBOL-TYPENAME)
 # -------------------------------------------------
+# Issue the code for a symbol action (e.g., %printer).
+#
+# Define b4_dollar_dollar([TYPE-NAME]), and b4_at_dollar, which are
+# invoked where $<TYPE-NAME>$ and @$ were specified by the user.
 m4_define([b4_symbol_actions],
-[m4_pushdef([b4_dollar_dollar],
-   [m4_ifval([$6], [(yyvaluep->$6)], [(*yyvaluep)])])dnl
-m4_pushdef([b4_at_dollar], [(*yylocationp)])dnl
+[b4_dollar_pushdef([(*yyvaluep)], [$6], [(*yylocationp)])dnl
       case $4: /* $3 */
 b4_syncline([$2], [$1])
        $5;
 b4_syncline([@oline@], [@ofile@])
        break;
-m4_popdef([b4_at_dollar])dnl
-m4_popdef([b4_dollar_dollar])dnl
+b4_dollar_popdef[]dnl
 ])
 
 
index ebef969..97efe89 100644 (file)
@@ -2302,12 +2302,10 @@ yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
 #endif
 ])
 m4_ifdef([b4_initial_action], [
-m4_pushdef([b4_at_dollar],     [yylloc])dnl
-m4_pushdef([b4_dollar_dollar], [yylval])dnl
-  /* User initialization code.  */
-  b4_user_initial_action
-m4_popdef([b4_dollar_dollar])dnl
-m4_popdef([b4_at_dollar])])dnl
+b4_dollar_pushdef([yylval], [], [yylloc])dnl
+/* User initialization code.  */
+b4_user_initial_action
+b4_dollar_popdef])[]dnl
 [
   if (! yyinitGLRStack (yystackp, YYINITDEPTH))
     goto yyexhaustedlab;
@@ -2601,9 +2599,7 @@ yypdumpstack (yyGLRStack* yystackp)
   YYFPRINTF (stderr, "\n");
 }
 #endif
-]
-
-b4_epilogue
+]b4_epilogue[]dnl
 dnl
 dnl glr.cc produces its own header.
 dnl
@@ -2616,5 +2612,5 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C],
 ]b4_cpp_guard_open([b4_spec_defines_file])[
 ]b4_shared_declarations[
 ]b4_cpp_guard_close([b4_spec_defines_file])[
-]])])
+]])])dnl
 m4_divert_pop(0)
index ba6ceac..826bc80 100644 (file)
@@ -131,7 +131,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
   ]b4_parser_class_name::b4_parser_class_name[ (]b4_parse_param_decl[)]m4_ifset([b4_parse_param], [
     :])[
 #if ]b4_api_PREFIX[DEBUG
-    ]m4_ifset([b4_parse_param], [  ], [ :])[yydebug_ (false),
+    ]m4_ifset([b4_parse_param], [  ], [ :])[
       yycdebug_ (&std::cerr)]m4_ifset([b4_parse_param], [,])[
 #endif]b4_parse_param_cons[
   {
@@ -199,20 +199,19 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
   ]b4_parser_class_name[::debug_level_type
   ]b4_parser_class_name[::debug_level () const
   {
-    return yydebug_;
+    return yydebug;
   }
 
   void
   ]b4_parser_class_name[::set_debug_level (debug_level_type l)
   {
-    yydebug_ = l;
+    // Actually, it is yydebug which is really used.
+    yydebug = l;
   }
 
 #endif
 ]m4_popdef([b4_parse_param])dnl
-b4_namespace_close[
-
-]])
+b4_namespace_close])
 
 
 # Let glr.c believe that the user arguments include the parser itself.
@@ -320,7 +319,6 @@ b4_user_stype
                                    const location_type* yylocationp);
   private:
     /* Debugging.  */
-    int yydebug_;
     std::ostream* yycdebug_;
 # endif
 
index d137fd5..18ea30b 100644 (file)
@@ -17,6 +17,7 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+m4_include(b4_pkgdatadir/[c-like.m4])
 
 # b4_comment(TEXT)
 # ----------------
index 17a8f22..82e6824 100644 (file)
@@ -536,12 +536,10 @@ do {                                      \
     YYCDEBUG << "Starting parse" << std::endl;
 
 ]m4_ifdef([b4_initial_action], [
-m4_pushdef([b4_at_dollar],     [yylloc])dnl
-m4_pushdef([b4_dollar_dollar], [yylval])dnl
-    /* User initialization code.  */
-    b4_user_initial_action
-m4_popdef([b4_dollar_dollar])dnl
-m4_popdef([b4_at_dollar])])dnl
+b4_dollar_pushdef([yylval], [], [yylloc])dnl
+/* User initialization code.  */
+b4_user_initial_action
+b4_dollar_popdef])[]dnl
 
   [  /* Initialize the stacks.  The initial state will be pushed in
        yynewstate, since the latter expects the semantical and the
@@ -1106,5 +1104,5 @@ b4_error_verbose_if([int yystate, int yytoken],
   const ]b4_parser_class_name[::token_number_type ]b4_parser_class_name[::yyundef_token_ = ]b4_undef_token_number[;
 
 ]b4_namespace_close[
-]b4_epilogue
+]b4_epilogue[]dnl
 m4_divert_pop(0)
index 103c03d..d1410a1 100644 (file)
@@ -458,12 +458,10 @@ b4_lexer_if([[
     yyerrstatus_ = 0;
 
 ]m4_ifdef([b4_initial_action], [
-m4_pushdef([b4_at_dollar],     [yylloc])dnl
-m4_pushdef([b4_dollar_dollar], [yylval])dnl
-    /* User initialization code.  */
-    b4_user_initial_action
-m4_popdef([b4_dollar_dollar])dnl
-m4_popdef([b4_at_dollar])])dnl
+b4_dollar_pushdef([yylval], [], [yylloc])dnl
+/* User initialization code.  */
+b4_user_initial_action
+b4_dollar_popdef])[]dnl
 
   [  /* Initialize the stack.  */
     yystack.push (yystate, yylval]b4_locations_if([, yylloc])[);
index 5e77f84..0175688 100644 (file)
@@ -1570,17 +1570,16 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   yylloc.first_column = yylloc.last_column = ]b4_location_initial_column[;
 #endif]])
 m4_ifdef([b4_initial_action],[
-m4_pushdef([b4_at_dollar],     [m4_define([b4_at_dollar_used])yylloc])dnl
-m4_pushdef([b4_dollar_dollar], [m4_define([b4_dollar_dollar_used])yylval])dnl
+b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [],
+                  [m4_define([b4_at_dollar_used])yylloc])dnl
 /* User initialization code.  */
 b4_user_initial_action
-m4_popdef([b4_dollar_dollar])dnl
-m4_popdef([b4_at_dollar])])dnl
+b4_dollar_popdef[]dnl
 m4_ifdef([b4_dollar_dollar_used],[[  yyvsp[0] = yylval;
 ]])dnl
 m4_ifdef([b4_at_dollar_used], [[  yylsp[0] = yylloc;
-]])[
-  goto yysetstate;
+]])])dnl
+[  goto yysetstate;
 
 /*------------------------------------------------------------.
 | yynewstate -- Push a new state, which is found in yystate.  |
@@ -2046,7 +2045,7 @@ yypushreturn:]])[
 }
 
 
-]b4_epilogue
+]b4_epilogue[]dnl
 b4_defines_if(
 [@output(b4_spec_defines_file@)@
 b4_copyright([Bison interface for Yacc-like parsers in C],
index 7d5799f..3c3c0e0 100644 (file)
@@ -116,10 +116,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index dcafce6..4a58b98 100644 (file)
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH BISON "1" "July 2012" "bison 2.6" "User Commands"
+.TH BISON "1" "August 2012" "bison 2.6.2" "User Commands"
 .SH NAME
 bison \- GNU Project parser generator (yacc replacement)
 .SH SYNOPSIS
index 83d2d43..701a0b2 100644 (file)
@@ -1,7 +1,7 @@
 This is ../../../doc/bison.info, produced by makeinfo version 4.13 from
 ../../../doc/bison.texi.
 
-This manual (18 July 2012) is for GNU Bison (version 2.6), the GNU
+This manual (27 July 2012) is for GNU Bison (version 2.6.2), the GNU
 parser generator.
 
    Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
@@ -30,7 +30,7 @@ File: bison.info,  Node: Top,  Next: Introduction,  Up: (dir)
 Bison
 *****
 
-This manual (18 July 2012) is for GNU Bison (version 2.6), the GNU
+This manual (27 July 2012) is for GNU Bison (version 2.6.2), the GNU
 parser generator.
 
    Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
@@ -74,7 +74,7 @@ Reference sections:
 * Glossary::            Basic concepts are explained.
 * Copying This Manual:: License for copying this manual.
 * Bibliography::        Publications cited in this manual.
-* Index::               Cross-references to the text.
+* Index of Terms::      Cross-references to the text.
 
  --- The Detailed Node Listing ---
 
@@ -362,7 +362,7 @@ Bison has grown more robust and evolved many other new features thanks
 to the hard work of a long list of volunteers.  For details, see the
 `THANKS' and `ChangeLog' files included in the Bison distribution.
 
-   This edition corresponds to version 2.6 of Bison.
+   This edition corresponds to version 2.6.2 of Bison.
 
 \1f
 File: bison.info,  Node: Conditions,  Next: Copying,  Prev: Introduction,  Up: Top
@@ -4642,8 +4642,8 @@ code.
 
  -- Directive: %initial-action { CODE }
      Declare that the braced CODE must be invoked before parsing each
-     time `yyparse' is called.  The CODE may use `$$' and `@$' --
-     initial value and location of the lookahead -- and the
+     time `yyparse' is called.  The CODE may use `$$' (or `$<TAG>$')
+     and `@$' -- initial value and location of the lookahead -- and the
      `%parse-param'.
 
    For instance, if your locations use a file name, you may use
@@ -4677,9 +4677,9 @@ symbol is automatically discarded.
 
  -- Directive: %destructor { CODE } SYMBOLS
      Invoke the braced CODE whenever the parser discards one of the
-     SYMBOLS.  Within CODE, `$$' designates the semantic value
-     associated with the discarded symbol, and `@$' designates its
-     location.  The additional parser parameters are also available
+     SYMBOLS.  Within CODE, `$$' (or `$<TAG>$') designates the semantic
+     value associated with the discarded symbol, and `@$' designates
+     its location.  The additional parser parameters are also available
      (*note The Parser Function `yyparse': Parser Function.).
 
      When a symbol is listed among SYMBOLS, its `%destructor' is called
@@ -4789,10 +4789,10 @@ Discarded Symbols: Destructor Decl.).
  -- Directive: %printer { CODE } SYMBOLS
      Invoke the braced CODE whenever the parser displays one of the
      SYMBOLS.  Within CODE, `yyoutput' denotes the output stream (a
-     `FILE*' in C, and an `std::ostream&' in C++), `$$' designates the
-     semantic value associated with the symbol, and `@$' its location.
-     The additional parser parameters are also available (*note The
-     Parser Function `yyparse': Parser Function.).
+     `FILE*' in C, and an `std::ostream&' in C++), `$$' (or `$<TAG>$')
+     designates the semantic value associated with the symbol, and `@$'
+     its location.  The additional parser parameters are also available
+     (*note The Parser Function `yyparse': Parser Function.).
 
      The SYMBOLS are defined as for `%destructor' (*note Freeing
      Discarded Symbols: Destructor Decl.): they can be per-type (e.g.,
@@ -9088,7 +9088,7 @@ changed several times, it is safer to require the version you designed
 the grammar for.
 
      %skeleton "lalr1.cc" /* -*- C++ -*- */
-     %require "2.6"
+     %require "2.6.2"
      %defines
      %define parser_class_name "calcxx_parser"
 
@@ -11337,7 +11337,7 @@ free software license, such as the GNU General Public License, to
 permit their use in free software.
 
 \1f
-File: bison.info,  Node: Bibliography,  Next: Index,  Prev: Copying This Manual,  Up: Top
+File: bison.info,  Node: Bibliography,  Next: Index of Terms,  Prev: Copying This Manual,  Up: Top
 
 Bibliography
 ************
@@ -11382,10 +11382,10 @@ Bibliography
      `http://www.cs.rhul.ac.uk/research/languages/publications/tomita_style_1.ps'
 
 \1f
-File: bison.info,  Node: Index,  Prev: Bibliography,  Up: Top
+File: bison.info,  Node: Index of Terms,  Prev: Bibliography,  Up: Top
 
-Index
-*****
+Index of Terms
+**************
 
 \0\b[index\0\b]
 * Menu:
@@ -12139,176 +12139,176 @@ Index
 
 \1f
 Tag Table:
-Node: Top\7f1057
-Node: Introduction\7f14592
-Node: Conditions\7f16263
-Node: Copying\7f18174
-Node: Concepts\7f55712
-Node: Language and Grammar\7f56904
-Node: Grammar in Bison\7f62839
-Node: Semantic Values\7f64753
-Node: Semantic Actions\7f66859
-Node: GLR Parsers\7f68033
-Node: Simple GLR Parsers\7f70778
-Node: Merging GLR Parses\7f77191
-Node: GLR Semantic Actions\7f81733
-Node: Compiler Requirements\7f83627
-Node: Locations\7f84379
-Node: Bison Parser\7f85832
-Node: Stages\7f88953
-Node: Grammar Layout\7f90241
-Node: Examples\7f91573
-Node: RPN Calc\7f92769
-Node: Rpcalc Declarations\7f93771
-Node: Rpcalc Rules\7f95699
-Node: Rpcalc Input\7f97432
-Node: Rpcalc Line\7f98903
-Node: Rpcalc Expr\7f100024
-Node: Rpcalc Lexer\7f101913
-Node: Rpcalc Main\7f104515
-Node: Rpcalc Error\7f104922
-Node: Rpcalc Generate\7f105955
-Node: Rpcalc Compile\7f107191
-Node: Infix Calc\7f108115
-Node: Simple Error Recovery\7f110829
-Node: Location Tracking Calc\7f112711
-Node: Ltcalc Declarations\7f113407
-Node: Ltcalc Rules\7f114496
-Node: Ltcalc Lexer\7f116361
-Node: Multi-function Calc\7f118684
-Node: Mfcalc Declarations\7f120260
-Node: Mfcalc Rules\7f122272
-Node: Mfcalc Symbol Table\7f123594
-Node: Exercises\7f130429
-Node: Grammar File\7f130943
-Node: Grammar Outline\7f131851
-Node: Prologue\7f132701
-Node: Prologue Alternatives\7f134505
-Node: Bison Declarations\7f144077
-Node: Grammar Rules\7f144505
-Node: Epilogue\7f144976
-Node: Symbols\7f146021
-Node: Rules\7f153096
-Node: Recursion\7f155516
-Node: Semantics\7f157191
-Node: Value Type\7f158299
-Node: Multiple Types\7f159134
-Node: Actions\7f160301
-Node: Action Types\7f164114
-Node: Mid-Rule Actions\7f165408
-Node: Tracking Locations\7f171691
-Node: Location Type\7f172355
-Node: Actions and Locations\7f173375
-Node: Location Default Action\7f175825
-Node: Named References\7f179323
-Node: Declarations\7f181959
-Node: Require Decl\7f183696
-Node: Token Decl\7f184015
-Node: Precedence Decl\7f186441
-Node: Union Decl\7f188451
-Node: Type Decl\7f190225
-Node: Initial Action Decl\7f191151
-Node: Destructor Decl\7f191922
-Node: Printer Decl\7f197399
-Node: Expect Decl\7f199679
-Node: Start Decl\7f201675
-Node: Pure Decl\7f202065
-Node: Push Decl\7f203815
-Node: Decl Summary\7f208296
-Node: %define Summary\7f216412
-Node: %code Summary\7f221919
-Node: Multiple Parsers\7f225637
-Node: Interface\7f228706
-Node: Parser Function\7f230024
-Node: Push Parser Function\7f232040
-Node: Pull Parser Function\7f232826
-Node: Parser Create Function\7f233475
-Node: Parser Delete Function\7f234295
-Node: Lexical\7f235062
-Node: Calling Convention\7f236505
-Node: Token Values\7f239480
-Node: Token Locations\7f240644
-Node: Pure Calling\7f241528
-Node: Error Reporting\7f243410
-Node: Action Features\7f247641
-Node: Internationalization\7f251942
-Node: Algorithm\7f254483
-Node: Lookahead\7f256913
-Node: Shift/Reduce\7f259088
-Node: Precedence\7f261982
-Node: Why Precedence\7f262638
-Node: Using Precedence\7f264474
-Node: Precedence Examples\7f265451
-Node: How Precedence\7f266161
-Node: Contextual Precedence\7f267318
-Node: Parser States\7f269096
-Node: Reduce/Reduce\7f270340
-Node: Mysterious Conflicts\7f273651
-Node: Tuning LR\7f277187
-Node: LR Table Construction\7f278495
-Node: Default Reductions\7f284183
-Node: LAC\7f289017
-Node: Unreachable States\7f294569
-Node: Generalized LR Parsing\7f296560
-Node: Memory Management\7f300934
-Node: Error Recovery\7f303166
-Node: Context Dependency\7f308421
-Node: Semantic Tokens\7f309270
-Node: Lexical Tie-ins\7f312262
-Node: Tie-in Recovery\7f313700
-Node: Debugging\7f315794
-Node: Understanding\7f316363
-Node: Tracing\7f326895
-Node: Enabling Traces\7f327339
-Node: Mfcalc Traces\7f330779
-Node: The YYPRINT Macro\7f336052
-Node: Invocation\7f337215
-Node: Bison Options\7f338630
-Node: Option Cross Key\7f347568
-Node: Yacc Library\7f349438
-Node: Other Languages\7f350263
-Node: C++ Parsers\7f350590
-Node: C++ Bison Interface\7f351087
-Node: C++ Semantic Values\7f352377
-Ref: C++ Semantic Values-Footnote-1\7f353319
-Node: C++ Location Values\7f353472
-Node: C++ position\7f354158
-Node: C++ location\7f356034
-Node: C++ Parser Interface\7f357755
-Node: C++ Scanner Interface\7f359778
-Node: A Complete C++ Example\7f360474
-Node: Calc++ --- C++ Calculator\7f361416
-Node: Calc++ Parsing Driver\7f361930
-Node: Calc++ Parser\7f365711
-Node: Calc++ Scanner\7f369535
-Node: Calc++ Top Level\7f372955
-Node: Java Parsers\7f373611
-Node: Java Bison Interface\7f374288
-Node: Java Semantic Values\7f376334
-Node: Java Location Values\7f377948
-Node: Java Parser Interface\7f379496
-Node: Java Scanner Interface\7f382734
-Node: Java Action Features\7f384918
-Node: Java Differences\7f387541
-Ref: Java Differences-Footnote-1\7f390108
-Node: Java Declarations Summary\7f390258
-Node: FAQ\7f394506
-Node: Memory Exhausted\7f395453
-Node: How Can I Reset the Parser\7f395766
-Node: Strings are Destroyed\7f398302
-Node: Implementing Gotos/Loops\7f399975
-Node: Multiple start-symbols\7f401258
-Node: Secure? Conform?\7f402805
-Node: I can't build Bison\7f403253
-Node: Where can I find help?\7f403967
-Node: Bug Reports\7f404760
-Node: More Languages\7f406220
-Node: Beta Testing\7f406578
-Node: Mailing Lists\7f407452
-Node: Table of Symbols\7f407663
-Node: Glossary\7f424779
-Node: Copying This Manual\7f433753
-Node: Bibliography\7f458888
-Node: Index\7f460770
+Node: Top\7f1059
+Node: Introduction\7f14596
+Node: Conditions\7f16269
+Node: Copying\7f18180
+Node: Concepts\7f55718
+Node: Language and Grammar\7f56910
+Node: Grammar in Bison\7f62845
+Node: Semantic Values\7f64759
+Node: Semantic Actions\7f66865
+Node: GLR Parsers\7f68039
+Node: Simple GLR Parsers\7f70784
+Node: Merging GLR Parses\7f77197
+Node: GLR Semantic Actions\7f81739
+Node: Compiler Requirements\7f83633
+Node: Locations\7f84385
+Node: Bison Parser\7f85838
+Node: Stages\7f88959
+Node: Grammar Layout\7f90247
+Node: Examples\7f91579
+Node: RPN Calc\7f92775
+Node: Rpcalc Declarations\7f93777
+Node: Rpcalc Rules\7f95705
+Node: Rpcalc Input\7f97438
+Node: Rpcalc Line\7f98909
+Node: Rpcalc Expr\7f100030
+Node: Rpcalc Lexer\7f101919
+Node: Rpcalc Main\7f104521
+Node: Rpcalc Error\7f104928
+Node: Rpcalc Generate\7f105961
+Node: Rpcalc Compile\7f107197
+Node: Infix Calc\7f108121
+Node: Simple Error Recovery\7f110835
+Node: Location Tracking Calc\7f112717
+Node: Ltcalc Declarations\7f113413
+Node: Ltcalc Rules\7f114502
+Node: Ltcalc Lexer\7f116367
+Node: Multi-function Calc\7f118690
+Node: Mfcalc Declarations\7f120266
+Node: Mfcalc Rules\7f122278
+Node: Mfcalc Symbol Table\7f123600
+Node: Exercises\7f130435
+Node: Grammar File\7f130949
+Node: Grammar Outline\7f131857
+Node: Prologue\7f132707
+Node: Prologue Alternatives\7f134511
+Node: Bison Declarations\7f144083
+Node: Grammar Rules\7f144511
+Node: Epilogue\7f144982
+Node: Symbols\7f146027
+Node: Rules\7f153102
+Node: Recursion\7f155522
+Node: Semantics\7f157197
+Node: Value Type\7f158305
+Node: Multiple Types\7f159140
+Node: Actions\7f160307
+Node: Action Types\7f164120
+Node: Mid-Rule Actions\7f165414
+Node: Tracking Locations\7f171697
+Node: Location Type\7f172361
+Node: Actions and Locations\7f173381
+Node: Location Default Action\7f175831
+Node: Named References\7f179329
+Node: Declarations\7f181965
+Node: Require Decl\7f183702
+Node: Token Decl\7f184021
+Node: Precedence Decl\7f186447
+Node: Union Decl\7f188457
+Node: Type Decl\7f190231
+Node: Initial Action Decl\7f191157
+Node: Destructor Decl\7f191943
+Node: Printer Decl\7f197435
+Node: Expect Decl\7f199731
+Node: Start Decl\7f201727
+Node: Pure Decl\7f202117
+Node: Push Decl\7f203867
+Node: Decl Summary\7f208348
+Node: %define Summary\7f216464
+Node: %code Summary\7f221971
+Node: Multiple Parsers\7f225689
+Node: Interface\7f228758
+Node: Parser Function\7f230076
+Node: Push Parser Function\7f232092
+Node: Pull Parser Function\7f232878
+Node: Parser Create Function\7f233527
+Node: Parser Delete Function\7f234347
+Node: Lexical\7f235114
+Node: Calling Convention\7f236557
+Node: Token Values\7f239532
+Node: Token Locations\7f240696
+Node: Pure Calling\7f241580
+Node: Error Reporting\7f243462
+Node: Action Features\7f247693
+Node: Internationalization\7f251994
+Node: Algorithm\7f254535
+Node: Lookahead\7f256965
+Node: Shift/Reduce\7f259140
+Node: Precedence\7f262034
+Node: Why Precedence\7f262690
+Node: Using Precedence\7f264526
+Node: Precedence Examples\7f265503
+Node: How Precedence\7f266213
+Node: Contextual Precedence\7f267370
+Node: Parser States\7f269148
+Node: Reduce/Reduce\7f270392
+Node: Mysterious Conflicts\7f273703
+Node: Tuning LR\7f277239
+Node: LR Table Construction\7f278547
+Node: Default Reductions\7f284235
+Node: LAC\7f289069
+Node: Unreachable States\7f294621
+Node: Generalized LR Parsing\7f296612
+Node: Memory Management\7f300986
+Node: Error Recovery\7f303218
+Node: Context Dependency\7f308473
+Node: Semantic Tokens\7f309322
+Node: Lexical Tie-ins\7f312314
+Node: Tie-in Recovery\7f313752
+Node: Debugging\7f315846
+Node: Understanding\7f316415
+Node: Tracing\7f326947
+Node: Enabling Traces\7f327391
+Node: Mfcalc Traces\7f330831
+Node: The YYPRINT Macro\7f336104
+Node: Invocation\7f337267
+Node: Bison Options\7f338682
+Node: Option Cross Key\7f347620
+Node: Yacc Library\7f349490
+Node: Other Languages\7f350315
+Node: C++ Parsers\7f350642
+Node: C++ Bison Interface\7f351139
+Node: C++ Semantic Values\7f352429
+Ref: C++ Semantic Values-Footnote-1\7f353371
+Node: C++ Location Values\7f353524
+Node: C++ position\7f354210
+Node: C++ location\7f356086
+Node: C++ Parser Interface\7f357807
+Node: C++ Scanner Interface\7f359830
+Node: A Complete C++ Example\7f360526
+Node: Calc++ --- C++ Calculator\7f361468
+Node: Calc++ Parsing Driver\7f361982
+Node: Calc++ Parser\7f365763
+Node: Calc++ Scanner\7f369589
+Node: Calc++ Top Level\7f373009
+Node: Java Parsers\7f373665
+Node: Java Bison Interface\7f374342
+Node: Java Semantic Values\7f376388
+Node: Java Location Values\7f378002
+Node: Java Parser Interface\7f379550
+Node: Java Scanner Interface\7f382788
+Node: Java Action Features\7f384972
+Node: Java Differences\7f387595
+Ref: Java Differences-Footnote-1\7f390162
+Node: Java Declarations Summary\7f390312
+Node: FAQ\7f394560
+Node: Memory Exhausted\7f395507
+Node: How Can I Reset the Parser\7f395820
+Node: Strings are Destroyed\7f398356
+Node: Implementing Gotos/Loops\7f400029
+Node: Multiple start-symbols\7f401312
+Node: Secure? Conform?\7f402859
+Node: I can't build Bison\7f403307
+Node: Where can I find help?\7f404021
+Node: Bug Reports\7f404814
+Node: More Languages\7f406274
+Node: Beta Testing\7f406632
+Node: Mailing Lists\7f407506
+Node: Table of Symbols\7f407717
+Node: Glossary\7f424833
+Node: Copying This Manual\7f433807
+Node: Bibliography\7f458942
+Node: Index of Terms\7f460833
 \1f
 End Tag Table
index 4f8d5d3..315608c 100644 (file)
@@ -1,8 +1,8 @@
 This is bison.info, produced by makeinfo version 4.13 from
 /Users/akim/src/gnu/bison-2.5/doc/bison.texi.
 
-This manual (18 July 2012) is for GNU Bison (version 2.5.91), the GNU
-parser generator.
+This manual (27 July 2012) is for GNU Bison (version 2.6.1-dirty), the
+GNU parser generator.
 
    Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
 Inc.
@@ -30,8 +30,8 @@ File: bison.info,  Node: Top,  Next: Introduction,  Up: (dir)
 Bison
 *****
 
-This manual (18 July 2012) is for GNU Bison (version 2.5.91), the GNU
-parser generator.
+This manual (27 July 2012) is for GNU Bison (version 2.6.1-dirty), the
+GNU parser generator.
 
    Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
 Inc.
@@ -74,7 +74,7 @@ Reference sections:
 * Glossary::            Basic concepts are explained.
 * Copying This Manual:: License for copying this manual.
 * Bibliography::        Publications cited in this manual.
-* Index::               Cross-references to the text.
+* Index of Terms::      Cross-references to the text.
 
  --- The Detailed Node Listing ---
 
@@ -362,7 +362,7 @@ Bison has grown more robust and evolved many other new features thanks
 to the hard work of a long list of volunteers.  For details, see the
 `THANKS' and `ChangeLog' files included in the Bison distribution.
 
-   This edition corresponds to version 2.5.91 of Bison.
+   This edition corresponds to version 2.6.1-dirty of Bison.
 
 \1f
 File: bison.info,  Node: Conditions,  Next: Copying,  Prev: Introduction,  Up: Top
@@ -4642,8 +4642,8 @@ code.
 
  -- Directive: %initial-action { CODE }
      Declare that the braced CODE must be invoked before parsing each
-     time `yyparse' is called.  The CODE may use `$$' and `@$' --
-     initial value and location of the lookahead -- and the
+     time `yyparse' is called.  The CODE may use `$$' (or `$<TAG>$')
+     and `@$' -- initial value and location of the lookahead -- and the
      `%parse-param'.
 
    For instance, if your locations use a file name, you may use
@@ -4677,9 +4677,9 @@ symbol is automatically discarded.
 
  -- Directive: %destructor { CODE } SYMBOLS
      Invoke the braced CODE whenever the parser discards one of the
-     SYMBOLS.  Within CODE, `$$' designates the semantic value
-     associated with the discarded symbol, and `@$' designates its
-     location.  The additional parser parameters are also available
+     SYMBOLS.  Within CODE, `$$' (or `$<TAG>$') designates the semantic
+     value associated with the discarded symbol, and `@$' designates
+     its location.  The additional parser parameters are also available
      (*note The Parser Function `yyparse': Parser Function.).
 
      When a symbol is listed among SYMBOLS, its `%destructor' is called
@@ -4789,10 +4789,10 @@ Discarded Symbols: Destructor Decl.).
  -- Directive: %printer { CODE } SYMBOLS
      Invoke the braced CODE whenever the parser displays one of the
      SYMBOLS.  Within CODE, `yyoutput' denotes the output stream (a
-     `FILE*' in C, and an `std::ostream&' in C++), `$$' designates the
-     semantic value associated with the symbol, and `@$' its location.
-     The additional parser parameters are also available (*note The
-     Parser Function `yyparse': Parser Function.).
+     `FILE*' in C, and an `std::ostream&' in C++), `$$' (or `$<TAG>$')
+     designates the semantic value associated with the symbol, and `@$'
+     its location.  The additional parser parameters are also available
+     (*note The Parser Function `yyparse': Parser Function.).
 
      The SYMBOLS are defined as for `%destructor' (*note Freeing
      Discarded Symbols: Destructor Decl.): they can be per-type (e.g.,
index 971e4ce..018cab7 100644 (file)
@@ -1,8 +1,8 @@
 This is bison.info, produced by makeinfo version 4.13 from
 /Users/akim/src/gnu/bison-2.5/doc/bison.texi.
 
-This manual (18 July 2012) is for GNU Bison (version 2.5.91), the GNU
-parser generator.
+This manual (27 July 2012) is for GNU Bison (version 2.6.1-dirty), the
+GNU parser generator.
 
    Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
 Inc.
@@ -1811,7 +1811,7 @@ changed several times, it is safer to require the version you designed
 the grammar for.
 
      %skeleton "lalr1.cc" /* -*- C++ -*- */
-     %require "2.5.91"
+     %require "2.6.1-dirty"
      %defines
      %define parser_class_name "calcxx_parser"
 
@@ -4060,7 +4060,7 @@ free software license, such as the GNU General Public License, to
 permit their use in free software.
 
 \1f
-File: bison.info,  Node: Bibliography,  Next: Index,  Prev: Copying This Manual,  Up: Top
+File: bison.info,  Node: Bibliography,  Next: Index of Terms,  Prev: Copying This Manual,  Up: Top
 
 Bibliography
 ************
@@ -4105,10 +4105,10 @@ Bibliography
      `http://www.cs.rhul.ac.uk/research/languages/publications/tomita_style_1.ps'
 
 \1f
-File: bison.info,  Node: Index,  Prev: Bibliography,  Up: Top
+File: bison.info,  Node: Index of Terms,  Prev: Bibliography,  Up: Top
 
-Index
-*****
+Index of Terms
+**************
 
 \0\b[index\0\b]
 * Menu:
index 6346bf0..ad60505 100644 (file)
@@ -110,7 +110,7 @@ Reference sections:
 * Glossary::            Basic concepts are explained.
 * Copying This Manual:: License for copying this manual.
 * Bibliography::        Publications cited in this manual.
-* Index::               Cross-references to the text.
+* Index of Terms::      Cross-references to the text.
 
 @detailmenu
  --- The Detailed Node Listing ---
@@ -4552,9 +4552,9 @@ code.
 @deffn {Directive} %initial-action @{ @var{code} @}
 @findex %initial-action
 Declare that the braced @var{code} must be invoked before parsing each time
-@code{yyparse} is called.  The @var{code} may use @code{$$} and
-@code{@@$} --- initial value and location of the lookahead --- and the
-@code{%parse-param}.
+@code{yyparse} is called.  The @var{code} may use @code{$$} (or
+@code{$<@var{tag}>$}) and @code{@@$} --- initial value and location of the
+lookahead --- and the @code{%parse-param}.
 @end deffn
 
 For instance, if your locations use a file name, you may use
@@ -4592,11 +4592,11 @@ symbol is automatically discarded.
 @deffn {Directive} %destructor @{ @var{code} @} @var{symbols}
 @findex %destructor
 Invoke the braced @var{code} whenever the parser discards one of the
-@var{symbols}.
-Within @var{code}, @code{$$} designates the semantic value associated
-with the discarded symbol, and @code{@@$} designates its location.
-The additional parser parameters are also available (@pxref{Parser Function, ,
-The Parser Function @code{yyparse}}).
+@var{symbols}.  Within @var{code}, @code{$$} (or @code{$<@var{tag}>$})
+designates the semantic value associated with the discarded symbol, and
+@code{@@$} designates its location.  The additional parser parameters are
+also available (@pxref{Parser Function, , The Parser Function
+@code{yyparse}}).
 
 When a symbol is listed among @var{symbols}, its @code{%destructor} is called a
 per-symbol @code{%destructor}.
@@ -4734,10 +4734,11 @@ Decl, , Freeing Discarded Symbols}).
 @c This is the same text as for %destructor.
 Invoke the braced @var{code} whenever the parser displays one of the
 @var{symbols}.  Within @var{code}, @code{yyoutput} denotes the output stream
-(a @code{FILE*} in C, and an @code{std::ostream&} in C++),
-@code{$$} designates the semantic value associated with the symbol, and
-@code{@@$} its location.  The additional parser parameters are also
-available (@pxref{Parser Function, , The Parser Function @code{yyparse}}).
+(a @code{FILE*} in C, and an @code{std::ostream&} in C++), @code{$$} (or
+@code{$<@var{tag}>$}) designates the semantic value associated with the
+symbol, and @code{@@$} its location.  The additional parser parameters are
+also available (@pxref{Parser Function, , The Parser Function
+@code{yyparse}}).
 
 The @var{symbols} are defined as for @code{%destructor} (@pxref{Destructor
 Decl, , Freeing Discarded Symbols}.): they can be per-type (e.g.,
@@ -11704,8 +11705,8 @@ London, Department of Computer Science, TR-00-12 (December 2000).
 @uref{http://www.cs.rhul.ac.uk/research/languages/publications/tomita_style_1.ps}
 @end table
 
-@node Index
-@unnumbered Index
+@node Index of Terms
+@unnumbered Index of Terms
 
 @printindex cp
 
index edd4072..a86638e 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 18 July 2012
+@set UPDATED 27 July 2012
 @set UPDATED-MONTH July 2012
-@set EDITION 2.6
-@set VERSION 2.6
+@set EDITION 2.6.2
+@set VERSION 2.6.2
index edd4072..a86638e 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 18 July 2012
+@set UPDATED 27 July 2012
 @set UPDATED-MONTH July 2012
-@set EDITION 2.6
-@set VERSION 2.6
+@set EDITION 2.6.2
+@set VERSION 2.6.2
index 8a2a1dc..44d57d2 100644 (file)
@@ -114,10 +114,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index 75a0ef2..a3eccef 100644 (file)
@@ -114,10 +114,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index f939ae7..313e201 100644 (file)
@@ -115,10 +115,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index 6c0f062..3889663 100644 (file)
@@ -1,4 +1,4 @@
-#line 9573 "../../doc/bison.texi"
+#line 9574 "../../doc/bison.texi"
 #include "calc++-driver.hh"
 #include "calc++-parser.hh"
 
index e652454..5dd79c1 100644 (file)
@@ -1,10 +1,10 @@
-#line 9484 "../../doc/bison.texi"
+#line 9485 "../../doc/bison.texi"
 #ifndef CALCXX_DRIVER_HH
 # define CALCXX_DRIVER_HH
 # include <string>
 # include <map>
 # include "calc++-parser.hh"
-#line 9500 "../../doc/bison.texi"
+#line 9501 "../../doc/bison.texi"
 // Tell Flex the lexer's prototype ...
 # define YY_DECL                                        \
   yy::calcxx_parser::token_type                         \
@@ -13,7 +13,7 @@
          calcxx_driver& driver)
 // ... and declare it for the parser's sake.
 YY_DECL;
-#line 9516 "../../doc/bison.texi"
+#line 9517 "../../doc/bison.texi"
 // Conducting the whole scanning and parsing of Calc++.
 class calcxx_driver
 {
@@ -24,17 +24,17 @@ public:
   std::map<std::string, int> variables;
 
   int result;
-#line 9534 "../../doc/bison.texi"
+#line 9535 "../../doc/bison.texi"
   // Handling the scanner.
   void scan_begin ();
   void scan_end ();
   bool trace_scanning;
-#line 9545 "../../doc/bison.texi"
+#line 9546 "../../doc/bison.texi"
   // Run the parser.  Return 0 on success.
   int parse (const std::string& f);
   std::string file;
   bool trace_parsing;
-#line 9559 "../../doc/bison.texi"
+#line 9560 "../../doc/bison.texi"
   // Error handling.
   void error (const yy::location& l, const std::string& m);
   void error (const std::string& m);
index 8bbafff..e5edc70 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.90.14-0e98.  */
+/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
 
 /* Skeleton implementation for Bison LALR(1) parsers in C++
    
@@ -48,7 +48,7 @@
 /* Unqualified %code blocks.  */
 
 /* Line 285 of lalr1.cc  */
-#line 9707 "../../doc/bison.texi"
+#line 9708 "../../doc/bison.texi"
 
 # include "calc++-driver.hh"
 
@@ -222,29 +222,29 @@ namespace yy {
     YYUSE (yyoutput);
     switch (yytype)
       {
-        case 4: /* "\"identifier\"" */
+        case 4: /* "identifier" */
 
 /* Line 422 of lalr1.cc  */
-#line 9736 "../../doc/bison.texi"
-       { yyoutput << *(yyvaluep->sval); };
+#line 9737 "../../doc/bison.texi"
+       { yyoutput << *((*yyvaluep).sval); };
 
 /* Line 422 of lalr1.cc  */
 #line 233 "../../../../examples/calc++/calc++-parser.cc"
        break;
-      case 5: /* "\"number\"" */
+      case 5: /* "number" */
 
 /* Line 422 of lalr1.cc  */
-#line 9739 "../../doc/bison.texi"
-       { yyoutput << (yyvaluep->ival); };
+#line 9740 "../../doc/bison.texi"
+       { yyoutput << ((*yyvaluep).ival); };
 
 /* Line 422 of lalr1.cc  */
 #line 242 "../../../../examples/calc++/calc++-parser.cc"
        break;
-      case 14: /* "exp" */
+      case 14: /* exp */
 
 /* Line 422 of lalr1.cc  */
-#line 9739 "../../doc/bison.texi"
-       { yyoutput << (yyvaluep->ival); };
+#line 9740 "../../doc/bison.texi"
+       { yyoutput << ((*yyvaluep).ival); };
 
 /* Line 422 of lalr1.cc  */
 #line 251 "../../../../examples/calc++/calc++-parser.cc"
@@ -279,11 +279,11 @@ namespace yy {
 
     switch (yytype)
       {
-        case 4: /* "\"identifier\"" */
+        case 4: /* "identifier" */
 
 /* Line 453 of lalr1.cc  */
-#line 9737 "../../doc/bison.texi"
-       { delete (yyvaluep->sval); };
+#line 9738 "../../doc/bison.texi"
+       { delete ((*yyvaluep).sval); };
 
 /* Line 453 of lalr1.cc  */
 #line 290 "../../../../examples/calc++/calc++-parser.cc"
@@ -374,13 +374,13 @@ namespace yy {
     YYCDEBUG << "Starting parse" << std::endl;
 
 
-    /* User initialization code.  */
-    
+/* User initialization code.  */
+
 /* Line 538 of lalr1.cc  */
-#line 9669 "../../doc/bison.texi"
+#line 9670 "../../doc/bison.texi"
 {
   // Initialize the initial location.
-  yylloc.begin.filename = yylloc.end.filename = &driver.file;
+  (yylloc).begin.filename = (yylloc).end.filename = &driver.file;
 }
 
 /* Line 538 of lalr1.cc  */
@@ -502,77 +502,77 @@ namespace yy {
       {
          case 2:
 
-/* Line 663 of lalr1.cc  */
-#line 9749 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9750 "../../doc/bison.texi"
     { driver.result = (yysemantic_stack_[(2) - (2)].ival); }
     break;
 
   case 3:
 
-/* Line 663 of lalr1.cc  */
-#line 9752 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9753 "../../doc/bison.texi"
     {}
     break;
 
   case 4:
 
-/* Line 663 of lalr1.cc  */
-#line 9753 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9754 "../../doc/bison.texi"
     {}
     break;
 
   case 5:
 
-/* Line 663 of lalr1.cc  */
-#line 9757 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9758 "../../doc/bison.texi"
     { driver.variables[*(yysemantic_stack_[(3) - (1)].sval)] = (yysemantic_stack_[(3) - (3)].ival); delete (yysemantic_stack_[(3) - (1)].sval); }
     break;
 
   case 6:
 
-/* Line 663 of lalr1.cc  */
-#line 9761 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9762 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) + (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 7:
 
-/* Line 663 of lalr1.cc  */
-#line 9762 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9763 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) - (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 8:
 
-/* Line 663 of lalr1.cc  */
-#line 9763 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9764 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) * (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 9:
 
-/* Line 663 of lalr1.cc  */
-#line 9764 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9765 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) / (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 10:
 
-/* Line 663 of lalr1.cc  */
-#line 9765 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9766 "../../doc/bison.texi"
     { (yyval.ival) = driver.variables[*(yysemantic_stack_[(1) - (1)].sval)]; delete (yysemantic_stack_[(1) - (1)].sval); }
     break;
 
   case 11:
 
-/* Line 663 of lalr1.cc  */
-#line 9766 "../../doc/bison.texi"
+/* Line 661 of lalr1.cc  */
+#line 9767 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); }
     break;
 
 
 
-/* Line 663 of lalr1.cc  */
+/* Line 661 of lalr1.cc  */
 #line 577 "../../../../examples/calc++/calc++-parser.cc"
        default:
           break;
@@ -968,8 +968,8 @@ namespace yy {
   const unsigned short int
   calcxx_parser::yyrline_[] =
   {
-         0,  9749,  9749,  9752,  9753,  9756,  9761,  9762,  9763,  9764,
-    9765,  9766
+         0,  9750,  9750,  9753,  9754,  9757,  9762,  9763,  9764,  9765,
+    9766,  9767
   };
 
   // Print the state stack on the debug stream.
@@ -1058,13 +1058,13 @@ namespace yy {
 
 } // yy
 
-/* Line 1108 of lalr1.cc  */
+/* Line 1106 of lalr1.cc  */
 #line 1063 "../../../../examples/calc++/calc++-parser.cc"
 
-/* Line 1109 of lalr1.cc  */
-#line 9767 "../../doc/bison.texi"
+/* Line 1107 of lalr1.cc  */
+#line 9768 "../../doc/bison.texi"
 
-#line 9776 "../../doc/bison.texi"
+#line 9777 "../../doc/bison.texi"
 void
 yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
                           const std::string& m)
index 2fc39e8..b44eda3 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.90.14-0e98.  */
+/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
 
 /* Skeleton interface for Bison LALR(1) parsers in C++
    
@@ -43,7 +43,7 @@
 /* "%code requires" blocks.  */
 
 /* Line 36 of lalr1.cc  */
-#line 9641 "../../doc/bison.texi"
+#line 9642 "../../doc/bison.texi"
 
 # include <string>
 class calcxx_driver;
@@ -80,7 +80,7 @@ namespace yy {
     {
 
 /* Line 36 of lalr1.cc  */
-#line 9694 "../../doc/bison.texi"
+#line 9695 "../../doc/bison.texi"
 
   int          ival;
   std::string *sval;
index 1a34876..a97d500 100644 (file)
@@ -1,50 +1,50 @@
-#line 9623 "../../doc/bison.texi"
+#line 9624 "../../doc/bison.texi"
 %skeleton "lalr1.cc" /* -*- C++ -*- */
-%require "2.5.90.14-0e98"
+%require "2.6.29-ca7b"
 %defines
 %define parser_class_name "calcxx_parser"
-#line 9641 "../../doc/bison.texi"
+#line 9642 "../../doc/bison.texi"
 %code requires {
 # include <string>
 class calcxx_driver;
 }
-#line 9654 "../../doc/bison.texi"
+#line 9655 "../../doc/bison.texi"
 // The parsing context.
 %parse-param { calcxx_driver& driver }
 %lex-param   { calcxx_driver& driver }
-#line 9667 "../../doc/bison.texi"
+#line 9668 "../../doc/bison.texi"
 %locations
 %initial-action
 {
   // Initialize the initial location.
   @$.begin.filename = @$.end.filename = &driver.file;
 };
-#line 9682 "../../doc/bison.texi"
+#line 9683 "../../doc/bison.texi"
 %debug
 %error-verbose
-#line 9692 "../../doc/bison.texi"
+#line 9693 "../../doc/bison.texi"
 // Symbols.
 %union
 {
   int          ival;
   std::string *sval;
 };
-#line 9707 "../../doc/bison.texi"
+#line 9708 "../../doc/bison.texi"
 %code {
 # include "calc++-driver.hh"
 }
-#line 9722 "../../doc/bison.texi"
+#line 9723 "../../doc/bison.texi"
 %token        END      0 "end of file"
 %token        ASSIGN     ":="
 %token <sval> IDENTIFIER "identifier"
 %token <ival> NUMBER     "number"
 %type  <ival> exp
-#line 9736 "../../doc/bison.texi"
+#line 9737 "../../doc/bison.texi"
 %printer    { yyoutput << *$$; } "identifier"
 %destructor { delete $$; } "identifier"
 
 %printer    { yyoutput << $$; } <ival>
-#line 9747 "../../doc/bison.texi"
+#line 9748 "../../doc/bison.texi"
 %%
 %start unit;
 unit: assignments exp  { driver.result = $2; };
@@ -66,7 +66,7 @@ exp: exp '+' exp   { $$ = $1 + $3; }
    | "identifier"  { $$ = driver.variables[*$1]; delete $1; }
    | "number"      { $$ = $1; };
 %%
-#line 9776 "../../doc/bison.texi"
+#line 9777 "../../doc/bison.texi"
 void
 yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
                           const std::string& m)
index d0a61c6..744b557 100644 (file)
@@ -17,7 +17,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 36
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -78,7 +78,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -109,6 +108,8 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 /* %endif */
@@ -195,8 +196,13 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 /* %if-not-reentrant */
-extern int yyleng;
+extern yy_size_t yyleng;
 /* %endif */
 
 /* %if-c-only */
@@ -227,11 +233,6 @@ extern FILE *yyin, *yyout;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -254,7 +255,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -338,8 +339,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
+yy_size_t yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -370,7 +371,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 /* %endif */
 
@@ -405,7 +406,7 @@ void yyfree (void *  );
 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
 /* Begin user sect3 */
 
-#define yywrap(n) 1
+#define yywrap() 1
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
@@ -564,7 +565,7 @@ char *yytext;
 #define yyterminate() return token::END
 #line 30 "calc++-scanner.ll"
 # define YY_USER_ACTION  yylloc->columns (yyleng);
-#line 568 "calc++-scanner.cc"
+#line 569 "calc++-scanner.cc"
 
 #define INITIAL 0
 
@@ -616,7 +617,7 @@ FILE *yyget_out (void );
 
 void yyset_out  (FILE * out_str  );
 
-int yyget_leng (void );
+yy_size_t yyget_leng (void );
 
 char *yyget_text (void );
 
@@ -682,7 +683,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -697,7 +698,7 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -809,7 +810,7 @@ YY_DECL
 
   yylloc->step ();
 
-#line 813 "calc++-scanner.cc"
+#line 814 "calc++-scanner.cc"
 
        if ( !(yy_init) )
                {
@@ -971,7 +972,7 @@ YY_RULE_SETUP
 #line 56 "calc++-scanner.ll"
 ECHO;
        YY_BREAK
-#line 975 "calc++-scanner.cc"
+#line 976 "calc++-scanner.cc"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -1171,21 +1172,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1216,7 +1217,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -1324,7 +1325,7 @@ static int yy_get_next_buffer (void)
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 16);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -1359,7 +1360,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -1543,17 +1544,6 @@ static void yy_load_buffer_state  (void)
        yyfree((void *) b  );
 }
 
-/* %if-c-only */
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a yyrestart() or at EOF.
@@ -1696,7 +1686,7 @@ static void yyensure_buffer_stack (void)
 /* %if-c++-only */
 /* %endif */
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -1794,12 +1784,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 /* %if-c-only */
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -1895,7 +1885,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t yyget_leng  (void)
 {
         return yyleng;
 }
index 20307ed..fc3ee29 100644 (file)
@@ -1,4 +1,4 @@
-#line 9923 "../../doc/bison.texi"
+#line 9924 "../../doc/bison.texi"
 #include <iostream>
 #include "calc++-driver.hh"
 
index 6826e52..a5aa58a 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.90.14-0e98.  */
+/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
 
 /* Locations for Bison parsers in C++
    
index 4a493cb..83db8b9 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.90.14-0e98.  */
+/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
 
 /* Positions for Bison parsers in C++
    
index 9cbb264..f652574 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.90.14-0e98.  */
+/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
 
 /* Stack handling for Bison parsers in C++
    
index 1ba8fb5..2a60453 100644 (file)
@@ -53,7 +53,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libbison --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl argmatch assert c-strcase calloc-posix close closeout config-h configmake dirname error extensions fdl fopen-safer fprintf-posix getopt-gnu gettext git-version-gen gitlog-to-changelog gpl-3.0 hash inttypes isnan javacomp-script javaexec-script ldexpl malloc-gnu mbschr mbsrchr mbswidth obstack perror printf-posix progname quote quotearg readme-release realloc-posix snprintf-posix spawn-pipe sprintf-posix stdbool stpcpy strdup-posix strerror strtoul strverscmp unistd unistd-safer unlocked-io unsetenv update-copyright verify vsnprintf-posix vsprintf-posix warnings xalloc xalloc-die xmemdup0 xstrndup
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libbison --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl argmatch assert c-strcase calloc-posix close closeout config-h configmake dirname error extensions fdl fopen-safer fprintf-posix getopt-gnu gettext git-version-gen gitlog-to-changelog gpl-3.0 hash inttypes isnan javacomp-script javaexec-script ldexpl malloc-gnu mbschr mbsrchr mbswidth obstack obstack-printf perror printf-posix progname quote quotearg readme-release realloc-posix snprintf-posix spawn-pipe sprintf-posix stdbool stpcpy strdup-posix strerror strtoul strverscmp unistd unistd-safer unlocked-io unsetenv update-copyright verify vsnprintf-posix vsprintf-posix warnings xalloc xalloc-die xmemdup0 xstrndup
 
 VPATH = @srcdir@
 am__make_dryrun = \
@@ -144,10 +144,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
@@ -1516,17 +1516,17 @@ EXTRA_DIST = alloca.in.h $(top_srcdir)/build-aux/announce-gen \
        ref-add.sin ref-del.sin $(top_srcdir)/maint.mk malloc.c \
        malloc.c math.in.h mbchar.h mbrtowc.c mbsinit.c memchr.c \
        memchr.valgrind msvc-inval.c msvc-inval.h msvc-nothrow.c \
-       msvc-nothrow.h obstack.c obstack.h open.c pathmax.h perror.c \
-       spawn_int.h spawni.c spawn_faction_addclose.c spawn_int.h \
-       spawn_faction_adddup2.c spawn_int.h spawn_faction_addopen.c \
-       spawn_int.h spawn_faction_destroy.c spawn_faction_init.c \
-       spawn_int.h spawnattr_destroy.c spawnattr_init.c \
-       spawnattr_setflags.c spawnattr_setsigmask.c spawnp.c \
-       printf-frexp.h printf-frexp.c printf-frexpl.h printf.c quote.h \
-       quote.h quotearg.h raise.c rawmemchr.c rawmemchr.valgrind \
-       $(top_srcdir)/README-release realloc.c sched.in.h \
-       sig-handler.h sigaction.c signal.in.h float+.h signbitd.c \
-       signbitf.c signbitl.c sigprocmask.c \
+       msvc-nothrow.h obstack.c obstack.h obstack_printf.c open.c \
+       pathmax.h perror.c spawn_int.h spawni.c \
+       spawn_faction_addclose.c spawn_int.h spawn_faction_adddup2.c \
+       spawn_int.h spawn_faction_addopen.c spawn_int.h \
+       spawn_faction_destroy.c spawn_faction_init.c spawn_int.h \
+       spawnattr_destroy.c spawnattr_init.c spawnattr_setflags.c \
+       spawnattr_setsigmask.c spawnp.c printf-frexp.h printf-frexp.c \
+       printf-frexpl.h printf.c quote.h quote.h quotearg.h raise.c \
+       rawmemchr.c rawmemchr.valgrind $(top_srcdir)/README-release \
+       realloc.c sched.in.h sig-handler.h sigaction.c signal.in.h \
+       float+.h signbitd.c signbitf.c signbitl.c sigprocmask.c \
        $(top_srcdir)/build-aux/snippet/_Noreturn.h \
        $(top_srcdir)/build-aux/snippet/arg-nonnull.h \
        $(top_srcdir)/build-aux/snippet/c++defs.h \
@@ -1586,8 +1586,9 @@ EXTRA_libbison_a_SOURCES = calloc.c close.c stripslash.c dup2.c \
        getopt.c getopt1.c isnan.c isnand.c isnan.c isnand.c isnan.c \
        isnanf.c isnan.c isnanf.c isnan.c isnanl.c isnan.c isnanl.c \
        iswblank.c ldexpl.c malloc.c malloc.c mbrtowc.c mbsinit.c \
-       memchr.c msvc-inval.c msvc-nothrow.c obstack.c open.c perror.c \
-       spawni.c spawn_faction_addclose.c spawn_faction_adddup2.c \
+       memchr.c msvc-inval.c msvc-nothrow.c obstack.c \
+       obstack_printf.c open.c perror.c spawni.c \
+       spawn_faction_addclose.c spawn_faction_adddup2.c \
        spawn_faction_addopen.c spawn_faction_destroy.c \
        spawn_faction_init.c spawnattr_destroy.c spawnattr_init.c \
        spawnattr_setflags.c spawnattr_setsigmask.c spawnp.c \
@@ -1797,6 +1798,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obstack.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obstack_printf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/open.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/perror.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pipe-safer.Po@am__quote@
index c793820..38f6c41 100644 (file)
 /* Define to 1 when the gnulib module memchr should be tested. */
 #undef GNULIB_TEST_MEMCHR
 
+/* Define to 1 when the gnulib module obstack-printf should be tested. */
+#undef GNULIB_TEST_OBSTACK_PRINTF
+
 /* Define to 1 when the gnulib module open should be tested. */
 #undef GNULIB_TEST_OPEN
 
    otherwise. */
 #undef HAVE_DECL_MBSWIDTH_IN_WCHAR_H
 
+/* Define to 1 if you have the declaration of `obstack_printf', and to 0 if
+   you don't. */
+#undef HAVE_DECL_OBSTACK_PRINTF
+
 /* Define to 1 if you have the declaration of `program_invocation_name', and
    to 0 if you don't. */
 #undef HAVE_DECL_PROGRAM_INVOCATION_NAME
 /* Define to 1 if libc includes obstacks. */
 #undef HAVE_OBSTACK
 
+/* Define to 1 if you have the `obstack_printf' function. */
+#undef HAVE_OBSTACK_PRINTF
+
 /* Define to 1 if you have the <paths.h> header file. */
 #undef HAVE_PATHS_H
 
index 5150c68..5ad6766 100644 (file)
@@ -21,7 +21,7 @@
 # the same distribution terms as the rest of that program.
 #
 # Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libbison --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl argmatch assert c-strcase calloc-posix close closeout config-h configmake dirname error extensions fdl fopen-safer fprintf-posix getopt-gnu gettext git-version-gen gitlog-to-changelog gpl-3.0 hash inttypes isnan javacomp-script javaexec-script ldexpl malloc-gnu mbschr mbsrchr mbswidth obstack perror printf-posix progname quote quotearg readme-release realloc-posix snprintf-posix spawn-pipe sprintf-posix stdbool stpcpy strdup-posix strerror strtoul strverscmp unistd unistd-safer unlocked-io unsetenv update-copyright verify vsnprintf-posix vsprintf-posix warnings xalloc xalloc-die xmemdup0 xstrndup
+# Reproduce by: gnulib-tool --import --dir=. --local-dir=gl --lib=libbison --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --makefile-name=gnulib.mk --no-conditional-dependencies --no-libtool --macro-prefix=gl argmatch assert c-strcase calloc-posix close closeout config-h configmake dirname error extensions fdl fopen-safer fprintf-posix getopt-gnu gettext git-version-gen gitlog-to-changelog gpl-3.0 hash inttypes isnan javacomp-script javaexec-script ldexpl malloc-gnu mbschr mbsrchr mbswidth obstack obstack-printf perror printf-posix progname quote quotearg readme-release realloc-posix snprintf-posix spawn-pipe sprintf-posix stdbool stpcpy strdup-posix strerror strtoul strverscmp unistd unistd-safer unlocked-io unsetenv update-copyright verify vsnprintf-posix vsprintf-posix warnings xalloc xalloc-die xmemdup0 xstrndup
 
 
 MOSTLYCLEANFILES += core *.stackdump
@@ -1181,6 +1181,15 @@ EXTRA_libbison_a_SOURCES += obstack.c
 
 ## end   gnulib module obstack
 
+## begin gnulib module obstack-printf
+
+
+EXTRA_DIST += obstack_printf.c
+
+EXTRA_libbison_a_SOURCES += obstack_printf.c
+
+## end   gnulib module obstack-printf
+
 ## begin gnulib module open
 
 
diff --git a/lib/obstack_printf.c b/lib/obstack_printf.c
new file mode 100644 (file)
index 0000000..fba0536
--- /dev/null
@@ -0,0 +1,91 @@
+/* Formatted output to obstacks.
+   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+
+/* Specification.  */
+#include <stdio.h>
+
+#include "obstack.h"
+#include "vasnprintf.h"
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+/* Grow an obstack with formatted output.  Return the number of bytes
+   added to OBS.  No trailing nul byte is added, and the object should
+   be closed with obstack_finish before use.
+
+   Upon memory allocation error, call obstack_alloc_failed_handler.
+   Upon other error, return -1.  */
+int
+obstack_printf (struct obstack *obs, const char *format, ...)
+{
+  va_list args;
+  int result;
+
+  va_start (args, format);
+  result = obstack_vprintf (obs, format, args);
+  va_end (args);
+  return result;
+}
+
+/* Grow an obstack with formatted output.  Return the number of bytes
+   added to OBS.  No trailing nul byte is added, and the object should
+   be closed with obstack_finish before use.
+
+   Upon memory allocation error, call obstack_alloc_failed_handler.
+   Upon other error, return -1.  */
+int
+obstack_vprintf (struct obstack *obs, const char *format, va_list args)
+{
+  /* If we are close to the end of the current obstack chunk, use a
+     stack-allocated buffer and copy, to reduce the likelihood of a
+     small-size malloc.  Otherwise, print directly into the
+     obstack.  */
+  enum { CUTOFF = 1024 };
+  char buf[CUTOFF];
+  char *base = obstack_next_free (obs);
+  size_t len = obstack_room (obs);
+  char *str;
+
+  if (len < CUTOFF)
+    {
+      base = buf;
+      len = CUTOFF;
+    }
+  str = vasnprintf (base, &len, format, args);
+  if (!str)
+    {
+      if (errno == ENOMEM)
+        obstack_alloc_failed_handler ();
+      return -1;
+    }
+  if (str == base && str != buf)
+    /* The output was already computed in place, but we need to
+       account for its size.  */
+    obstack_blank_fast (obs, len);
+  else
+    {
+      /* The output exceeded available obstack space or we used buf;
+         copy the resulting string.  */
+      obstack_grow (obs, str, len);
+      if (str != buf)
+        free (str);
+    }
+  return len;
+}
index cef14ad..0c320b1 100644 (file)
        extern int (*dummy (void)) [sizeof (struct {...})];
 
    * GCC warns about duplicate declarations of the dummy function if
-     -Wredundant_decls is used.  GCC 4.3 and later have a builtin
+     -Wredundant-decls is used.  GCC 4.3 and later have a builtin
      __COUNTER__ macro that can let us generate unique identifiers for
      each dummy function, to suppress this warning.
 
      which do not support _Static_assert, also do not warn about the
      last declaration mentioned above.
 
+   * GCC warns if -Wnested-externs is enabled and verify() is used
+     within a function body; but inside a function, you can always
+     arrange to use verify_expr() instead.
+
    * In C++, any struct definition inside sizeof is invalid.
      Use a template type to work around the problem.  */
 
index 2df073a..de7153b 100644 (file)
@@ -137,6 +137,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module multiarch:
   # Code from module nocrash:
   # Code from module obstack:
+  # Code from module obstack-printf:
   # Code from module open:
   # Code from module pathmax:
   # Code from module perror:
@@ -499,6 +500,11 @@ fi
 gl_MULTIARCH
 AC_FUNC_OBSTACK
 dnl Note: AC_FUNC_OBSTACK does AC_LIBSOURCES([obstack.h, obstack.c]).
+gl_FUNC_OBSTACK_PRINTF
+if test $ac_cv_func_obstack_printf = no || test $REPLACE_OBSTACK_PRINTF = 1; then
+  AC_LIBOBJ([obstack_printf])
+fi
+gl_STDIO_MODULE_INDICATOR([obstack-printf])
 gl_FUNC_OPEN
 if test $REPLACE_OPEN = 1; then
   AC_LIBOBJ([open])
@@ -998,6 +1004,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/msvc-nothrow.h
   lib/obstack.c
   lib/obstack.h
+  lib/obstack_printf.c
   lib/open.c
   lib/pathmax.h
   lib/perror.c
@@ -1201,6 +1208,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/multiarch.m4
   m4/nls.m4
   m4/nocrash.m4
+  m4/obstack-printf.m4
   m4/off_t.m4
   m4/open.m4
   m4/pathmax.m4
diff --git a/m4/obstack-printf.m4 b/m4/obstack-printf.m4
new file mode 100644 (file)
index 0000000..a57513e
--- /dev/null
@@ -0,0 +1,41 @@
+# obstack-printf.m4 serial 4
+dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Eric Blake.
+dnl Test whether obstack_printf() exists.  For now, we assume that
+dnl obstack_vprintf behaves identically, so we only test for one.
+
+AC_DEFUN([gl_FUNC_OBSTACK_PRINTF],
+[
+  dnl Persuade glibc <stdio.h> to declare obstack_printf(), obstack_vprintf().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  AC_CHECK_FUNCS_ONCE([obstack_printf])
+  if test $ac_cv_func_obstack_printf = no ; then
+    gl_REPLACE_OBSTACK_PRINTF
+  fi
+
+  gl_DECL_OBSTACK_PRINTF
+])
+
+AC_DEFUN([gl_REPLACE_OBSTACK_PRINTF],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+  if test $ac_cv_func_obstack_printf = yes; then
+    REPLACE_OBSTACK_PRINTF=1
+  fi
+])
+
+dnl Ensure obstack_printf() and obstack_vprintf() are declared
+dnl (whether or not they are being replaced).
+AC_DEFUN([gl_DECL_OBSTACK_PRINTF],
+[
+  AC_CHECK_DECLS_ONCE([obstack_printf])
+  if test $ac_cv_have_decl_obstack_printf = no; then
+    HAVE_DECL_OBSTACK_PRINTF=0
+  fi
+])
index d5af750..bdc4502 100644 (file)
--- a/maint.mk
+++ b/maint.mk
@@ -353,8 +353,9 @@ sc_prohibit_strncpy:
 #  | xargs --no-run-if-empty \
 #      perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/'
 sc_prohibit_magic_number_exit:
-       @prohibit='(^|[^.])\<(usage|exit) ?\([0-9]|\<error ?\([1-9][0-9]*,'     \
-       halt='use EXIT_* values rather than magic number'                       \
+       @prohibit='(^|[^.])\<(usage|exit|error) ?\(-?[0-9]+[,)]'        \
+       exclude='error ?\(0,'                                           \
+       halt='use EXIT_* values rather than magic number'               \
          $(_sc_search_regexp)
 
 # Using EXIT_SUCCESS as the first argument to error is misleading,
@@ -1066,7 +1067,7 @@ sc_makefile_at_at_check:
          && { echo '$(ME): use $$(...), not @...@' 1>&2; exit 1; } || :
 
 news-check: NEWS
-       if sed -n $(news-check-lines-spec)p $<                          \
+       $(AM_V_GEN)if sed -n $(news-check-lines-spec)p $<               \
            | grep -E $(news-check-regexp) >/dev/null; then             \
          :;                                                            \
        else                                                            \
@@ -1238,8 +1239,8 @@ sc_vulnerable_makefile_CVE-2012-3386:
          $(_sc_search_regexp)
 
 vc-diff-check:
-       (unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
-       if test -s vc-diffs; then                               \
+       $(AM_V_GEN)(unset CDPATH; cd $(srcdir) && $(VC) diff) > vc-diffs || :
+       $(AM_V_at)if test -s vc-diffs; then                     \
          cat vc-diffs;                                         \
          echo "Some files are locally modified:" 1>&2;         \
          exit 1;                                               \
@@ -1255,10 +1256,11 @@ bootstrap-tools ?= autoconf,automake,gnulib
 
 # If it's not already specified, derive the GPG key ID from
 # the signed tag we've just applied to mark this release.
-gpg_key_ID ?= \
-  $$(git cat-file tag v$(VERSION) \
-     | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null \
-     | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
+gpg_key_ID ?=                                                          \
+  $$(cd $(srcdir)                                                      \
+     && git cat-file tag v$(VERSION)                                   \
+        | gpgv --status-fd 1 --keyring /dev/null - - 2>/dev/null       \
+        | awk '/^\[GNUPG:\] ERRSIG / {print $$3; exit}')
 
 translation_project_ ?= coordinator@translationproject.org
 
@@ -1277,7 +1279,7 @@ else
 endif
 
 announcement: NEWS ChangeLog $(rel-files)
-       @$(srcdir)/$(_build-aux)/announce-gen                           \
+       $(AM_V_GEN)$(srcdir)/$(_build-aux)/announce-gen                 \
            --mail-headers='$(announcement_mail_headers_)'              \
            --release-type=$(RELEASE_TYPE)                              \
            --package=$(PACKAGE)                                        \
@@ -1292,6 +1294,12 @@ announcement: NEWS ChangeLog $(rel-files)
            --no-print-checksums                                        \
            $(addprefix --url-dir=, $(url_dir_list))
 
+.PHONY: release-commit
+release-commit:
+       $(AM_V_GEN)cd $(srcdir)                         \
+         && $(_build-aux)/do-release-commit-and-tag    \
+              -C $(abs_builddir) $(RELEASE)
+
 ## ---------------- ##
 ## Updating files.  ##
 ## ---------------- ##
@@ -1319,7 +1327,7 @@ endef
 
 .PHONY: no-submodule-changes
 no-submodule-changes:
-       if test -d $(srcdir)/.git; then                                 \
+       $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
          diff=$$(cd $(srcdir) && git submodule -q foreach              \
                  git diff-index --name-only HEAD)                      \
            || exit 1;                                                  \
@@ -1358,16 +1366,16 @@ check: $(gl_public_submodule_commit)
 .PHONY: alpha beta stable
 ALL_RECURSIVE_TARGETS += alpha beta stable
 alpha beta stable: $(local-check) writable-files $(submodule-checks)
-       test $@ = stable                                                \
+       $(AM_V_GEN)test $@ = stable                                     \
          && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$'         \
               || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
          || :
-       $(MAKE) vc-diff-check
-       $(MAKE) news-check
-       $(MAKE) distcheck
-       $(MAKE) dist
-       $(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
-       $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+       $(AM_V_at)$(MAKE) vc-diff-check
+       $(AM_V_at)$(MAKE) news-check
+       $(AM_V_at)$(MAKE) distcheck
+       $(AM_V_at)$(MAKE) dist
+       $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
+       $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
 
 # Override this in cfg.mk if you follow different procedures.
 release-prep-hook ?= release-prep
@@ -1375,19 +1383,21 @@ release-prep-hook ?= release-prep
 gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?]
 .PHONY: release-prep
 release-prep:
-       case $$RELEASE_TYPE in alpha|beta|stable) ;; \
+       $(AM_V_GEN)case $$RELEASE_TYPE in alpha|beta|stable) ;; \
          *) echo "invalid RELEASE_TYPE: $$RELEASE_TYPE" 1>&2; exit 1;; esac
-       $(MAKE) --no-print-directory -s announcement > ~/announce-$(my_distdir)
-       if test -d $(release_archive_dir); then                 \
+       $(AM_V_at)$(MAKE) --no-print-directory -s announcement \
+         > ~/announce-$(my_distdir)
+       $(AM_V_at)if test -d $(release_archive_dir); then       \
          ln $(rel-files) $(release_archive_dir);               \
          chmod a-w $(rel-files);                               \
        fi
-       echo $(VERSION) > $(prev_version_file)
-       $(MAKE) update-NEWS-hash
-       perl -pi -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"' $(srcdir)/NEWS
-       $(emit-commit-log) > .ci-msg
-       $(VC) commit -F .ci-msg -a
-       rm .ci-msg
+       $(AM_V_at)echo $(VERSION) > $(prev_version_file)
+       $(AM_V_at)$(MAKE) update-NEWS-hash
+       $(AM_V_at)perl -pi                                              \
+         -e '$$. == 3 and print "$(gl_noteworthy_news_)\n\n\n"'        \
+         $(srcdir)/NEWS
+       $(AM_V_at)msg=$$($(emit-commit-log)) || exit 1;         \
+       cd $(srcdir) && $(VC) commit -m "$$msg" -a
 
 # Override this with e.g., -s $(srcdir)/some_other_name.texi
 # if the default $(PACKAGE)-derived name doesn't apply.
@@ -1395,14 +1405,20 @@ gendocs_options_ ?=
 
 .PHONY: web-manual
 web-manual:
-       @test -z "$(manual_title)" \
+       $(AM_V_GEN)test -z "$(manual_title)" \
          && { echo define manual_title in cfg.mk 1>&2; exit 1; } || :
-       @cd '$(srcdir)/doc'; \
+       $(AM_V_at)cd '$(srcdir)/doc'; \
          $(SHELL) ../$(_build-aux)/gendocs.sh $(gendocs_options_) \
             -o '$(abs_builddir)/doc/manual' \
             --email $(PACKAGE_BUGREPORT) $(PACKAGE) \
            "$(PACKAGE_NAME) - $(manual_title)"
-       @echo " *** Upload the doc/manual directory to web-cvs."
+       $(AM_V_at)echo " *** Upload the doc/manual directory to web-cvs."
+
+.PHONY: web-manual-update
+web-manual-update:
+       $(AM_V_GEN)cd $(srcdir) \
+         && $(_build-aux)/gnu-web-doc-update -C $(abs_builddir)
+
 
 # Code Coverage
 
@@ -1428,6 +1444,31 @@ gen-coverage:
 
 coverage: init-coverage build-coverage gen-coverage
 
+# Some projects carry local adjustments for gnulib modules via patches in
+# a gnulib patch directory whose default name is gl/ (defined in bootstrap
+# via local_gl_dir=gl).  Those patches become stale as the originals evolve
+# in gnulib.  Use this rule to refresh any stale patches.  It applies each
+# patch to the original in $(gnulib_dir) and uses the temporary result to
+# generate a fuzz-free .diff file.  If you customize the name of your local
+# gnulib patch directory via bootstrap.conf, this rule detects that name.
+# Run this from a non-VPATH (i.e., srcdir) build directory.
+.PHONY: refresh-gnulib-patches
+refresh-gnulib-patches:
+       gl=gl;                                                          \
+       if test -f bootstrap.conf; then                                 \
+         t=$$(perl -lne '/^\s*local_gl_dir=(\S+)/ and $$d=$$1;'        \
+              -e 'END{defined $$d and print $$d}' bootstrap.conf);     \
+         test -n "$$t" && gl=$$t;                                      \
+       fi;                                                             \
+       for diff in $$(cd $$gl; git ls-files | grep '\.diff$$'); do     \
+         b=$$(printf %s "$$diff"|sed 's/\.diff$$//');                  \
+         VERSION_CONTROL=none                                          \
+           patch "$(gnulib_dir)/$$b" "$$gl/$$diff" || exit 1;          \
+         ( cd $(gnulib_dir) || exit 1;                                 \
+           git diff "$$b" > "../$$gl/$$diff";                          \
+           git checkout $$b ) || exit 1;                               \
+       done
+
 # Update gettext files.
 PACKAGE ?= $(shell basename $(PWD))
 PO_DOMAIN ?= $(PACKAGE)
@@ -1461,7 +1502,7 @@ update-copyright-env ?=
 # in the file .x-update-copyright.
 .PHONY: update-copyright
 update-copyright:
-       grep -l -w Copyright                                             \
+       $(AM_V_GEN)grep -l -w Copyright                                  \
          $$(export VC_LIST_EXCEPT_DEFAULT=COPYING && $(VC_LIST_EXCEPT)) \
          | $(update-copyright-env) xargs $(srcdir)/$(_build-aux)/$@
 
index 1602e0c..29d8a49 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.6\n"
+"Project-Id-Version: bison 2.6.2\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -290,38 +290,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr ""
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr ""
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr ""
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr ""
@@ -501,107 +501,102 @@ msgstr[1] ""
 msgid "start symbol %s does not derive any sentence"
 msgstr ""
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr ""
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr ""
@@ -676,17 +671,17 @@ msgstr ""
 msgid "missing %s at end of line"
 msgstr ""
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 6bae543..16a676c 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index 6e0c1cd..e858397 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.875d\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2004-05-22 11:14+0200\n"
 "Last-Translator: Byrial Ole Jensen <byrial@image.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
@@ -321,38 +321,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regel aldrig reduceret på grund af konflikter"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "symbol %s redefineret"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "fejlagtig værdi: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "manglende identifikator i parameterdeklaration"
@@ -537,107 +537,102 @@ msgstr[1] "ingen regler i inddatagrammatikken"
 msgid "start symbol %s does not derive any sentence"
 msgstr "startsymbolet %s genererer ingen sætninger"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "heltal uden for gyldigshedsområdet: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ugyldigt direktiv: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinition af præcedens for %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "flertydigt argument %s til %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d for \"%s\" har ingen erklæret type"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ for \"%s\" har ingen erklæret type"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d for \"%s\" har ingen erklæret type"
@@ -712,17 +707,17 @@ msgstr "manglende \"%s\" ved slutningen af filen"
 msgid "missing %s at end of line"
 msgstr "manglende \"%s\" ved slutningen af linjen"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 505430d..282be89 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 2aeaf36..5186c98 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-07 12:35+0200\n"
 "Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -363,38 +363,38 @@ msgstr "Überlauf bei den Spaltennummern"
 msgid "rule useless in parser due to conflicts"
 msgstr "Regel nutzlos im Parser wegen Konflikten"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-Variable %s noch einmal definiert"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "vorhergehende Definition"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: undefinierte %%define-Variable %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "ungültiger Wert für Boole’sche %%define-Variable %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "ungültiger Wert für %%define-Variable %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "akzeptierte Werte: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "fehlender Bezeichner in Parameterdeklaration"
@@ -574,109 +574,104 @@ msgstr[1] "%d Regeln, die in Grammatik nutzlos sind"
 msgid "start symbol %s does not derive any sentence"
 msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "herumstreunendes ‚$‘"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "herumstreunendes ‚@‘"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "ein ‚;‘ könnte am Ende von Aktionscode nötig sein"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "zukünftige Versionen von Bison werden das ‚;‘ nicht hinzufügen"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "Benutzung von YYFAIL, was veraltet ist und bald entfernt wird"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "verweist auf: %c%s bei %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "meinte möglicherweise: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", versteckt dabei %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " bei %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 ", kann nicht aus Aktion inmitten einer Regel bei $%d heraus zugegriffen "
 "werden"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "Ganzzahl außerhalb des Wertebereichs: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "ungültiger Verweis: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr "Syntaxfehler nach ‚%c‘, erwarte Ganzzahl, Buchstabe, ‚_‘, ‚[‘ oder ‚$‘"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "Symbol nicht in Produktion gefunden vor $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "Symbol nicht in Produktion gefunden: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "irreführender Verweis: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "mehrdeutiger Verweis: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "expliziter Typ angegeben und ungetypter Grammatik"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ für Regelmitte bei $%d von %s hat keinen deklarierten Typ"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ von %s hat keinen deklarierten Typ"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s von %s hat keinen deklarierten Typ"
@@ -751,17 +746,17 @@ msgstr "fehlendes %s am Ende der Datei"
 msgid "missing %s at end of line"
 msgstr "fehlendes %s am Ende der Zeile"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "nicht geschlossene Direktive %s im Skelett"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "zu wenige Argumente für Direktive %s im Skelett"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "zu viele Argumente für Direktive %s im Skelett"
@@ -1155,6 +1150,9 @@ msgstr "Unterprozess %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "Unterprozess %s erhielt tödliches Signal %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "herumstreunendes ‚@‘"
+
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index 49a1f29..534acc6 100644 (file)
Binary files a/po/el.gmo and b/po/el.gmo differ
index fe36825..302c051 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-2.4\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2008-11-30 17:57+0300\n"
 "Last-Translator: Lefteris Dimitroulakis <edimitro@tee.gr>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -355,38 +355,38 @@ msgstr "υπερχείλιση αριθμού στηλών"
 msgid "rule useless in parser due to conflicts"
 msgstr "ο κανόνας είναι άχρηστος στον αναλυτή λόγω συγκρούσεων"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "το σύμβολο %s ανακαθορίστηκε"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "προηγούμενη δήλωση"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "μη χρησιμοποιούμενη τιμή: $%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "το όνομα λείπει στη δήλωση παραμέτρου"
@@ -567,107 +567,102 @@ msgstr[1] "οι κανόνες %d είναι άχρηστοι στη γραμμ
 msgid "start symbol %s does not derive any sentence"
 msgstr "το αρχικό σύμβολο %s δεν παράγει καμιά πρόταση"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "μοναχικό «$»"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "μοναχικό «@»"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "ακέραιος εκτός ορίων: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "μη έγκυρη οδηγία: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "ασαφές όρισμα %s για %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "ρητή δήλωση τύπου δόθηκε σε γραμματική χωρίς τύπους"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ για την midrule στο $%d του «%s» δεν έχει δηλωμένο τύπο"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ του «%s» δεν έχει δηλωμένο τύπο"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d του «%s» δεν έχει δηλωμένο τύπο"
@@ -742,17 +737,17 @@ msgstr "στο τέλος του αρχείου λείπει «%s»"
 msgid "missing %s at end of line"
 msgstr "στο τέλος της γραμμής λείπει «%s»"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
@@ -1147,6 +1142,10 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "μοναχικό «@»"
+
 #~ msgid "I/O error"
 #~ msgstr "σφάλμα I/O"
 
index 98a0750..a24e9f5 100644 (file)
Binary files a/po/eo.gmo and b/po/eo.gmo differ
index 33fed48..831c2af 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-05 20:47-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -358,38 +358,38 @@ msgstr "troa kolumn-numero"
 msgid "rule useless in parser due to conflicts"
 msgstr "regulo neutila en analizilo pro konfliktoj"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "'%%define'-variablo %s estis redifinata"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "antaŭa difino"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: nedifinita '%%define'-variablo %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "malvalida valoro por bulea '%%define'-variablo %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "malvalida valoro por '%%define'-variablo %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "akceptita valoro: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "mankas identigilon en deklaro de parametro"
@@ -569,108 +569,103 @@ msgstr[1] "%d reguloj neutilaj en gramatiko"
 msgid "start symbol %s does not derive any sentence"
 msgstr "ekiga simbolo %s ne derivas iun ajn frazon"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "perdita '$'"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "perdita '@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "';' povus esti neceza ĉe la fino de ago-kodo"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "estontaj versioj de Bison ne aldonos la ';'"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "uzo de YYFAIL, kio estas malrekomendinda kaj estos forigata"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "referencas al: %c%s ĉe %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "eble signifis: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", kaŝanta %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " ĉe %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", ne povas esti alirata el mez-regula ago ĉe $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entjero for de limo: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "malvalida referenco: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "sintaksa eraro post '%c', estas atendata entjero, litero, '_', '[' aŭ '$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "simbolo ne trovita en produktado antaŭ $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "simbolo ne trovita en produktado: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "trompiga referenco: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "plursenca referenco: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "malimplicita tipo liverita en netipigita gramatiko"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ por la mezregulo ĉe $%d de %s havas neniun deklaritan tipon "
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de %s havas neniun deklaritan tipon"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s de %s havas neniun deklaritan tipon"
@@ -745,17 +740,17 @@ msgstr "mankas %s ĉe la dosierfino"
 msgid "missing %s at end of line"
 msgstr "mankas %s ĉe la linifino"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "nefermita instrukcio %s en skeleto"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "tro malmultaj argumentoj por instrukcio %s en skeleto"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "tro multaj argumentoj por instrukcio %s en skeleto"
@@ -1144,6 +1139,9 @@ msgstr "subprocezo %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "subprocezo %s ricevis neripareblan signalon %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "perdita '@'"
+
 #~ msgid "I/O error"
 #~ msgstr "En/Eliga eraro"
 
index 781b1f2..deba014 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index 6570f1f..ba67e5e 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -30,7 +30,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 2.2\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2006-06-05 13:51+0200\n"
 "Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -391,38 +391,38 @@ msgstr "desbordamiento del n
 msgid "rule useless in parser due to conflicts"
 msgstr "la regla nunca se redujo debido a los conflictos"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "redefinido el símbolo %s"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valor no válido: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "falta el identificador el la declaración del parámetro"
@@ -607,107 +607,102 @@ msgstr[1] "no hay reglas en la gram
 msgid "start symbol %s does not derive any sentence"
 msgstr "El símbolo de inicio (axioma) %s no deriva ninguna sentencia"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "`$ extraviado"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "`@ extraviado"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entero fuera de rango: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directiva no válida: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinición de la precedencia de %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumento %s ambigüo para %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d de `%s' no tiene tipo declarado"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' no tiene tipo declarado"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' no tiene tipo declarado"
@@ -786,17 +781,17 @@ msgstr "falta cadena `%s' al final del fichero"
 msgid "missing %s at end of line"
 msgstr "falta cadena `%s' al final del fichero"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
@@ -1203,6 +1198,10 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "`@ extraviado"
+
 #~ msgid "I/O error"
 #~ msgstr "Error de E/S"
 
index 7a3499b..c1fac72 100644 (file)
Binary files a/po/et.gmo and b/po/et.gmo differ
index 3162d36..3d25d19 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-05 21:46+0300\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
 "Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
@@ -356,38 +356,38 @@ msgstr "veeru numbri 
 msgid "rule useless in parser due to conflicts"
 msgstr "reegel on konfliktide tõttu kasutu"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define muutuja %s deklareeriti uuesti"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "eelmine deklaratsioon"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: defineerimata %%define muutuja %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "vigane %%define tõeväärtus muutuja %s väärtus"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "vigane väärtus %%define muutujale %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "lubatud väärtus: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "parameetri deklaratsioonis puudub identifikaator"
@@ -567,107 +567,102 @@ msgstr[1] "%d grammatikas kasutut reeglit"
 msgid "start symbol %s does not derive any sentence"
 msgstr "stardisümbolist %s ei tuletata ühtegi lauset"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "liigne '$'"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "liigne '@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "tegevuse koodi lõpus võib olla vaja ';'"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "Bisoni uuemad versioonid ei lisa ';'"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "YYFAIL kasutamine ei ole soovitatav ja eemaldatakse"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "viitab: %c%s kohal %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "arvatavasti mõeldi: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", peidab %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " kohal %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", ei saa vahe reegli tegevusel kasutada kohal $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "number piiridest väljas: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "vigane viide: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr "süntaksi viga peale '%c', ootan numbrit, tähte, '_', '[' või '$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "sümbol puudub produktsioonis $%d ees: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "sümbol puudub produktsioonis: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "segadust tekitav viide: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "segane viide: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "tüüpimata grammatikas kasutati konkreetset tüüpi"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ vahereeglis kohal $%d '%s' ei oma deklareeritud tüüpi"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ märgil '%s' ei oma deklareeritud tüüpi"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s märgil '%s' ei oma deklareeritud tüüpi"
@@ -742,17 +737,17 @@ msgstr "faili l
 msgid "missing %s at end of line"
 msgstr "rea lõpus puudub %s"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "skeletis on sulgemata %s direktiiv"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "skeletis on %s direktiivile liiga vähe argumente"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "skeletis on %s direktiivile liiga palju argumente"
@@ -1140,3 +1135,6 @@ msgstr "%s alamprotsess"
 #, c-format
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s alamprotsess sai fataalse signaali %d"
+
+#~ msgid "stray '@'"
+#~ msgstr "liigne '@'"
index 7970190..76717d3 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index 296e422..e349b8d 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-05 23:03+0300\n"
 "Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -376,38 +376,38 @@ msgstr "sarakenumeron ylivuoto"
 msgid "rule useless in parser due to conflicts"
 msgstr "sääntö on hyödytön jäsentimessä ristiriitojen vuoksi"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-muuttuja %s on määritelty uudelleen"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "edellinen määrittely"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: määrittelemätön %%define-muuttuja %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "virheellinen arvo kohteelle %%define Boolean muuttuja %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "virheellinen arvo kohteelle %%define-muuttuja %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "hyväksytty arvo: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "puuttuva tunniste parametriesittelyssä"
@@ -587,109 +587,104 @@ msgstr[1] "%d sääntöä ovat hyödyttömiä kieliopissa"
 msgid "start symbol %s does not derive any sentence"
 msgstr "aloitussymboli %s ei johda lauseeseen"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "yksinäinen ’$’"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "yksinäinen ’@’"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "merkkiä ’;’ saatetaan tarvita toimintakoodin lopussa"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "tulevat Bison-versiot eivät lisää merkkiä ’;’"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "YYFAIL-käyttö, joka on vanhentunut ja poistetaan"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "viittaa kohteeseen: %c%s at %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "mahdollisesti tarkoitti: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", piilotetaan %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " osoitteessa %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", ei kyetä käyttämään mid-rule -toimintoa osoitteessa $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "kokonaisluku on lukualueen ulkopuolella: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "virheellinen viite: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "syntaksivirhe merkin ’%c’ jälkeen, odotettiin kokonaislukua, kirjainta, tai "
 "merkkejä ’_’, ’[’, ’$’"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "symbolia ei löytynyt tuotannosta ennen $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbolia ei löytynyt tuotannosta: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "harhaanjohtava viite: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "ei-yksiselitteinen viite: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "eksplisiittinen tyyppi annettu tyypittömässä kieliopissa"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ midrule-lohkolle osoitteessa $%d/%s ei ole esiteltyä tyyppiä"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$/%s ei ole esitelty tyyppi"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s/%s ei ole esitelty tyyppi"
@@ -764,17 +759,17 @@ msgstr "puuttuva %s tiedoston lopussa"
 msgid "missing %s at end of line"
 msgstr "puuttuva %s rivin lopussa"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "sulkematon %s-direktiivi rungossa"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "liian vähän argumentteja %s-direktiiville rungossa"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "liian monta argumenttia %s-direktiiville rungossa"
@@ -1166,6 +1161,9 @@ msgstr "%s-aliprosessi"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s-aliprosessi sai kohtalokkaan signaalin %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "yksinäinen ’@’"
+
 #~ msgid "I/O error"
 #~ msgstr "Siirräntävirhe"
 
index 2b41b89..cfd2bfb 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index 37fb2f6..a6cf394 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-06 10:11+0200\n"
 "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -369,38 +369,38 @@ msgstr "débordement du nombre de colonnes"
 msgid "rule useless in parser due to conflicts"
 msgstr "la règle est inutile dans l'analyseur à cause de conflits"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "variable %%define %s redéfinie"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "définition précédente"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: variable %%define %s non définie"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "valeur inacceptable pour %%define de la variable Booléenne %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "valeur inacceptable pour %%define de la variable %s : %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "valeur acceptée : %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificateur manquant dans la déclaration de paramètres"
@@ -581,110 +581,105 @@ msgstr[1] "%d règles inutiles dans la grammaire"
 msgid "start symbol %s does not derive any sentence"
 msgstr "symbole de départ %s ne produit aucune phrase"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "« $ » superflu"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "« @ » superflu"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "un « ; » est peut-être nécessaire à la fin du code d'action"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "les versions suivantes de Bison n'ajouteront pas le « ; »"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "l'utilisation de YYFAIL est obsolète et sera supprimée"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "voir %c%s à %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "signifiait probablement: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", cache %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " à %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", n'est pas accessible depuis une action de milieu de règle à %d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entier hors limite: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "erreur de syntaxe après « %c », attendu : entier, lettre, « _ », « [ » ou "
 "« $ »"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "symbole pas trouvé en production avant $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbole pas trouvé en production: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "référence trompeuse: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "référence ambiguë: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "type explicitement attribué à une grammaire sans type"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 "le $$ de la règle intermédiaire à $%d de « %s » n'a pas de type déclaré"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de %s n'a pas de type déclaré"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s de %s n'a pas de type déclaré"
@@ -759,17 +754,17 @@ msgstr "chaîne de caractères %s manquante en fin de fichier"
 msgid "missing %s at end of line"
 msgstr "%s manquant à la fin de fichier"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "directive %s pas fermée dans le squelette"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "trop peu de paramètres pour la directive %s du squelette"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "trop de paramètres pour la directive %s du squelette"
@@ -1158,6 +1153,9 @@ msgstr "sous-processus %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "le sous-processus %s a reçu le signal fatal %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "« @ » superflu"
+
 #~ msgid "I/O error"
 #~ msgstr "une erreur d'E/S"
 
index f844712..8f7156b 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index fc4fb0b..1e2c9f1 100644 (file)
--- a/po/ga.po
+++ b/po/ga.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-05-22 18:52-0500\n"
 "Last-Translator: Kevin Scannell <kscanne@gmail.com>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
@@ -370,38 +370,38 @@ msgstr "uimhir an cholúin thar maoil"
 msgid "rule useless in parser due to conflicts"
 msgstr "riail gan tairbhe sa pharsálaí de bhrí coinbhleachtaí"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "sainmhíniú nua ar athróg %%define `%s'"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "sainmhíniú roimhe seo"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "luach neamhbhailí ar athróg %%define `%s': `%s'"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "luach neamhbhailí ar athróg Boole %%define `%s'"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "luach neamhbhailí ar athróg %%define `%s': `%s'"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "luach glactha: `%s'"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "aitheantóir ar iarraidh i bhfógra paraiméadair"
@@ -591,109 +591,104 @@ msgstr[4] "%d riail gan tairbhe sa ghramadach"
 msgid "start symbol %s does not derive any sentence"
 msgstr "níl aon abairt díorthaithe ón siombail tosaigh %s"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "`$' ar strae"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "`@' ar strae"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, fuzzy, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "seans go bhfuil `;' ar iarraidh ag deireadh an ghnímh"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, fuzzy, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "ní chuirfear `;' leis i leaganacha de Bison amach anseo"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "tá YYFAIL i léig agus bainfear amach é sa todhchaí"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "déanann sé tagairt do: %c%s ag %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "b'fhéidir: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", %c á chur i bhfolach"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " ag %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", níl aon fháil air ó ghníomh meánrialach ag $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "slánuimhir as raon: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tagairt neamhbhailí: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, fuzzy, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "earráid chomhréire tar éis `%c', bhíothas ag súil le slánuimhir, litir, `_', "
 "`[', or `$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "siombail gan aimsiú i riail ghramadaí roimh $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "siombail gan aimsiú i riail ghramadaí: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "tagairt mhíthreorach: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "tagairt dhébhríoch: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "cineál follasach i ngramadach gan chineálacha"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "Níl aon chineál fógartha ag $$ na meánrialach ag $%d de `%s'"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "Níl aon chineál fógartha ag $$ de `%s'"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "Níl aon chineál fógartha ag $%s de `%s'"
@@ -768,17 +763,17 @@ msgstr "`%s' ar iarraidh ag críoch an chomhaid"
 msgid "missing %s at end of line"
 msgstr "`%s' ar iarraidh ag críoch na líne"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "treoir %s gan dúnadh i gcreatlach"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "easpa argóintí do threoir %s i gcreatlach"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "an iomarca argóintí do threoir %s i gcreatlach"
@@ -1171,6 +1166,10 @@ msgstr "fophróiseas %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "fuair fophróiseas %s comhartha marfach %d"
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "`@' ar strae"
+
 #~ msgid "I/O error"
 #~ msgstr "Earráid I/A"
 
index ac39fb7..29f7198 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index d4f84ae..24ef210 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-10 17:28+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -360,38 +360,38 @@ msgstr "preljev broja stupaca"
 msgid "rule useless in parser due to conflicts"
 msgstr "pravilo beskorisno u analizatoru zbog konflikata"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define varijabla %s je ponovo definirana"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "prethodna definicija"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: nedefinirana %%define varijabla %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "neispravna vrijednost %%define logičke varijable %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "neispravna vrijednost %%define varijable %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "prihvaćena vrijednost: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "nedostaje identifikator u deklaraciji paremetra"
@@ -573,108 +573,103 @@ msgstr[2] "%d pravila beskorisnih u gramatici"
 msgid "start symbol %s does not derive any sentence"
 msgstr "početni simbol %s ne daje niti jednu rečenicu"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "stray „$”"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "stray „@”"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "može biti potrebna „;” na kraju koda radnje"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "buduće inačice Bisona neće dodavati „;”"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "korištenje YYFAIL, što je zastarjelo i bit će uklonjeno"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "odnosi se na: %c%s na %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "vjerojatno znači: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", skrivajući %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " na %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", ne može mu pristupiti mid-rule radnja na $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "cijeli broj izvan granica: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "neispravna referenca: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "sintaksna greška nakon „%c”, očekujem cijeli broj, slovo, „_”, „[” ili „$”"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "simbol nije nađen u proizvodnji prije $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "simbol nije nađen u proizvodnji: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "krivo navodeća referenca: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "višeznačna referenca: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "navedena eksplicitna vrsta u neunesenoj gramatici"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ za srednje pravilo na $%d od %s nema deklariranu vrstu"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ od %s nema deklariranu vrstu"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s od %s nema deklariranu vrstu"
@@ -749,17 +744,17 @@ msgstr "nedostaje %s na kraju datoteke"
 msgid "missing %s at end of line"
 msgstr "nedostaje %s na kraju retka"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "nezatvoren %s propis u kosturu"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "premalo argumenata %s propisa u kosturu"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "premalo argumenata %s propisa u kosturu"
@@ -1154,6 +1149,9 @@ msgstr "%s potproces"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s potproces je dobio fatalni signal %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "stray „@”"
+
 #~ msgid "I/O error"
 #~ msgstr "U/I greška"
 
index 6963d09..6dc30c4 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index 2eb8048..020ef56 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-2.4.1b\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-02-27 07:30+0700\n"
 "Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -341,38 +341,38 @@ msgstr "overflow jumlah kolom"
 msgid "rule useless in parser due to conflicts"
 msgstr "aturan tidak berguna dalam parser karena konflik"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s `%s' didefinisikan ulang"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "definisi sebelumnya"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "nilai tidak valid untuk %%define variable `%s': `%s'"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "nilai tidak valid untuk %%define Boolean variable `%s'"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "nilai tidak valid untuk %%define variable `%s': `%s'"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identifier tidak ada dalam deklarasi parameter"
@@ -550,108 +550,103 @@ msgstr[0] "%d aturan tidak berguna dalam tata bahasa"
 msgid "start symbol %s does not derive any sentence"
 msgstr "simbol awal %s tidak melahirkan kalimat"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "kelebihan `$'"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "kelebihan `@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer ke luar batas: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "direktif tidak valid: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumen %s ambigu untuk %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "tipe eksplisit diberikan dalam tata bahasa yang tidak diketikan"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 "$$ untuk aturan tengah di $%d dari `%s' tidak memiliki tipe yang terdeklarasi"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ dari `%s' tidak memiliki tipe yang terdeklarasi"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d dari `%s' tidak memiliki tipe yang terdeklarasi"
@@ -726,17 +721,17 @@ msgstr "kehilangan `%s' di akhir file"
 msgid "missing %s at end of line"
 msgstr "hilang `%s' di akhir baris"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "direktif %s tidak tertutup dalam kerangka"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "terlalu sedikit argumen untuk direktif %s dalam skeleton"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "terlalu banyak argumen untuk direktif %s dalam skeleton"
@@ -1129,6 +1124,10 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "kelebihan `@'"
+
 #~ msgid "I/O error"
 #~ msgstr "Kesalahan I/O"
 
index 45c664b..f07486b 100644 (file)
Binary files a/po/it.gmo and b/po/it.gmo differ
index baacfe4..ef35fd9 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.0\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-05-23 12:37+0100\n"
 "Last-Translator: Paolo Bonzini <bonzini@gnu.org>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -319,38 +319,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regola mai ridotta a causa dei conflitti"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbolo %s ridefinito"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valore non valido: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "manca un identificatore nella dichirazione di un parametro"
@@ -536,107 +536,102 @@ msgstr[1] "nessuna regola nella grammatica di input"
 msgid "start symbol %s does not derive any sentence"
 msgstr "dal simbolo iniziale %s non deriva alcuna frase"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "intero fuori dai limiti: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "direttiva non valida: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argomento ambiguo %s per %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
@@ -711,17 +706,17 @@ msgstr "manca un `%s' alla fine del file"
 msgid "missing %s at end of line"
 msgstr "manca un `%s' alla fine della linea"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index f3dba0c..d49b7d8 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index 2b14e3f..e6a8ff4 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 2.5.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-06-10 18:47+0900\n"
 "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -307,38 +307,38 @@ msgstr "列番号がオーバーフローしました"
 msgid "rule useless in parser due to conflicts"
 msgstr "衝突のせいでパーサ内の規則が使用できません"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "変数インデックスが不正です"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "前の定義がここにありました"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "警告: 未定義の変数 `%.*s'"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "アイコン型として不適切な値 '%s'"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "無効な値\n"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, fuzzy, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "マクロ仮引数リストに ')' がありません"
@@ -523,108 +523,103 @@ msgstr[0] "入力した文法に規則が定義されていません"
 msgid "start symbol %s does not derive any sentence"
 msgstr "開始シンボル %s はどの文にも由来しません"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "将来のバージョンの Bison は ';' を追加しません"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, fuzzy, c-format
 msgid "refers to: %c%s at %s"
 msgstr "'%s' はディレクトリを指しています"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, fuzzy, c-format
 msgid "possibly meant: %c"
 msgstr "多分、カウントが間違っています。"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, fuzzy, c-format
 msgid ", hiding %c"
 msgstr "入/退出メッセージの制限"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, fuzzy, c-format
 msgid " at %s"
 msgstr "%s (%s) at "
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整数が値の範囲外です: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "無効な参照: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "'%c' の後に文法エラーがあります。整数、文字、'_', '[','$' が来るはずです。"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, fuzzy, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "%s が gflares_list 中に見付かりません"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "高度の単位"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "高度の単位"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d 個の `%s' が宣言された型を持っていません"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "`%s' の $$ に宣言のない型があります"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "`%s' の $$ に宣言のない型があります"
@@ -699,17 +694,17 @@ msgstr "ファイル末尾に %s がありません"
 msgid "missing %s at end of line"
 msgstr "行末に %s がありません"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, fuzzy, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "文字列が命令の途中で終わっています."
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 842d694..a8bda1e 100644 (file)
Binary files a/po/ms.gmo and b/po/ms.gmo differ
index ed253a8..b73fb89 100644 (file)
--- a/po/ms.po
+++ b/po/ms.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.4.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-01-13 00:35+0800\n"
 "Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
 "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
@@ -346,38 +346,38 @@ msgstr "nombor lajur melimpah"
 msgid "rule useless in parser due to conflicts"
 msgstr "hukum tidak digunakan kerana konflik"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbol %s ditakrif semula"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "pengisytiharan terdahulu"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "pengecam hilang dalam parameter pengisytiharan"
@@ -555,109 +555,104 @@ msgstr[0] "%d hukum tidak digunakan dalam tatabahasa"
 msgid "start symbol %s does not derive any sentence"
 msgstr "simbol permulaan %s tidak menghasilkan sebarang perkataan"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "`$' lilau"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "`@' lilau"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer diluar julat: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "arahan tidak sah: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "hujah kabur %s untuk %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "Jenis tidak tersirat diberikan dalam tatabahasa tanpa jenis"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 "$$ untuk hukum pertengahan pada $%d bagi `%s' tidak mempunyai jenis "
 "dinyatakan"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ bagi `%s' tiada jenis dinyatakan"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d bagi `%s' tiada jenis dinyatakan"
@@ -732,17 +727,17 @@ msgstr "`%s' hilang pada penghujung fail"
 msgid "missing %s at end of line"
 msgstr "`%s' hilang pada penghujung baris"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
@@ -1135,6 +1130,10 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "`@' lilau"
+
 #~ msgid "I/O error"
 #~ msgstr "Ralat I/O"
 
index aafe475..3e1eb8a 100644 (file)
Binary files a/po/nb.gmo and b/po/nb.gmo differ
index 2a31ab1..6bb0026 100644 (file)
--- a/po/nb.po
+++ b/po/nb.po
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.0\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-03-01 10:06+0100\n"
 "Last-Translator: Trond Endrestøl <Trond.Endrestol@gtf.ol.no>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -335,38 +335,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regel ble aldri redusert på grunn av konflikter"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "symbolet %s ble redefinert"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "ugyldig verdi: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "mangler identifikator i parameterdeklarasjonen"
@@ -558,107 +558,102 @@ msgstr[1] "ingen regler i den angitte grammatikken"
 msgid "start symbol %s does not derive any sentence"
 msgstr "startsymbolet %s avleder ingen setninger"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "heltall utenfor tallområde: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ugyldig direktiv: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "flertydig argument %s for %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d av «%s» har ingen deklarert type"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ til «%s» har ingen deklarert type"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d av «%s» har ingen deklarert type"
@@ -733,17 +728,17 @@ msgstr "mangler 
 msgid "missing %s at end of line"
 msgstr "mangler «%s» på slutten av linjen"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 23ef7bd..73302df 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index 23ce414..9e0cb25 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-11-04 16:36+0100\n"
 "Last-Translator: Tim Van Holder <tim.van.holder@telenet.be>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -352,38 +352,38 @@ msgstr "overflow van kolomnummers"
 msgid "rule useless in parser due to conflicts"
 msgstr "regel is nutteloos in de grammatica omwille van conflicten"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s `%s' opnieuw gedefinieerd"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "eerdere definitie"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "ongeldige waarde voor %%define variabele `%s': `%s'"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "ongeldige waarde voor Booleaanse %%define variabele `%s'"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "ongeldige waarde voor %%define variabele `%s': `%s'"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "waarde niet gebruikt: $%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "naam ontbreekt in parameterdeclaratie"
@@ -565,109 +565,104 @@ msgstr[1] "%d regels zijn nutteloos in de grammatica"
 msgid "start symbol %s does not derive any sentence"
 msgstr "uit startsymbool %s kan geen enkele zin afgeleid worden"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "losse `$'"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "losse `@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
 # Hier zou wel het bereik bij vermeld mogen worden...
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer buiten bereik: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ongeldig commando: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argument %s voor %s is niet eenduidig"
 
 # betere vertaling voor 'untyped'?
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "expliciet type opgegeven in een typeloze grammatica"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ voor de midrule op $%d van `%s' heeft geen gedeclareerd type"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ van `%s' heeft geen gedeclareerd type"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d van `%s' heeft geen gedeclareerd type"
@@ -742,17 +737,17 @@ msgstr "`%s' ontbreekt aan einde van bestand"
 msgid "missing %s at end of line"
 msgstr "`%s' ontbreekt aan einde van regel"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "onbeëindigd %s commando in skelet"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "te weinig argumenten voor %s commando in skelet"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "teveel argumenten voor %s commando in skelet"
@@ -1150,6 +1145,10 @@ msgstr "%s subproces"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s subproces kreeg fataal signaal %d"
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "losse `@'"
+
 #~ msgid "I/O error"
 #~ msgstr "I/O-fout"
 
index 8f320fa..2049e40 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index e6e8229..50a6d93 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-06 10:57+0200\n"
 "Last-Translator: Wojciech Polak <polak@gnu.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -369,38 +369,38 @@ msgstr "przepełnienie numeru kolumny"
 msgid "rule useless in parser due to conflicts"
 msgstr "bezużyteczna reguła w analizatorze z powodu konfliktów"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "zredefiniowana zmienna %%define %s"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "poprzednia definicja"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: niezdefiniowana zmienna %%define %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "nieprawidłowa wartość dla boole'owskiej zmiennej %%define %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "nieprawidłowa wartość dla zmiennej %%define %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "zaakceptowana wartość: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "brakujący identyfikator w deklaracji parametrów"
@@ -583,111 +583,106 @@ msgstr[2] "%d bezużytecznych reguł w gramatyce"
 msgid "start symbol %s does not derive any sentence"
 msgstr "początkowy symbol %s nie dziedziczy żadnego zdania"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "zabłąkany '$'"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "zabłąkany '@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "znak ';' może być konieczny na końcu kodu akcji"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "przyszłe wersje Bisona nie będą dodawać znaku ';'"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "użycie YYFAIL, które jest przestarzałe i będzie usunięte"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "odnosi się do: %c%s w %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "może chodziło o: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", ukrywanie %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " w %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", nie jest dostępne z akcji mid-rule w $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "liczba całkowita poza zakresem: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "nieprawidłowe odwołanie: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "błąd składni za znakiem '%c', spodziewano się liczby, litery, '_', '[', lub "
 "'$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "nie znaleziono symbolu w produkcji przed $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "nie znaleziono symbolu w produkcji: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "mylące odniesienie: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "niejednoznaczne odniesienie: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "jawny typ w gramatyce beztypowej"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 "$$ w pozycji $%d należący do pośredniej reguły %s nie posiada "
 "zadeklarowanego typu"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ należący do %s nie posiada zadeklarowanego typu"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s należący do %s nie posiada zadeklarowanego typu"
@@ -762,17 +757,17 @@ msgstr "brakujący %s na końcu pliku"
 msgid "missing %s at end of line"
 msgstr "brakujący %s na końcu linii"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "niedomknięta dyrektywa %s w szkielecie"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "za mało argumentów dla dyrektywy %s w szkielecie"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "za dużo argumentów dla dyrektywy %s w szkielecie"
@@ -1161,6 +1156,9 @@ msgstr "podproces %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "podproces %s otrzymał nieprawidłowy sygnał %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "zabłąkany '@'"
+
 #~ msgid "I/O error"
 #~ msgstr "błąd wejścia/wyjścia"
 
index f43307e..41b3ea4 100644 (file)
Binary files a/po/pt.gmo and b/po/pt.gmo differ
index 7280dd6..1a752cb 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-2.4.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-01-28 00:15+0100\n"
 "Last-Translator: Hugo Patrício <hugo.a.patricio@gmail.com>\n"
 "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
@@ -291,38 +291,38 @@ msgstr "ultrapassado o número de colunas"
 msgid "rule useless in parser due to conflicts"
 msgstr ""
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr ""
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr ""
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr ""
@@ -502,107 +502,102 @@ msgstr[1] ""
 msgid "start symbol %s does not derive any sentence"
 msgstr ""
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integral fora de alcance: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directriz inválida: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' não tem tipo declarado"
@@ -677,17 +672,17 @@ msgstr ""
 msgid "missing %s at end of line"
 msgstr ""
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 25d0603..a59d071 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index 859b331..6b82da5 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 1.875\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2003-01-06 02:30-0300\n"
 "Last-Translator: Alexandre Folle de Menezes <afmenez@terra.com.br>\n"
 "Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -321,38 +321,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regra não reduzida por causa de conflitos"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "símbolo %s redefinido"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valor inválido: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificador faltando na declaração do parâmetro"
@@ -537,107 +537,102 @@ msgstr[1] "n
 msgid "start symbol %s does not derive any sentence"
 msgstr "símbolo de início %s não deriva nenhuma sentença"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "inteiro fora de faixa: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "diretiva inválida: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinindo precedência de %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumento %s ambíguo para %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' não tem tipo declarado"
@@ -712,17 +707,17 @@ msgstr "`%s' faltando no final do arquivo"
 msgid "missing %s at end of line"
 msgstr "`%s' faltando no final do arquivo"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 35eff6a..599317e 100644 (file)
Binary files a/po/ro.gmo and b/po/ro.gmo differ
index a73d4f4..b38b4ac 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.0a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-06-03 12:00-0500\n"
 "Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -325,38 +325,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regula nu este redusã niciodatã din cauza conflictelor"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbol %s redefinit"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valoare invalidã: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificator lipsã în declaraþia parametrului"
@@ -542,107 +542,102 @@ msgstr[1] "nici o regul
 msgid "start symbol %s does not derive any sentence"
 msgstr "simbol de start %s nu deriveazã nici o propoziþie"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "întreg în afara domeniului: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directivã invalidã: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argument ambiguu %s pentru %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d a lui `%s' nu are nici un tip declarat"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ a lui `%s' nu are nici un tip declarat"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d a lui `%s' nu are nici un tip declarat"
@@ -717,17 +712,17 @@ msgstr "`%s' lips
 msgid "missing %s at end of line"
 msgstr "`%s' lipsã la sfârºitul liniei"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 7a326f5..5194caa 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index ff0279a..eb0dd8c 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.4.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-02-04 19:44+0200\n"
 "Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
@@ -353,38 +353,38 @@ msgstr "переполнение номера столбца"
 msgid "rule useless in parser due to conflicts"
 msgstr "правило не применимо в парсере из-за конфликтов"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "повторное определение символа %s"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "предыдущее описание"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "неиспользуемая переменная: $%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "в описании параметра отсутствует идентификатор"
@@ -567,107 +567,102 @@ msgstr[2] "%d правила бесполезно в грамматике"
 msgid "start symbol %s does not derive any sentence"
 msgstr "начальный символ %s не выводит ни одного предложения"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, fuzzy, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr "некорректный «$»"
 
-#: src/scan-code.l:205
-#, fuzzy, c-format
-msgid "stray '@'"
-msgstr "некорректный «@»"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "выход за границы диапазона целого: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "неверная директива: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "переопределение приоритета для %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "неоднозначный аргумент %s для %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "указан тип в нетипизированной грамматике"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ для правила $%d из «%s» не имеет описанного типа"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ в «%s» не имеет описанного типа"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d из «%s» не имеет описанного типа"
@@ -742,17 +737,17 @@ msgstr "отсутствует «%s» в конце файла"
 msgid "missing %s at end of line"
 msgstr "отсутствует «%s» в конце строки"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
@@ -1143,6 +1138,10 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#, fuzzy
+#~ msgid "stray '@'"
+#~ msgstr "некорректный «@»"
+
 #~ msgid "I/O error"
 #~ msgstr "ошибка ввода-вывода"
 
index 225792f..6ba62cf 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index 979bb79..a518138 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-05 22:29+0200\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -363,38 +363,38 @@ msgstr "kolumnnummerspill"
 msgid "rule useless in parser due to conflicts"
 msgstr "oanvändbar regel i parsern på grund av konflikter"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-variabeln %s omdefinierad"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "föregående definition"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: odefinierad  %%define-variabel %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "ogiltigt värde för boolesk %%define-variabel %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "ogiltigt värde för %%define-variabeln %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "accepterat värde: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identiferare saknas i parameterdeklaration"
@@ -574,108 +574,103 @@ msgstr[1] "%d oanv
 msgid "start symbol %s does not derive any sentence"
 msgstr "startsymbolen %s genererar inga meningar"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "vilsekommet \"$\""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "vilsekommet \"@\""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "ett \";\" kan behövas i slutet av åtgärdskoden"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "framtida versioner av Bison kommer inte lägga till \";\""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "användning av YYFAIL, som avrådes ifrån och kommer tas bort"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "refererar till: %c%s vid %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "möjligen avsett: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", döljer %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " vid %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", kan inte nås från åtgärd mitt i regeln vid $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "heltal utanför intervall: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "ogiltig referens: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "syntaxfel efter \"%c\", siffra, bokstav, \"_\", \"[\" eller \"$\" förväntades"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "symbol inte funnen i produktion före $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbol inte funnen i produktion: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "vilseledande referens: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "tvetydigt argument: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "explicit typ given i otypad grammatik"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ för mitt-i-regeln vid $%d av %s har ingen deklarerad typ"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ för %s har ingen deklarerad typ"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s för %s har ingen deklarerad typ"
@@ -750,17 +745,17 @@ msgstr "saknat %s vid filslut"
 msgid "missing %s at end of line"
 msgstr "saknat %s vid radslut"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "oavslutat %s-direktiv i skelettet"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "för få argument till %s-direktiv i skelettet"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "för många argument till %s-direktiv i skelettet"
@@ -1151,3 +1146,6 @@ msgstr "%s-underprocess"
 #, c-format
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s-underprocess fick en ödesdiger signal %d"
+
+#~ msgid "stray '@'"
+#~ msgstr "vilsekommet \"@\""
index cb2ec76..be7cd36 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index c1f7f8f..f309ab9 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 2.0\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-03-20 22:03+0100\n"
 "Last-Translator: Çaðrý Çöltekin <cagri@xs4all.nl>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -325,38 +325,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "çeliskiler yüzünden kural indirgenemedi"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s simgesi tekrar tanýmlanmýþ"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "ilk bildirim"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "geçersiz deðer: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "parametre bildiriminde eksik tanýtýcý"
@@ -540,107 +540,102 @@ msgstr[0] "girdi gramer i
 msgid "start symbol %s does not derive any sentence"
 msgstr "baþlangýç simgesi %s herhangi bir cümleden türemiyor"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "tam sayý kapsam dýþý: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "geçersiz yönerge: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "%s'in önceliði tekrar tanýmlanýyor"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "%s argümaný, %s için belirsiz"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "`%2$s''in %1$d'i için bildirilmiþ tip yok"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "`%s''in $$'ý için bildirilmiþ tip yok"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "`%2$s''in %1$d'i için bildirilmiþ tip yok"
@@ -715,17 +710,17 @@ msgstr "dosyan
 msgid "missing %s at end of line"
 msgstr "satýr sonunda eksik `%s'"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index a228796..56a08e0 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index 156bb02..4b37865 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-05 22:00+0300\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -370,38 +370,38 @@ msgstr "переповнення номеру стовпчика"
 msgid "rule useless in parser due to conflicts"
 msgstr "правило є зайвим у аналізаторі через конфлікти"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "змінну %%define %s перевизначено"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "попереднє визначення"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: невизначена змінна %%define %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "некоректне значення булевої змінної %%define %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "некоректне значення змінної %%define %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "прийняте значення: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "у описі параметра відсутній ідентифікатор"
@@ -584,111 +584,106 @@ msgstr[2] "%d зайвих правил у граматиці"
 msgid "start symbol %s does not derive any sentence"
 msgstr "початковий символ %s не виводить жодного речення"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "зайвий символ '$'"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "зайвий символ '@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "наприкінці коду дії можливо потрібен символ ';'"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "у майбутніх версіях Bison символ ';' не додаватиметься"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 "використання YYFAIL. Вважається застарілим, буде вилучено у наступних "
 "версіях."
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "посилається на: %c%s у %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "ймовірно мало бути: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", приховування %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " у %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", доступ з дії проміжного правила неможливий у $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "вихід за межі діапазону цілого числа: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "некоректне посилання: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "синтаксична помилка після '%c'. Мало бути вказано ціле число, літеру, '_', "
 "'[' або '$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "у продукції не знайдено символу до $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "у продукції не знайдено символу: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "помилкове посилання: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "неоднозначне посилання: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "у нетипізованій граматиці явним чином вказано тип"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ для проміжного правила у $%d %s немає оголошеного типу"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ %s не має оголошеного типу"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s %s не має оголошеного типу"
@@ -763,17 +758,17 @@ msgstr "не вистачає %s наприкінці файла"
 msgid "missing %s at end of line"
 msgstr "не вистачає %s наприкінці рядка"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "незавершена інструкція %s у шаблоні"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "занадто мало аргументів у інструкції %s шаблона"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "занадто багато аргументів у інструкції %s шаблона"
@@ -1168,3 +1163,6 @@ msgstr "Підпроцес %s"
 #, c-format
 msgid "%s subprocess got fatal signal %d"
 msgstr "Підпроцесом %s отримано сигнал щодо аварійного завершення %d"
+
+#~ msgid "stray '@'"
+#~ msgstr "зайвий символ '@'"
index e89e006..ecb3e83 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index 7c29e2d..961dc2d 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-06 07:12+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -367,38 +367,38 @@ msgstr "tràn số thứ tự cột"
 msgid "rule useless in parser due to conflicts"
 msgstr "quy tắc vô ích trong bộ phân tích bởi vì các xung đột"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%biến định nghĩa %s bị định nghĩa lại"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "lời định nghĩa trước"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: chưa định nghĩa %%define biến %s"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "gặp giá trị sai đối với biến Bun %%define %s"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "gặp giá trị sai đối với biến %%define %s: %s"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, c-format
 msgid "accepted value: %s"
 msgstr "giá trị không được chấp nhận: %s"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "thiếu dấu nhận diện trong khai báo tham số"
@@ -576,108 +576,103 @@ msgstr[0] "%d quy tắc vô ích trong ngữ pháp"
 msgid "start symbol %s does not derive any sentence"
 msgstr "ký hiệu bắt đầu %s không nhận được câu"
 
-#: src/scan-code.l:200
-#, c-format
-msgid "stray '$'"
+#: src/scan-code.l:188
+#, fuzzy, c-format
+msgid "stray '%s'"
 msgstr "lạc '$'"
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr "lạc '@'"
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr "một dấu ';' có lẽ là cần thiết tại cuối của câu lệnh hành động"
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr "phiên bản tiếp theo của Bison sẽ không thêm ';'"
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "sử dụng YYFAIL, việc này không được tán thành và sẽ bị gỡ bỏ"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "tham chiếu đến: %c%s tại %s"
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "có lẽ khoảng: %c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ", ẩn %c"
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " ở %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", không thể truy cập được từ hành động quy-tắc-trung tại $%d"
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "số nguyên ở ngoại phạm vi: %s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "sai tham chiếu: %s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "lỗi sai cú pháp sau '%c', đang mong chờ số nguyên, chữ, '_', '[', hay '$'"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "ký hiệu không tìm thấy trong thủ tục trước $%d: %.*s"
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "ký hiệu không tìm thấy trong thủ tục: %.*s"
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr "tham chiếu không đúng chỗ: %s"
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "tham chiếu mơ hồ: %s"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "đưa ra kiểu dứt khoát theo ngữ cảnh không đặt kiểu"
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ cho quy tắc giữa ở $%d của %s không có kiểu được khai báo"
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ của %s không khai báo kiểu"
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s của %s không khai báo kiểu"
@@ -752,17 +747,17 @@ msgstr "thiếu %s tại kết thúc tập tin"
 msgid "missing %s at end of line"
 msgstr "thiếu %s tại kết thúc dòng"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr "gặp chỉ thị %s chưa đóng trong khung sườn"
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr "quá ít đối số cho chỉ thị %s trong khung sườn"
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr "quá nhiều đối số cho chỉ thị %s trong khung sườn"
@@ -1151,6 +1146,9 @@ msgstr "tiến trình con %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "tiến trình con %s đã nhận tín hiệu nghiệm trọng %d"
 
+#~ msgid "stray '@'"
+#~ msgstr "lạc '@'"
+
 #~ msgid "I/O error"
 #~ msgstr "Lỗi V/R"
 
index d177b83..bc30860 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index ee3899c..82f985b 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.5\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2011-07-25 11:00中国标准时间\n"
 "Last-Translator: Ji ZhengYu <zhengyuji@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -293,38 +293,38 @@ msgstr "列号溢出"
 msgid "rule useless in parser due to conflicts"
 msgstr "由于冲突,解析器中的规则不起作用"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "重新定义了 %%define 变量“%s”"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, c-format
 msgid "previous definition"
 msgstr "上次定义"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%%define 变量 %s 的值无效:“%s”"
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "%%define 布尔型变量 %s 的值无效"
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "%%define 变量 %s 的值无效:“%s”"
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "接受的值:“%s”"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "参数声明中缺少识别符"
@@ -502,107 +502,102 @@ msgstr[0] ""
 msgid "start symbol %s does not derive any sentence"
 msgstr ""
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "使用了 YYFAIL,它已经废弃并将被移除"
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr "可能指:%c"
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr " 位于 %s"
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整数超出范围:%s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, fuzzy, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr "“%c”后语法错误,应为整数、字母、“_”、“[”或“$”"
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr ""
@@ -677,17 +672,17 @@ msgstr "文件末尾缺少“%s”"
 msgid "missing %s at end of line"
 msgstr "行尾缺少“%s”"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 9710b62..7c02c89 100644 (file)
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
index 1ad6c67..b00e4a3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2007-07-23 22:36+0800\n"
 "Last-Translator: Wei-Lun Chao <chaoweilun@gmail.com>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
@@ -320,38 +320,38 @@ msgstr "列號溢位"
 msgid "rule useless in parser due to conflicts"
 msgstr "由於發生衝突導致規則一直無法縮減"
 
-#: src/muscle-tab.c:428
+#: src/muscle-tab.c:436
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "符號 %s 被重新定義"
 
-#: src/muscle-tab.c:431
+#: src/muscle-tab.c:439
 #, fuzzy, c-format
 msgid "previous definition"
 msgstr "前次宣告"
 
-#: src/muscle-tab.c:470 src/muscle-tab.c:484 src/muscle-tab.c:536
-#: src/muscle-tab.c:601
+#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
+#: src/muscle-tab.c:609
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:530
+#: src/muscle-tab.c:538
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:588
+#: src/muscle-tab.c:596
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:591
+#: src/muscle-tab.c:599
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "未使用的值:$%d"
 
-#: src/parse-gram.y:734
+#: src/parse-gram.y:746
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "在參數宣告中缺少識別項"
@@ -534,107 +534,102 @@ msgstr[0] "在輸入文法中沒有規則"
 msgid "start symbol %s does not derive any sentence"
 msgstr "啟始符號 %s 不衍生任何句子"
 
-#: src/scan-code.l:200
+#: src/scan-code.l:188
 #, c-format
-msgid "stray '$'"
+msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:205
-#, c-format
-msgid "stray '@'"
-msgstr ""
-
-#: src/scan-code.l:230
+#: src/scan-code.l:227
 #, c-format
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:231
+#: src/scan-code.l:228
 #, c-format
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:253
+#: src/scan-code.l:250
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:438 src/scan-code.l:441
+#: src/scan-code.l:427 src/scan-code.l:430
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:457
+#: src/scan-code.l:446
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:466
+#: src/scan-code.l:455
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:474
+#: src/scan-code.l:463
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:479
+#: src/scan-code.l:468
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:531 src/scan-gram.l:777
+#: src/scan-code.l:520 src/scan-gram.l:777
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整數超過範圍:%s"
 
-#: src/scan-code.l:620
+#: src/scan-code.l:609
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "無效的指令:%s"
 
-#: src/scan-code.l:629
+#: src/scan-code.l:618
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:636
+#: src/scan-code.l:625
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:643
+#: src/scan-code.l:632
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:658
+#: src/scan-code.l:647
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:673
+#: src/scan-code.l:662
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "%2$s 的引數 %1$s 不明確"
 
-#: src/scan-code.l:732
+#: src/scan-code.l:699
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:757
+#: src/scan-code.l:758
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:762
+#: src/scan-code.l:763
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:784
+#: src/scan-code.l:785
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr ""
@@ -709,17 +704,17 @@ msgstr "檔案末端缺少「%s」"
 msgid "missing %s at end of line"
 msgstr "列尾缺少「%s」"
 
-#: src/scan-skel.l:144
+#: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:289
+#: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
 msgstr ""
 
-#: src/scan-skel.l:296
+#: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
 msgstr ""
index 56b422b..6182dc3 100644 (file)
Binary files a/runtime-po/ast.gmo and b/runtime-po/ast.gmo differ
index 4cdbde1..03ebe3c 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.1a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-02-03 17:17+0100\n"
 "Last-Translator: Marquinos <maacub@gmail.com>\n"
 "Language-Team: Asturian <ubuntu-l10n-ast@lists.ubuntu.com>\n"
@@ -25,38 +25,38 @@ msgstr "fallu de sistasis: nun puede facese copia de segurid
 msgid "syntax is ambiguous"
 msgstr "sistasis ye ambigüa"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "fallu de sistasis"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "fallu de sistasis, %s nun esperáu"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "fallu de sistasis, %s nun esperáu, esperáu %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "fallu de sistasis, %s nun esperáu, esperáu %s o %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "fallu de sistasis, %s nun esperáu, esperáu %s o %s o %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "fallu de sistasis, %s nun esperáu, esperáu %s o %s o %s o %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memoria escosada"
index 800fef9..8ecd7e5 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.6\n"
+"Project-Id-Version: bison 2.6.2\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -25,38 +25,38 @@ msgstr ""
 msgid "syntax is ambiguous"
 msgstr ""
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr ""
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr ""
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr ""
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr ""
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr ""
index e9fd8b3..5a10239 100644 (file)
Binary files a/runtime-po/da.gmo and b/runtime-po/da.gmo differ
index ba1badd..24db3fe 100644 (file)
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.3b\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2008-08-25 00:00+0000\n"
 "Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -28,38 +28,38 @@ msgstr "syntaksfejl: kan ikke lave sikkerhedskopi"
 msgid "syntax is ambiguous"
 msgstr "syntaks er tvetydig"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksfejl"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksfejl, uventet %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksfejl, uventet %s, forventede %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "syntaksfejl, uventet %s, forventede %s eller %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "syntaksfejl, uventet %s, forventede %s eller %s eller %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "syntaksfejl, uventet %s, forventede %s eller %s eller %s eller %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "hukommelsen opbrugt"
index a005435..877592a 100644 (file)
Binary files a/runtime-po/de.gmo and b/runtime-po/de.gmo differ
index 80d96a7..943833e 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2006-12-12 09:38+0100\n"
 "Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -25,39 +25,39 @@ msgstr "Syntaxfehler: Kann nicht zurück gehen"
 msgid "syntax is ambiguous"
 msgstr "Syntax ist mehrdeutig"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "Syntaxfehler"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "Syntaxfehler, unerwartetes %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "Syntaxfehler, unerwartetes %s, hatte %s erwartet"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "Syntaxfehler, unerwartetes %s, hatte %s oder %s erwartet"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "Syntaxfehler, unerwartetes %s, hatte %s oder %s oder %s erwartet"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "Syntaxfehler, unerwartetes %s, hatte %s oder %s oder %s oder %s erwartet"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "Speicher ausgeschöpft"
index ab05198..8c2d331 100644 (file)
Binary files a/runtime-po/el.gmo and b/runtime-po/el.gmo differ
index 6618d5a..4b734d7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.3b\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2008-06-21 19:17+0300\n"
 "Last-Translator: Lefteris Dimitroulakis <edimitro@tee.gr>\n"
 "Language-Team: Greek <team@lists.gnome.gr>\n"
@@ -25,38 +25,38 @@ msgstr "συντακτικό σφάλμα: δεν μπορώ να κάνω πί
 msgid "syntax is ambiguous"
 msgstr "ασαφής σύνταξη"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "συντακτικό σφάλμα"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s ή %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s ή %s ή %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s ή %s ή %s ή %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "η μνήμη εξαντλήθηκε"
index ce2dae6..85f7922 100644 (file)
Binary files a/runtime-po/eo.gmo and b/runtime-po/eo.gmo differ
index 0efcfd6..723d1c2 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-11-21 14:43-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
@@ -24,38 +24,38 @@ msgstr "sintaks-eraro: ni ne povas sekurkopii"
 msgid "syntax is ambiguous"
 msgstr "sintakso estas plursenca"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaks-eraro"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaks-eraro, neatendita %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "sintaks-eraro, neatendita %s, ni atendis %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "sintaks-eraro, neatendita %s, ni atendis %s aŭ %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "sintaks-eraro, neatendita %s, ni atendis %s aŭ %s aŭ %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "sintaks-eraro, neatendita %s, ni atendis %s aŭ %s aŭ %s aŭ %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memoro eluzita"
index dc9c7ba..6bf1b72 100644 (file)
Binary files a/runtime-po/es.gmo and b/runtime-po/es.gmo differ
index 7ba0f69..e1c06c4 100644 (file)
@@ -30,7 +30,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 1.875\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2003-01-02 12:47+0100\n"
 "Last-Translator: Nicolás García-Pedrajas <ngarcia-pedrajas@acm.org>\n"
 "Language-Team: Spanish <es@li.org>\n"
@@ -48,38 +48,38 @@ msgstr ""
 msgid "syntax is ambiguous"
 msgstr ""
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr ""
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr ""
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr ""
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr ""
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memoria agotada"
index bea5108..64193d8 100644 (file)
Binary files a/runtime-po/et.gmo and b/runtime-po/et.gmo differ
index e83b89b..191489d 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.5-rc1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2011-05-03 22:19+0300\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
 "Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
@@ -24,38 +24,38 @@ msgstr "s
 msgid "syntax is ambiguous"
 msgstr "süntaks on segane"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "süntaksi viga"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "süntaksi viga, ootamatu %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "süntaksi viga, ootamatu %s, ootasin %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s või %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s või %s või %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "mälu on otsas"
index d78d6d4..f624671 100644 (file)
Binary files a/runtime-po/fi.gmo and b/runtime-po/fi.gmo differ
index e784eb7..1b91a0f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2007-11-16 19:37+0200\n"
 "Last-Translator: Jorma Karvonen <karvjorm@users.sf.net>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
@@ -25,38 +25,38 @@ msgstr "syntaksivirhe: ei voida tehdä varmuuskopiota"
 msgid "syntax is ambiguous"
 msgstr "syntaksi on moniselitteinen"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksivirhe"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksivirhe, odottamaton %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksivirhe, odottamaton %s, odotetaan %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "syntaksivirhe, odottamaton %s, odotetaan %s tai %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "syntaksivirhe, odottamaton %s, odotetaan %s tai %s tai %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "syntaksivirhe, odottamaton %s, odotetaan %s tai %s tai %s tai %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "muisti loppui"
index 3989d23..1109170 100644 (file)
Binary files a/runtime-po/fr.gmo and b/runtime-po/fr.gmo differ
index 4f964da..9443299 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-21 08:00-0500\n"
 "Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
 "Language-Team: French <traduc@traduc.org>\n"
@@ -25,38 +25,38 @@ msgstr "erreur de syntaxe: ne peut reculer"
 msgid "syntax is ambiguous"
 msgstr "syntaxe ambiguë"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erreur de syntaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erreur de syntaxe, %s inattendu"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erreur de syntaxe, %s inattendu, attendait %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "erreur de syntaxe, %s inattendu, attendait %s ou %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "erreur de syntaxe, %s inattendu, attendait %s ou %s ou %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "erreur de syntaxe, %s inattendu, attendait %s ou %s ou %s ou %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "mémoire épuisée"
index 5b7e47a..a5c7222 100644 (file)
Binary files a/runtime-po/ga.gmo and b/runtime-po/ga.gmo differ
index 3b794d2..e601da8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-18 23:14-0500\n"
 "Last-Translator: Kevin Patrick Scannell <scannell@SLU.EDU>\n"
 "Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
@@ -24,39 +24,39 @@ msgstr "earr
 msgid "syntax is ambiguous"
 msgstr "comhréir dhébhríoch"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "earráid chomhréire"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "earráid chomhréire, %s gan choinne"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "earráid chomhréire, %s gan choinne, bhíothas ag súil le %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "earráid chomhréire, %s gan choinne, bhíothas ag súil le %s nó %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "earráid chomhréire, %s gan choinne, bhíothas ag súil le %s nó %s nó %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "earráid chomhréire, %s gan choinne, bhíothas ag súil le %s nó %s nó %s nó %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "cuimhne ídithe"
index 0ded5f7..83c5682 100644 (file)
Binary files a/runtime-po/gl.gmo and b/runtime-po/gl.gmo differ
index cf9360e..c3ae965 100644 (file)
@@ -11,7 +11,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-11-30 16:43+0100\n"
 "Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
 "Language-Team: Galician <proxecto@trasno.net>\n"
@@ -29,38 +29,38 @@ msgstr "erro de sintaxe: non foi posible realizar unha copia de seguridade"
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambigua"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, non se agardaba %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erro de sintaxe, non se agardaba %s, agardábase %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "erro de sintaxe, non se agardaba %s, agardábase %s ou %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "erro de sintaxe, non se agardaba %s, agardábase %s ou %s ou %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "erro de sintaxe, non se agardaba %s, agardábase %s ou %s ou %s ou %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memoria esgotada"
index 0af8fdd..c8009a7 100644 (file)
Binary files a/runtime-po/hr.gmo and b/runtime-po/hr.gmo differ
index e97b7ce..bd2b067 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.5\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-04-03 21:42+0200\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -27,38 +27,38 @@ msgstr "sintaksna greška: ne mogu napraviti sigurnosnu kopiju"
 msgid "syntax is ambiguous"
 msgstr "sintaksa je višeznačna"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaksna greška"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaksna greška, neočekivani %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "sintaksna greška, neočekivani %s, očekujem %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "sintaksna greška, neočekivani %s, očekujem %s ili %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "sintaksna greška, neočekivani %s, očekujem %s, %s ili %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "sintaksna greška, neočekivani %s, očekujem %s, %s, %s ili %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memorija iscrpljena"
index 7cb719f..dc2a869 100644 (file)
Binary files a/runtime-po/hu.gmo and b/runtime-po/hu.gmo differ
index 3be8bb4..b003aef 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-08-30 05:23+0200\n"
 "Last-Translator: Kéménczy Kálmán <kkemenczy@gmail.com>\n"
 "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
@@ -25,38 +25,38 @@ msgstr "szintaktikai hiba: nem menthető"
 msgid "syntax is ambiguous"
 msgstr "kétértelmű szintaxis"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "szintaktikai hiba"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "szintaktikai hiba, nem várt %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "szintaktikai hiba, nem várt %s, várt: %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "szintaktikai hiba, nem várt %s, várt: %s, vagy %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "szintaktikai hiba, nem várt %s, várt: %s, vagy %s, vagy %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "szintaktikai hiba, nem várt %s, várt: %s, vagy %s, vagy %s, vagy %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "a memória kiürült"
index 99b1619..61b6de9 100644 (file)
Binary files a/runtime-po/id.gmo and b/runtime-po/id.gmo differ
index e892c03..17ad58f 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.0b.id\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-14 20:39+0700\n"
 "Last-Translator: Tedi Heriyanto <tedi_heriyanto@yahoo.com>\n"
 "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -27,41 +27,41 @@ msgstr "kesalahan sintaks: tidak dapat membackup"
 msgid "syntax is ambiguous"
 msgstr "sintaks rancu"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "kesalahan sintaks"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "kesalahan sintaks, %s tidak diharapkan"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "kesalahan sintaks, %s tidak diharapkan, mengharapkan %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "kesalahan sintaks, %s tidak diharapkan, mengharapkan %s atau %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 "kesalahan sintaks, %s tidak diharapkan, mengharapkan %s atau %s atau %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "kesalahan sintaks, %s tidak diharapkan, mengharapkan %s atau %s atau %s atau "
 "%s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memori habis"
index a8f0fcb..ed6acd7 100644 (file)
Binary files a/runtime-po/it.gmo and b/runtime-po/it.gmo differ
index 7830c9c..4daca8a 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-10-25 07:35+0100\n"
 "Last-Translator: Vincenzo Campanella <vinz65@gmail.com>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
@@ -28,38 +28,38 @@ msgstr "errore di sintassi: impossibile tornare indietro"
 msgid "syntax is ambiguous"
 msgstr "la sintassi è ambigua"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "errore di sintassi"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "errore di sintassi, %s non atteso"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "errore di sintassi, ricevuto %s anziché %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "errore di sintassi, ricevuto %s anziché %s o %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "errore di sintassi, ricevuto %s anziché %s, %s o %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "errore di sintassi, ricevuto %s anziché %s, %s, %s o %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memoria esaurita"
index ef25ba6..10d355d 100644 (file)
Binary files a/runtime-po/ja.gmo and b/runtime-po/ja.gmo differ
index 4818d16..2ee79e2 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-01-10 14:26+0900\n"
 "Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
@@ -25,39 +25,39 @@ msgstr "構文エラー: バックアップすることができません"
 msgid "syntax is ambiguous"
 msgstr "構文が曖昧です"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "構文エラー"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "構文エラー、予期しない %s です"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "構文エラー、予期しない %s です。予期されるのは %s です"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "構文エラー、予期しない %s です。予期されるのは %s または %s です"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "構文エラー、 予期しない %s です。予期されるのは %s、%s または %s です"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "構文エラー、予期しない %s です。予期されるのは %s、%s、%s、または %s です。"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "メモリを使い果たしました"
index b9a3e0c..2642ebe 100644 (file)
Binary files a/runtime-po/ky.gmo and b/runtime-po/ky.gmo differ
index 4b52ba6..85c4dce 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2008-01-29 11:47+0600\n"
 "Last-Translator: Ilyas Bakirov <just_ilyas@yahoo.com>\n"
 "Language-Team: Kirghiz <i18n-team-ky-kyrgyz@lists.sourceforge.net>\n"
@@ -26,38 +26,38 @@ msgstr "синтаксис катасы: көчурмө алынган жок"
 msgid "syntax is ambiguous"
 msgstr "синтаксис анык эмес"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксис катасы"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s күтүлүүдө"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s же %s күтүлүүдө"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s же %s же %s күтүлүүдө"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s же %s же %s же %s күтүлүүдө"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "эс колдонулуп бүттүү"
index 9497226..be32e56 100644 (file)
Binary files a/runtime-po/lt.gmo and b/runtime-po/lt.gmo differ
index 750c20f..360ffe5 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2008-05-14 02:10+0300\n"
 "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
 "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
@@ -27,38 +27,38 @@ msgstr "sintaksės klaida: negalima grįžti"
 msgid "syntax is ambiguous"
 msgstr "sintaksė dviprasmė"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaksės klaida"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaksės klaida, netikėtas %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "sintaksės klaida, netikėtas %s, tikėtasi %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "sintaksės klaida, netikėtas %s, tikėtasi %s arba %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "sintaksės klaida, netikėtas %s, tikėtasi %s arba %s arba %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "sintaksės klaida, netikėtas %s, tikėtasi %s arba %s arba %s arba %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "baigėsi atmintis"
index 461c459..bd9e035 100644 (file)
Binary files a/runtime-po/lv.gmo and b/runtime-po/lv.gmo differ
index 7d8488e..6c557c6 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.4\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-07-28 21:28+0200\n"
 "Last-Translator: Rihards Priedītis <rprieditis@gmail.com>\n"
 "Language-Team: Latvian <translation-team-lv@lists.sourceforge.net>\n"
@@ -28,38 +28,38 @@ msgstr "sintakses kļūda: nevar dublēt datus"
 msgid "syntax is ambiguous"
 msgstr "sintakse ir divdomīga"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintakses kļūda"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintakses kļūda, negaidīts %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "sintakses kļūda, negaidīts %s, tika gaidīts %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "sintakses kļūda, negaidīts %s, tika gaidīts %s vai %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "sintakses kļūda, negaidīts %s, tika gaidīts %s vai %s, vai %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "sintakses kļūda, negaidīts %s, tika gaidīts %s vai %s, vai %s, vai %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "izsmelta atmiņa"
index 5782e31..e5767ba 100644 (file)
Binary files a/runtime-po/ms.gmo and b/runtime-po/ms.gmo differ
index a109886..61caec9 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-10-10 10:50+0800\n"
 "Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@myrealbox.com>\n"
 "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
@@ -26,39 +26,39 @@ msgstr "ralat sintaks: tidak dapat mengundur"
 msgid "syntax is ambiguous"
 msgstr "sintaks adalah kabur"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "ralat sintaks"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "ralat sintaks, tidak menjangka %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "ralat sintaks, tidak menjangka %s, menjangka %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "ralat sintaks, tidak menjangka %s, menjangka %s atau %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "ralat sintaks, tidak menjangka %s, menjangka %s atau %s atau %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "ralat sintaks, tidak menjangka %s, menjangka %s atau %s atau %s atau %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "kehabisan memori"
index aab0bc5..a99ceab 100644 (file)
Binary files a/runtime-po/nb.gmo and b/runtime-po/nb.gmo differ
index 7de1280..dc38ff6 100644 (file)
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-21 09:35+0200\n"
 "Last-Translator: Trond Endrestøl <Trond.Endrestol@gtf.ol.no>\n"
 "Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
@@ -40,38 +40,38 @@ msgstr "syntaksfeil: kan ikke g
 msgid "syntax is ambiguous"
 msgstr "syntaksen er flertydig"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksfeil"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksfeil, uforventet %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksfeil, uforventet %s, forventet %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "syntaksfeil, uforventet %s, forventet %s eller %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "syntaksfeil, uforventet %s, forventet %s eller %s eller %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "syntaksfeil, uforventet %s, forventet %s eller %s eller %s eller %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "minne er uttømt"
index 8abdc51..21d2abd 100644 (file)
Binary files a/runtime-po/nl.gmo and b/runtime-po/nl.gmo differ
index 39d6165..0773f61 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-21 11:22+0200\n"
 "Last-Translator: Tim Van Holder <tim.van.holder@telenet.be>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
@@ -25,38 +25,38 @@ msgstr "syntaxfout: kan niet terugkeren"
 msgid "syntax is ambiguous"
 msgstr "syntax is niet eenduidig"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaxfout"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaxfout, %s onverwacht"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaxfout, %s onverwacht (%s verwacht)"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "syntaxfout, %s onverwacht (%s of %s verwacht)"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "syntaxfout, %s onverwacht (%s of %s of %s verwacht)"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "syntaxfout, %s onverwacht (%s of %s of %s of %s verwacht)"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "geen geheugen meer beschikbaar"
index 2570bbd..9c54723 100644 (file)
Binary files a/runtime-po/pl.gmo and b/runtime-po/pl.gmo differ
index 300896c..eba3731 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.1a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-01-30 19:11+0100\n"
 "Last-Translator: Wojciech Polak <polak@gnu.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -26,39 +26,39 @@ msgstr "błąd składni: nie można cofnąć przesunięcia symbolu leksykalnego"
 msgid "syntax is ambiguous"
 msgstr "składnia jest niejednoznaczna"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "błąd składni"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "błąd składni, niespodziewany symbol %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "błąd składni, niespodziewany symbol %s, oczekiwano %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "błąd składni, niespodziewany symbol %s, oczekiwano %s lub %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "błąd składni, niespodziewany %s, oczekiwano %s lub %s lub %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "błąd składni, niespodziewany symbol %s, oczekiwano %s lub %s lub %s lub %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
index eb64679..6066f88 100644 (file)
Binary files a/runtime-po/pt.gmo and b/runtime-po/pt.gmo differ
index b7a4ea1..c0e6c00 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.4\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-01-27 03:16+0100\n"
 "Last-Translator: Hugo Patrício <hugo.a.patricio@gmail.com>\n"
 "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
@@ -27,38 +27,38 @@ msgstr "erro de sintaxe: não é possível voltar"
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambígua"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, %s inesperado"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erro de sintaxe, %s inesperado, esperando %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "erro de sintaxe, %s inesperado, esperando %s ou %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "erro de sintaxe, %s inesperado, esperando %s ou %s ou %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "erro de sintaxe, %s inesperado, esperando %s ou %s ou %s ou %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memória exausta"
index 3140ed5..a488371 100644 (file)
Binary files a/runtime-po/pt_BR.gmo and b/runtime-po/pt_BR.gmo differ
index 474cdd2..496e7fb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2007-05-03 22:39-0300\n"
 "Last-Translator: Leslie Harlley Watter <leslie@watter.org>\n"
 "Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br>\n"
@@ -24,38 +24,38 @@ msgstr "erro de sintaxe: n
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambígua"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, %s não esperado"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erro de sintaxe, %s não esperado, esperando %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "erro de sintaxe, %s não esperado, esperando %s ou %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "erro de sintaxe, %s não esperado, esperando %s ou %s ou %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "erro de sintaxe, %s não esperado, esperando %s ou %s ou %s ou %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "falta de memória"
index 1703bf7..19d5152 100644 (file)
Binary files a/runtime-po/ro.gmo and b/runtime-po/ro.gmo differ
index c369c30..3d0679e 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-20 12:00-0500\n"
 "Last-Translator: Laurentiu Buzdugan <lbuz@rolix.org>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
@@ -28,38 +28,38 @@ msgstr "eroare de sintax
 msgid "syntax is ambiguous"
 msgstr "sintaxa este ambiguã"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "eroare de sintaxã"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "eroare de sintaxã, %s neaºteptat"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "eroare de sintaxã, %s neaºteptat, aºtept %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "eroare de sintaxã, %s neaºteptat, aºtept %s sau %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "eroare de sintaxã, %s neaºteptat, aºtept %s sau %s sau %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "eroare de sintaxã, %s neaºteptat, aºtept %s sau %s sau %s sau %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "memorie epuizatã"
index 90e9ffc..ecd8808 100644 (file)
Binary files a/runtime-po/ru.gmo and b/runtime-po/ru.gmo differ
index 82993db..4fb0d60 100644 (file)
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2009-02-04 19:48+0200\n"
 "Last-Translator: Pavel Maryanov <acid_jack@ukr.net>\n"
 "Language-Team: Russian <gnu@mx.ru>\n"
@@ -28,39 +28,39 @@ msgstr "синтаксическая ошибка: не удалось созд
 msgid "syntax is ambiguous"
 msgstr "неоднозначный синтаксис"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксическая ошибка"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксическая ошибка, непредвиденная %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксическая ошибка, непредвиденная %s, ожидается %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксическая ошибка, непредвиденная %s, ожидается %s или %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "синтаксическая ошибка, непредвиденная %s, ожидается %s или %s, или %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "синтаксическая ошибка, непредвиденная %s, ожидается %s или %s, или %s, или %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "недостаточно памяти"
index e8cd99e..d10ce47 100644 (file)
Binary files a/runtime-po/sl.gmo and b/runtime-po/sl.gmo differ
index 4ee72f4..31c0991 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.5\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-03-05 10:15+0100\n"
 "Last-Translator: Klemen Košir <klemen.kosir@gmx.com>\n"
 "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n"
@@ -27,38 +27,38 @@ msgstr "skladenjska napaka: vrnitev ni mogoča"
 msgid "syntax is ambiguous"
 msgstr "dvoumna skladnja"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "skladenjska napaka"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "skladenjska napaka, nepričakovan %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "skladenjska napaka, nepričakovan %s, pričakuje se %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "skladenjska napaka, nepričakovan %s, pričakuje se %s ali %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "skladenjska napaka, nepričakovan %s, pričakuje se %s , %s ali %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "skladenjska napaka, nepričakovan %s, pričakuje se %s , %s , %s ali %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "zmanjkalo je pomnilnika"
index f007443..762b417 100644 (file)
Binary files a/runtime-po/sr.gmo and b/runtime-po/sr.gmo differ
index 3aa90df..a3e1321 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime-2.5\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2011-12-20 11:07+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <gnu@prevod.org>\n"
@@ -26,39 +26,39 @@ msgstr "грешка синтаксе: не могу да се вратим го
 msgid "syntax is ambiguous"
 msgstr "синтакса је нејасна"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "грешка синтаксе"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "грешка синтаксе, није очекивано %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "грешка синтаксе, није очекивано %s, очекивано је %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "грешка синтаксе, није очекивано %s, очекивано је %s или %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "грешка синтаксе, није очекивано %s, очекивано је %s или %s или %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "грешка синтаксе, није очекивано %s, очекивано је %s или %s или %s или %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "меморија је потрошена"
index 5ce9a5b..52bdabb 100644 (file)
Binary files a/runtime-po/sv.gmo and b/runtime-po/sv.gmo differ
index 3939bbc..f265e46 100644 (file)
@@ -9,7 +9,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.3\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-08-08 14:06+0200\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
@@ -27,38 +27,38 @@ msgstr "syntaxfel: kan inte backa"
 msgid "syntax is ambiguous"
 msgstr "tvetydig syntax"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaxfel"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaxfel, oväntad %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaxfel, oväntad %s, förväntade %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "syntaxfel, oväntad %s, förväntade %s eller %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "syntaxfel, oväntad %s, förväntade %s eller %s eller %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "syntaxfel, oväntad %s, förväntade %s eller %s eller %s eller %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "minnet slut"
index 91090c3..b07abf1 100644 (file)
Binary files a/runtime-po/th.gmo and b/runtime-po/th.gmo differ
index a4e30c3..2f6e415 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.4.2\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2010-03-23 01:30+0700\n"
 "Last-Translator: Seksan Poltree <seksan.poltree@gmail.com>\n"
 "Language-Team: Thai <translation-team-th@lists.sourceforge.net>\n"
@@ -28,38 +28,38 @@ msgstr "ข้อผิดพลาดวากยสัมพันธ์: ไ
 msgid "syntax is ambiguous"
 msgstr "วากยสัมพันธ์คลุมเครือไม่ชัดเจน"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s หรือ %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s หรือ %s หรือ %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s หรือ %s หรือ %s หรือ %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "หน่วยความจำถูกใช้จนหมดสิ้น"
index 4c178f0..31e819c 100644 (file)
Binary files a/runtime-po/tr.gmo and b/runtime-po/tr.gmo differ
index df45558..48c1ec4 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: GNU bison 2.0\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-03-20 22:03+0100\n"
 "Last-Translator: Çaðrý Çöltekin <cagri@xs4all.nl>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
@@ -25,38 +25,38 @@ msgstr ""
 msgid "syntax is ambiguous"
 msgstr ""
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr ""
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr ""
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr ""
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr ""
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "bellek tükendi"
index 86db215..1dd9a47 100644 (file)
Binary files a/runtime-po/uk.gmo and b/runtime-po/uk.gmo differ
index e27774f..bee7e1e 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2007-07-13 20:35+0300\n"
 "Last-Translator: Maxim V. Dziumanenko <dziumanenko@gmail.com>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -25,39 +25,39 @@ msgstr "синтаксична помилка: не вдається зроби
 msgid "syntax is ambiguous"
 msgstr "синтаксис неоднозначний"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксична помилка"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксична помилка, неочікуваний %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксична помилка, неочікуваний %s, очікувалось %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксична помилка, неочікуваний %s, очікувалось %s або %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "синтаксична помилка, неочікуваний %s, очікувалось %s, або %s, або %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "синтаксична помилка, неочікуваний %s, очікувалось %s, або %s, або %s, або %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "пам'ять вичерпано'"
index ed2483a..916697e 100644 (file)
Binary files a/runtime-po/vi.gmo and b/runtime-po/vi.gmo differ
index 64046c6..7bcdcfc 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.5.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2012-07-06 07:13+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -30,38 +30,38 @@ msgstr "lỗi cú pháp: không thể sao lưu dự phòng"
 msgid "syntax is ambiguous"
 msgstr "cú pháp không rõ ràng"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "lỗi cú pháp"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "lỗi cú pháp, gặp %s bất thường"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "lỗi cú pháp, gặp %s bất thường, đang mong chờ %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "lỗi cú pháp, gặp %s bất thường, đang mong chờ %s hay %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "lỗi cú pháp, gặp %s bất thường, đang mong chờ %s hay %s hay %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "lỗi cú pháp, gặp %s bất thường, đang mong chờ %s hay %s hay %s hay %s "
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "cạn bộ nhớ"
index 5debcc4..0145dbc 100644 (file)
Binary files a/runtime-po/zh_CN.gmo and b/runtime-po/zh_CN.gmo differ
index e6315f7..47aba92 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.3a\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2007-08-13 23:19+0800\n"
 "Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -24,38 +24,38 @@ msgstr "语法错误:不能备份"
 msgid "syntax is ambiguous"
 msgstr "语法有歧义"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "语法错误"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "语法错误,非预期的 %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "语法错误,非预期的 %s,需要 %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "语法错误,非预期的 %s,需要 %s 或 %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "语法错误,非预期的 %s,需要 %s,%s 或 %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "语法错误,非预期的 %s,需要 %s,%s,%s 或 %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "内存耗尽"
index 9357988..0fd3f56 100644 (file)
Binary files a/runtime-po/zh_TW.gmo and b/runtime-po/zh_TW.gmo differ
index 96935fb..7993070 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: bison-runtime 2.1\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-07-19 15:26+0200\n"
+"POT-Creation-Date: 2012-08-03 09:44+0200\n"
 "PO-Revision-Date: 2005-09-27 10:31+0800\n"
 "Last-Translator: Wei-Lun Chao <chaoweilun@pcmail.com.tw>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
@@ -24,38 +24,38 @@ msgstr "語法錯誤:無法備份"
 msgid "syntax is ambiguous"
 msgstr "語法不明確"
 
-#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2428
-#: data/lalr1.cc:914 data/lalr1.cc:934 data/yacc.c:1336 data/yacc.c:1852
-#: data/yacc.c:1858
+#: data/glr.c:2041 data/glr.c:2119 data/glr.c:2157 data/glr.c:2426
+#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/yacc.c:1857
 msgid "syntax error"
 msgstr "語法錯誤"
 
-#: data/glr.c:2120 data/lalr1.cc:915 data/yacc.c:1337
+#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "語法錯誤,預期之外的 %s"
 
-#: data/glr.c:2121 data/lalr1.cc:916 data/yacc.c:1338
+#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s"
 
-#: data/glr.c:2122 data/lalr1.cc:917 data/yacc.c:1339
+#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s 或 %s"
 
-#: data/glr.c:2123 data/lalr1.cc:918 data/yacc.c:1340
+#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s、%s 或 %s"
 
-#: data/glr.c:2124 data/lalr1.cc:919 data/yacc.c:1341
+#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s、%s、%s 或 %s"
 
-#: data/glr.c:2488 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1614
-#: data/yacc.c:2007
+#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
+#: data/yacc.c:2006
 msgid "memory exhausted"
 msgstr "記憶體耗盡"
index f003522..d81dce0 100644 (file)
@@ -121,10 +121,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index 9af53a6..ba0b6ed 100644 (file)
@@ -73,7 +73,7 @@ log_resolution (rule *r, symbol_number token,
        {
        case shift_resolution:
        case right_resolution:
-         obstack_fgrow2 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          _("    Conflict between rule %d and token %s"
                            " resolved as shift"),
                          r->number,
@@ -82,7 +82,7 @@ log_resolution (rule *r, symbol_number token,
 
        case reduce_resolution:
        case left_resolution:
-         obstack_fgrow2 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          _("    Conflict between rule %d and token %s"
                            " resolved as reduce"),
                          r->number,
@@ -90,7 +90,7 @@ log_resolution (rule *r, symbol_number token,
          break;
 
        case nonassoc_resolution:
-         obstack_fgrow2 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          _("    Conflict between rule %d and token %s"
                            " resolved as an error"),
                          r->number,
@@ -102,33 +102,33 @@ log_resolution (rule *r, symbol_number token,
       switch (resolution)
        {
        case shift_resolution:
-         obstack_fgrow2 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          " (%s < %s)",
                          r->prec->tag,
                          symbols[token]->tag);
          break;
 
        case reduce_resolution:
-         obstack_fgrow2 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          " (%s < %s)",
                          symbols[token]->tag,
                          r->prec->tag);
          break;
 
        case left_resolution:
-         obstack_fgrow1 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          " (%%left %s)",
                          symbols[token]->tag);
          break;
 
        case right_resolution:
-         obstack_fgrow1 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          " (%%right %s)",
                          symbols[token]->tag);
          break;
 
        case nonassoc_resolution:
-         obstack_fgrow1 (&solved_conflicts_obstack,
+         obstack_printf (&solved_conflicts_obstack,
                          " (%%nonassoc %s)",
                          symbols[token]->tag);
          break;
@@ -145,7 +145,7 @@ log_resolution (rule *r, symbol_number token,
         {
         case shift_resolution:
         case right_resolution:
-          obstack_fgrow2 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "        <resolution rule=\"%d\" symbol=\"%s\""
                           " type=\"shift\">",
                           r->number,
@@ -154,7 +154,7 @@ log_resolution (rule *r, symbol_number token,
 
         case reduce_resolution:
         case left_resolution:
-          obstack_fgrow2 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "        <resolution rule=\"%d\" symbol=\"%s\""
                           " type=\"reduce\">",
                           r->number,
@@ -162,7 +162,7 @@ log_resolution (rule *r, symbol_number token,
           break;
 
         case nonassoc_resolution:
-          obstack_fgrow2 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "        <resolution rule=\"%d\" symbol=\"%s\""
                           " type=\"error\">",
                           r->number,
@@ -174,33 +174,33 @@ log_resolution (rule *r, symbol_number token,
       switch (resolution)
         {
         case shift_resolution:
-          obstack_fgrow2 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "%s &lt; %s",
                           xml_escape_n (0, r->prec->tag),
                           xml_escape_n (1, symbols[token]->tag));
           break;
 
         case reduce_resolution:
-          obstack_fgrow2 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "%s &lt; %s",
                           xml_escape_n (0, symbols[token]->tag),
                           xml_escape_n (1, r->prec->tag));
           break;
 
         case left_resolution:
-          obstack_fgrow1 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "%%left %s",
                           xml_escape (symbols[token]->tag));
           break;
 
         case right_resolution:
-          obstack_fgrow1 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "%%right %s",
                           xml_escape (symbols[token]->tag));
           break;
 
         case nonassoc_resolution:
-          obstack_fgrow1 (&solved_conflicts_xml_obstack,
+          obstack_printf (&solved_conflicts_xml_obstack,
                           "%%nonassoc %s",
                           xml_escape (symbols[token]->tag));
       break;
index c916828..bd1fd17 100644 (file)
@@ -177,10 +177,10 @@ static void
 muscle_syncline_grow (char const *key, location loc)
 {
   char *extension = NULL;
-  obstack_fgrow1 (&muscle_obstack, "]b4_syncline(%d, [[", loc.start.line);
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack,
-                       quotearg_style (c_quoting_style, loc.start.file));
-  obstack_sgrow (&muscle_obstack, "]])[");
+  obstack_printf (&muscle_obstack, "]b4_syncline(%d, ", loc.start.line);
+  obstack_quote (&muscle_obstack,
+                 quotearg_style (c_quoting_style, loc.start.file));
+  obstack_sgrow (&muscle_obstack, ")[");
   obstack_1grow (&muscle_obstack, 0);
   extension = obstack_finish (&muscle_obstack);
   muscle_grow (key, extension, "");
@@ -205,11 +205,11 @@ void muscle_pair_list_grow (const char *muscle,
                            const char *a1, const char *a2)
 {
   char *pair;
-  obstack_sgrow (&muscle_obstack, "[[[");
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack, a1);
-  obstack_sgrow (&muscle_obstack, "]], [[");
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack, a2);
-  obstack_sgrow (&muscle_obstack, "]]]");
+  obstack_sgrow (&muscle_obstack, "[");
+  obstack_quote (&muscle_obstack, a1);
+  obstack_sgrow (&muscle_obstack, "");
+  obstack_quote (&muscle_obstack, a2);
+  obstack_sgrow (&muscle_obstack, "]");
   obstack_1grow (&muscle_obstack, 0);
   pair = obstack_finish (&muscle_obstack);
   muscle_grow (muscle, pair, ",\n");
@@ -259,53 +259,61 @@ muscle_find (char const *key)
 }
 
 
-void
+/* In the format `file_name:line.column', append BOUND to MUSCLE.  Use
+   digraphs for special characters in the file name.  */
+
+static void
 muscle_boundary_grow (char const *key, boundary bound)
 {
   char *extension;
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack, bound.file);
-  obstack_1grow (&muscle_obstack, ':');
-  obstack_fgrow1 (&muscle_obstack, "%d", bound.line);
-  obstack_1grow (&muscle_obstack, '.');
-  obstack_fgrow1 (&muscle_obstack, "%d", bound.column);
-  obstack_1grow (&muscle_obstack, '\0');
+  obstack_sgrow  (&muscle_obstack, "[[");
+  obstack_escape (&muscle_obstack, bound.file);
+  obstack_1grow  (&muscle_obstack, ':');
+  obstack_printf (&muscle_obstack, "%d", bound.line);
+  obstack_1grow  (&muscle_obstack, '.');
+  obstack_printf (&muscle_obstack, "%d", bound.column);
+  obstack_sgrow  (&muscle_obstack, "]]");
+  obstack_1grow  (&muscle_obstack, '\0');
   extension = obstack_finish (&muscle_obstack);
   muscle_grow (key, extension, "");
   obstack_free (&muscle_obstack, extension);
 }
 
-void
+
+/* In the format `[[file_name:line.column]], [[file_name:line.column]]',
+   append LOC to MUSCLE.  Use digraphs for special characters in each
+   file name.  */
+
+static void
 muscle_location_grow (char const *key, location loc)
 {
-  muscle_grow (key, "[[", "");
   muscle_boundary_grow (key, loc.start);
-  muscle_grow (key, "]], [[", "");
+  muscle_grow (key, "", ", ");
   muscle_boundary_grow (key, loc.end);
-  muscle_grow (key, "]]", "");
 }
 
-#define MUSCLE_COMMON_DECODE(Value)                                           \
-  case '$':                                                                   \
-    aver (*++(Value) == ']');                                                 \
-    aver (*++(Value) == '[');                                                 \
-    obstack_sgrow (&muscle_obstack, "$");                                     \
-    break;                                                                    \
-  case '@':                                                                   \
-    switch (*++(Value))                                                       \
-      {                                                                       \
-        case '@': obstack_sgrow (&muscle_obstack, "@" ); break;               \
-        case '{': obstack_sgrow (&muscle_obstack, "[" ); break;               \
-        case '}': obstack_sgrow (&muscle_obstack, "]" ); break;               \
-        default: aver (false); break;                                         \
-      }                                                                       \
-    break;                                                                    \
-  default:                                                                    \
-    obstack_1grow (&muscle_obstack, *(Value));                                \
+#define COMMON_DECODE(Value)                                    \
+  case '$':                                                     \
+    aver (*++(Value) == ']');                                   \
+    aver (*++(Value) == '[');                                   \
+    obstack_sgrow (&muscle_obstack, "$");                       \
+    break;                                                      \
+  case '@':                                                     \
+    switch (*++(Value))                                         \
+      {                                                         \
+        case '@': obstack_sgrow (&muscle_obstack, "@" ); break; \
+        case '{': obstack_sgrow (&muscle_obstack, "[" ); break; \
+        case '}': obstack_sgrow (&muscle_obstack, "]" ); break; \
+        default: aver (false); break;                           \
+      }                                                         \
+    break;                                                      \
+  default:                                                      \
+    obstack_1grow (&muscle_obstack, *(Value));                  \
     break;
 
-/* Reverse of MUSCLE_OBSTACK_SGROW.  */
+/* Reverse of obstack_escape.  */
 static char *
-muscle_string_decode (char const *key)
+string_decode (char const *key)
 {
   char const *value;
   char *value_decoded;
@@ -317,7 +325,7 @@ muscle_string_decode (char const *key)
   do {
     switch (*value)
       {
-        MUSCLE_COMMON_DECODE (value)
+        COMMON_DECODE (value)
         case '[':
         case ']':
           aver (false);
@@ -332,7 +340,7 @@ muscle_string_decode (char const *key)
 
 /* Reverse of muscle_location_grow.  */
 static location
-muscle_location_decode (char const *key)
+location_decode (char const *key)
 {
   location loc;
   char const *value = muscle_find_const (key);
@@ -342,7 +350,7 @@ muscle_location_decode (char const *key)
   while (*++value)
     switch (*value)
       {
-        MUSCLE_COMMON_DECODE (value)
+        COMMON_DECODE (value)
         case '[':
           aver (false);
           break;
@@ -455,7 +463,7 @@ muscle_percent_define_get (char const *variable)
                                variable, ")");
 
   muscle_insert (usage_name, "");
-  value = muscle_string_decode (name);
+  value = string_decode (name);
   if (!value)
     value = xstrdup ("");
   return value;
@@ -469,7 +477,7 @@ muscle_percent_define_get_loc (char const *variable)
   if (!muscle_find_const (loc_name))
     fatal(_("%s: undefined %%define variable %s"),
           "muscle_percent_define_get_loc", quote (variable));
-  return muscle_location_decode (loc_name);
+  return location_decode (loc_name);
 }
 
 char const *
@@ -573,7 +581,7 @@ muscle_percent_define_check_values (char const * const *values)
 
       name = UNIQSTR_CONCAT ("percent_define(", *variablep, ")");
 
-      value = muscle_string_decode (name);
+      value = string_decode (name);
       if (value)
         {
           for (++values; *values; ++values)
index 74563ba..696103f 100644 (file)
@@ -35,62 +35,47 @@ void muscle_free (void);
 /* An obstack dedicated to receive muscle keys and values.  */
 extern struct obstack muscle_obstack;
 
-#define MUSCLE_INSERT_BOOL(Key, Value)                         \
-do {                                                           \
-  int v = Value;                                               \
-  MUSCLE_INSERT_INT (Key, v);                                  \
-} while(0)
-
-#define MUSCLE_INSERT_INT(Key, Value)                          \
-do {                                                           \
-  obstack_fgrow1 (&muscle_obstack, "%d", Value);               \
-  obstack_1grow (&muscle_obstack, 0);                          \
-  muscle_insert (Key, obstack_finish (&muscle_obstack));       \
-} while(0)
-
-#define MUSCLE_INSERT_LONG_INT(Key, Value)                     \
-do {                                                           \
-  obstack_fgrow1 (&muscle_obstack, "%ld", Value);              \
-  obstack_1grow (&muscle_obstack, 0);                          \
-  muscle_insert (Key, obstack_finish (&muscle_obstack));       \
-} while(0)
-
-#define MUSCLE_INSERT_STRING_RAW(Key, Value)                   \
-do {                                                           \
-  obstack_sgrow (&muscle_obstack, Value);                      \
-  obstack_1grow (&muscle_obstack, 0);                          \
-  muscle_insert (Key, obstack_finish (&muscle_obstack));       \
-} while(0)
-
-#define MUSCLE_INSERT_STRING(Key, Value)                       \
-do {                                                           \
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack, Value);                \
-  obstack_1grow (&muscle_obstack, 0);                          \
-  muscle_insert (Key, obstack_finish (&muscle_obstack));       \
-} while(0)
-
-#define MUSCLE_OBSTACK_SGROW(Obstack, Value)                   \
-do {                                                           \
-  char const *p;                                               \
-  for (p = Value; *p; p++)                                     \
-    switch (*p)                                                        \
-      {                                                                \
-      case '$':        obstack_sgrow (Obstack, "$]["); break;          \
-      case '@':        obstack_sgrow (Obstack, "@@" ); break;          \
-      case '[':        obstack_sgrow (Obstack, "@{" ); break;          \
-      case ']':        obstack_sgrow (Obstack, "@}" ); break;          \
-      default: obstack_1grow (Obstack, *p); break;             \
-      }                                                                \
-} while(0)
-
-#define MUSCLE_INSERT_C_STRING(Key, Value)                     \
-do {                                                           \
-  MUSCLE_OBSTACK_SGROW (&muscle_obstack,                       \
-                       quotearg_style (c_quoting_style,        \
-                                       Value));                \
-  obstack_1grow (&muscle_obstack, 0);                          \
-  muscle_insert (Key, obstack_finish (&muscle_obstack));       \
-} while(0)
+#define MUSCLE_INSERT_BOOL(Key, Value)                          \
+  do {                                                          \
+    int v = Value;                                              \
+    MUSCLE_INSERT_INT (Key, v);                                 \
+  } while (0)
+
+#define MUSCLE_INSERT_INT(Key, Value)                           \
+  do {                                                          \
+    obstack_printf (&muscle_obstack, "%d", Value);              \
+    obstack_1grow (&muscle_obstack, 0);                         \
+    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+  } while (0)
+
+#define MUSCLE_INSERT_LONG_INT(Key, Value)                      \
+  do {                                                          \
+    obstack_printf (&muscle_obstack, "%ld", Value);             \
+    obstack_1grow (&muscle_obstack, 0);                         \
+    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+  } while (0)
+
+#define MUSCLE_INSERT_STRING_RAW(Key, Value)                    \
+  do {                                                          \
+    obstack_sgrow (&muscle_obstack, Value);                     \
+    obstack_1grow (&muscle_obstack, 0);                         \
+    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+  } while (0)
+
+#define MUSCLE_INSERT_STRING(Key, Value)                        \
+  do {                                                          \
+    obstack_escape (&muscle_obstack, Value);                    \
+    obstack_1grow (&muscle_obstack, 0);                         \
+    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+  } while (0)
+
+#define MUSCLE_INSERT_C_STRING(Key, Value)                      \
+  do {                                                          \
+    obstack_escape (&muscle_obstack,                            \
+                    quotearg_style (c_quoting_style, Value));   \
+    obstack_1grow (&muscle_obstack, 0);                         \
+    muscle_insert (Key, obstack_finish (&muscle_obstack));      \
+  } while (0)
 
 /* Append VALUE to the current value of KEY.  If KEY did not already
    exist, create it.  Use MUSCLE_OBSTACK.  De-allocate the previously
@@ -110,15 +95,7 @@ void muscle_code_grow (const char *key, const char *value, location loc);
    muscle values are output *double* quoted, one needs to strip the first level
    of quotes to reach the list itself.  */
 void muscle_pair_list_grow (const char *muscle,
-                           const char *a1, const char *a2);
-
-/* In the format `[[file_name:line.column]], [[file_name:line.column]]', append
-   LOC to MUSCLE.  Use digraphs for special characters in each file name.  */
-void muscle_location_grow (char const *key, location loc);
-
-/* In the format `file_name:line.column', append BOUND to MUSCLE.  Use digraphs
-   for special characters in the file name.  */
-void muscle_boundary_grow (char const *key, boundary bound);
+                            const char *a1, const char *a2);
 
 /* Grow KEY for the occurrence of the name USER_NAME at LOC appropriately for
    use with b4_check_user_names in ../data/bison.m4.  USER_NAME is not escaped
index 29e9ba8..e77a2d1 100644 (file)
@@ -70,7 +70,7 @@ Name (char const *name,                                                       \
   int i;                                                               \
   int j = 1;                                                           \
                                                                        \
-  obstack_fgrow1 (&format_obstack, "%6d", first);                      \
+  obstack_printf (&format_obstack, "%6d", first);                      \
   for (i = begin; i < end; ++i)                                                \
     {                                                                  \
       obstack_1grow (&format_obstack, ',');                            \
@@ -81,7 +81,7 @@ Name (char const *name,                                                       \
        }                                                               \
       else                                                             \
        ++j;                                                            \
-      obstack_fgrow1 (&format_obstack, "%6d", table_data[i]);          \
+      obstack_printf (&format_obstack, "%6d", table_data[i]);          \
       if (table_data[i] < min)                                         \
        min = table_data[i];                                            \
       if (max < table_data[i])                                         \
@@ -93,10 +93,10 @@ Name (char const *name,                                                     \
   lmin = min;                                                          \
   lmax = max;                                                          \
   /* Build `NAME_min' and `NAME_max' in the obstack. */                        \
-  obstack_fgrow1 (&format_obstack, "%s_min", name);                    \
+  obstack_printf (&format_obstack, "%s_min", name);                    \
   obstack_1grow (&format_obstack, 0);                                  \
   MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmin);     \
-  obstack_fgrow1 (&format_obstack, "%s_max", name);                    \
+  obstack_printf (&format_obstack, "%s_max", name);                    \
   obstack_1grow (&format_obstack, 0);                                  \
   MUSCLE_INSERT_LONG_INT (obstack_finish (&format_obstack), lmax);     \
 }
@@ -110,29 +110,39 @@ GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_item_number_table, item_number)
 GENERATE_MUSCLE_INSERT_TABLE(muscle_insert_state_number_table, state_number)
 
 
-/*--------------------------------------------------------------------.
-| Print to OUT a representation of STRING escaped both for C and M4.  |
-`--------------------------------------------------------------------*/
+/*----------------------------------------------------------------.
+| Print to OUT a representation of CP quoted and escaped for M4.  |
+`----------------------------------------------------------------*/
 
 static void
-escaped_output (FILE *out, char const *string)
+quoted_output (FILE *out, char const *cp)
 {
-  char const *p;
   fprintf (out, "[[");
 
-  for (p = quotearg_style (c_quoting_style, string); *p; p++)
-    switch (*p)
+  for (; *cp; cp++)
+    switch (*cp)
       {
       case '$': fputs ("$][", out); break;
       case '@': fputs ("@@",  out); break;
       case '[': fputs ("@{",  out); break;
       case ']': fputs ("@}",  out); break;
-      default: fputc (*p, out); break;
+      default:  fputc (*cp,   out); break;
       }
 
   fprintf (out, "]]");
 }
 
+/*----------------------------------------------------------------.
+| Print to OUT a representation of STRING quoted and escaped both |
+| for C and M4.                                                   |
+`----------------------------------------------------------------*/
+
+static void
+string_output (FILE *out, char const *string)
+{
+  quoted_output (out, quotearg_style (c_quoting_style, string));
+}
+
 
 /*------------------------------------------------------------------.
 | Prepare the muscles related to the symbols: translate, tname, and |
@@ -175,7 +185,7 @@ prepare_symbols (void)
 
        if (i)
          obstack_1grow (&format_obstack, ' ');
-       MUSCLE_OBSTACK_SGROW (&format_obstack, cp);
+       obstack_escape (&format_obstack, cp);
         free (cp);
        obstack_1grow (&format_obstack, ',');
        j += width;
@@ -299,7 +309,7 @@ user_actions_output (FILE *out)
       {
        fprintf (out, "b4_case(%d, [b4_syncline(%d, ", r + 1,
                 rules[r].action_location.start.line);
-       escaped_output (out, rules[r].action_location.start.file);
+       string_output (out, rules[r].action_location.start.file);
        fprintf (out, ")\n[    %s]])\n\n", rules[r].action);
       }
   fputs ("])\n\n", out);
@@ -405,12 +415,15 @@ symbol_code_props_output (FILE *out, char const *what,
              code, optional typename.  */
           fprintf (out, "%s[", sep);
           sep = ",\n";
-          escaped_output (out, loc.start.file);
+          string_output (out, loc.start.file);
           fprintf (out, ", %d, ", loc.start.line);
-          escaped_output (out, sym->tag);
+          quoted_output (out, sym->tag);
           fprintf (out, ", %d, [[%s]]", sym->number, code);
           if (sym->type_name)
-            fprintf (out, ", [[%s]]", sym->type_name);
+            {
+              fputs (", ", out);
+              quoted_output (out, sym->type_name);
+            }
           fputc (']', out);
         }
     }
index 31d2085..a04f2f2 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.1.19-ced26-dirty.  */
+/* A Bison parser, made by GNU Bison 2.6.1.12-3153-dirty.  */
 
 /* Bison implementation for Yacc-like parsers in C
    
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.5.1.19-ced26-dirty"
+#define YYBISON_VERSION "2.6.1.12-3153-dirty"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -58,8 +58,6 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 1
 
 /* Substitute the variable and function names.  */
 #define yyparse         gram_parse
@@ -72,8 +70,7 @@
 #define yylloc          gram_lloc
 
 /* Copy the first part of user declarations.  */
-
-/* Line 323 of yacc.c  */
+/* Line 336 of yacc.c  */
 #line 1 "parse-gram.y"
 /* Bison Grammar Parser                             -*- C -*-
 
@@ -168,9 +165,8 @@ current_lhs(symbol *sym, location loc, named_ref *ref)
 #define YYTYPE_UINT16 uint_fast16_t
 #define YYTYPE_UINT8 uint_fast8_t
 
-
-/* Line 323 of yacc.c  */
-#line 174 "parse-gram.c"
+/* Line 336 of yacc.c  */
+#line 170 "parse-gram.c"
 
 # ifndef YY_NULL
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -188,18 +184,201 @@ current_lhs(symbol *sym, location loc, named_ref *ref)
 # define YYERROR_VERBOSE 1
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
+/* In a future release of Bison, this section will be replaced
+   by #include "parse-gram.h".  */
+#ifndef GRAM_Y_TAB_H
+# define GRAM_Y_TAB_H
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+#if YYDEBUG
+extern int gram_debug;
 #endif
 
-#include "parse-gram.h"
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     GRAM_EOF = 0,
+     STRING = 258,
+     INT = 259,
+     PERCENT_TOKEN = 260,
+     PERCENT_NTERM = 261,
+     PERCENT_TYPE = 262,
+     PERCENT_DESTRUCTOR = 263,
+     PERCENT_PRINTER = 264,
+     PERCENT_LEFT = 265,
+     PERCENT_RIGHT = 266,
+     PERCENT_NONASSOC = 267,
+     PERCENT_PREC = 268,
+     PERCENT_DPREC = 269,
+     PERCENT_MERGE = 270,
+     PERCENT_CODE = 271,
+     PERCENT_DEBUG = 272,
+     PERCENT_DEFAULT_PREC = 273,
+     PERCENT_DEFINE = 274,
+     PERCENT_DEFINES = 275,
+     PERCENT_ERROR_VERBOSE = 276,
+     PERCENT_EXPECT = 277,
+     PERCENT_EXPECT_RR = 278,
+     PERCENT_FILE_PREFIX = 279,
+     PERCENT_GLR_PARSER = 280,
+     PERCENT_INITIAL_ACTION = 281,
+     PERCENT_LANGUAGE = 282,
+     PERCENT_LEX_PARAM = 283,
+     PERCENT_LOCATIONS = 284,
+     PERCENT_NAME_PREFIX = 285,
+     PERCENT_NO_DEFAULT_PREC = 286,
+     PERCENT_NO_LINES = 287,
+     PERCENT_NONDETERMINISTIC_PARSER = 288,
+     PERCENT_OUTPUT = 289,
+     PERCENT_PARSE_PARAM = 290,
+     PERCENT_PURE_PARSER = 291,
+     PERCENT_REQUIRE = 292,
+     PERCENT_SKELETON = 293,
+     PERCENT_START = 294,
+     PERCENT_TOKEN_TABLE = 295,
+     PERCENT_VERBOSE = 296,
+     PERCENT_YACC = 297,
+     BRACED_CODE = 298,
+     BRACKETED_ID = 299,
+     CHAR = 300,
+     EPILOGUE = 301,
+     EQUAL = 302,
+     ID = 303,
+     ID_COLON = 304,
+     PERCENT_PERCENT = 305,
+     PIPE = 306,
+     PROLOGUE = 307,
+     SEMICOLON = 308,
+     TYPE = 309,
+     TYPE_TAG_ANY = 310,
+     TYPE_TAG_NONE = 311,
+     PERCENT_UNION = 312
+   };
+#endif
+/* Tokens.  */
+#define GRAM_EOF 0
+#define STRING 258
+#define INT 259
+#define PERCENT_TOKEN 260
+#define PERCENT_NTERM 261
+#define PERCENT_TYPE 262
+#define PERCENT_DESTRUCTOR 263
+#define PERCENT_PRINTER 264
+#define PERCENT_LEFT 265
+#define PERCENT_RIGHT 266
+#define PERCENT_NONASSOC 267
+#define PERCENT_PREC 268
+#define PERCENT_DPREC 269
+#define PERCENT_MERGE 270
+#define PERCENT_CODE 271
+#define PERCENT_DEBUG 272
+#define PERCENT_DEFAULT_PREC 273
+#define PERCENT_DEFINE 274
+#define PERCENT_DEFINES 275
+#define PERCENT_ERROR_VERBOSE 276
+#define PERCENT_EXPECT 277
+#define PERCENT_EXPECT_RR 278
+#define PERCENT_FILE_PREFIX 279
+#define PERCENT_GLR_PARSER 280
+#define PERCENT_INITIAL_ACTION 281
+#define PERCENT_LANGUAGE 282
+#define PERCENT_LEX_PARAM 283
+#define PERCENT_LOCATIONS 284
+#define PERCENT_NAME_PREFIX 285
+#define PERCENT_NO_DEFAULT_PREC 286
+#define PERCENT_NO_LINES 287
+#define PERCENT_NONDETERMINISTIC_PARSER 288
+#define PERCENT_OUTPUT 289
+#define PERCENT_PARSE_PARAM 290
+#define PERCENT_PURE_PARSER 291
+#define PERCENT_REQUIRE 292
+#define PERCENT_SKELETON 293
+#define PERCENT_START 294
+#define PERCENT_TOKEN_TABLE 295
+#define PERCENT_VERBOSE 296
+#define PERCENT_YACC 297
+#define BRACED_CODE 298
+#define BRACKETED_ID 299
+#define CHAR 300
+#define EPILOGUE 301
+#define EQUAL 302
+#define ID 303
+#define ID_COLON 304
+#define PERCENT_PERCENT 305
+#define PIPE 306
+#define PROLOGUE 307
+#define SEMICOLON 308
+#define TYPE 309
+#define TYPE_TAG_ANY 310
+#define TYPE_TAG_NONE 311
+#define PERCENT_UNION 312
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+/* Line 350 of yacc.c  */
+#line 114 "parse-gram.y"
+
+  symbol *symbol;
+  symbol_list *list;
+  int integer;
+  char const *chars;
+  char *code;
+  assoc assoc;
+  uniqstr uniqstr;
+  unsigned char character;
+  named_ref *named_ref;
+
+
+/* Line 350 of yacc.c  */
+#line 342 "parse-gram.c"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
 
-/* Copy the second part of user declarations.  */
+#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
+typedef struct YYLTYPE
+{
+  int first_line;
+  int first_column;
+  int last_line;
+  int last_column;
+} YYLTYPE;
+# define yyltype YYLTYPE /* obsolescent; will be withdrawn */
+# define YYLTYPE_IS_DECLARED 1
+# define YYLTYPE_IS_TRIVIAL 1
+#endif
 
 
-/* Line 344 of yacc.c  */
-#line 203 "parse-gram.c"
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int gram_parse (void *YYPARSE_PARAM);
+#else
+int gram_parse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int gram_parse (void);
+#else
+int gram_parse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+#endif /* !GRAM_Y_TAB_H  */
+
+/* Copy the second part of user declarations.  */
+
+/* Line 353 of yacc.c  */
+#line 382 "parse-gram.c"
 
 #ifdef short
 # undef short
@@ -509,18 +688,18 @@ static const yytype_uint16 yyrline[] =
        0,   229,   229,   237,   239,   243,   244,   254,   255,   260,
      261,   266,   267,   268,   269,   270,   271,   276,   285,   286,
      287,   288,   289,   290,   291,   292,   293,   294,   295,   310,
-     311,   335,   336,   337,   338,   342,   343,   344,   348,   355,
-     362,   366,   370,   377,   392,   393,   397,   409,   409,   414,
-     414,   419,   430,   445,   446,   447,   451,   452,   457,   459,
-     464,   465,   470,   472,   477,   478,   482,   483,   484,   485,
-     490,   495,   500,   506,   512,   523,   524,   533,   534,   540,
-     541,   542,   549,   549,   557,   558,   559,   564,   566,   568,
-     570,   572,   574,   579,   581,   592,   593,   598,   599,   600,
-     609,   629,   631,   640,   645,   646,   651,   658,   660
+     311,   335,   336,   337,   338,   342,   343,   344,   348,   360,
+     372,   376,   380,   387,   402,   403,   407,   419,   419,   424,
+     424,   429,   440,   455,   456,   457,   461,   462,   467,   469,
+     474,   475,   480,   482,   487,   488,   492,   493,   494,   495,
+     500,   505,   510,   516,   522,   533,   534,   543,   544,   550,
+     551,   552,   559,   559,   567,   568,   569,   574,   576,   578,
+     580,   582,   584,   589,   591,   602,   603,   608,   609,   610,
+     619,   639,   641,   650,   655,   656,   661,   668,   670
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 1
 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
@@ -780,32 +959,33 @@ while (YYID (0))
 #define YYTERROR       1
 #define YYERRCODE      256
 
-
 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
    If N is 0, then set CURRENT to the empty location which ends
    the previous symbol: RHS[0] (always defined).  */
 
-#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)                               \
-    do                                                                 \
-      if (YYID (N))                                                    \
-       {                                                               \
-         (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
-         (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
-         (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
-         (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
-       }                                                               \
-      else                                                             \
-       {                                                               \
-         (Current).first_line   = (Current).last_line   =              \
-           YYRHSLOC (Rhs, 0).last_line;                                \
-         (Current).first_column = (Current).last_column =              \
-           YYRHSLOC (Rhs, 0).last_column;                              \
-       }                                                               \
+# define YYLLOC_DEFAULT(Current, Rhs, N)                                \
+    do                                                                  \
+      if (YYID (N))                                                     \
+        {                                                               \
+          (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
+          (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
+          (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
+          (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
+        }                                                               \
+      else                                                              \
+        {                                                               \
+          (Current).first_line   = (Current).last_line   =              \
+            YYRHSLOC (Rhs, 0).last_line;                                \
+          (Current).first_column = (Current).last_column =              \
+            YYRHSLOC (Rhs, 0).last_column;                              \
+        }                                                               \
     while (YYID (0))
 #endif
 
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+
+
 
 /* YY_LOCATION_PRINT -- Print the location on the stream.
    This macro was not mandated originally: define only if we know
@@ -888,167 +1068,131 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
 # endif
   switch (yytype)
     {
-      case 3: /* "\"string\"" */
-
-/* Line 822 of yacc.c  */
+      case 3: /* "string" */
+/* Line 809 of yacc.c  */
 #line 204 "parse-gram.y"
-       { fputs (quotearg_style (c_quoting_style, (yyvaluep->chars)), stderr); };
-
-/* Line 822 of yacc.c  */
-#line 899 "parse-gram.c"
+       { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).chars)), stderr); };
+/* Line 809 of yacc.c  */
+#line 1077 "parse-gram.c"
        break;
-      case 4: /* "\"integer\"" */
-
-/* Line 822 of yacc.c  */
+      case 4: /* "integer" */
+/* Line 809 of yacc.c  */
 #line 216 "parse-gram.y"
-       { fprintf (stderr, "%d", (yyvaluep->integer)); };
-
-/* Line 822 of yacc.c  */
-#line 908 "parse-gram.c"
+       { fprintf (stderr, "%d", ((*yyvaluep).integer)); };
+/* Line 809 of yacc.c  */
+#line 1084 "parse-gram.c"
        break;
-      case 43: /* "\"{...}\"" */
-
-/* Line 822 of yacc.c  */
+      case 43: /* "{...}" */
+/* Line 809 of yacc.c  */
 #line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", (yyvaluep->code)); };
-
-/* Line 822 of yacc.c  */
-#line 917 "parse-gram.c"
+       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).code)); };
+/* Line 809 of yacc.c  */
+#line 1091 "parse-gram.c"
        break;
-      case 44: /* "\"[identifier]\"" */
-
-/* Line 822 of yacc.c  */
+      case 44: /* "[identifier]" */
+/* Line 809 of yacc.c  */
 #line 211 "parse-gram.y"
-       { fprintf (stderr, "[%s]", (yyvaluep->uniqstr)); };
-
-/* Line 822 of yacc.c  */
-#line 926 "parse-gram.c"
+       { fprintf (stderr, "[%s]", ((*yyvaluep).uniqstr)); };
+/* Line 809 of yacc.c  */
+#line 1098 "parse-gram.c"
        break;
-      case 45: /* "\"char\"" */
-
-/* Line 822 of yacc.c  */
+      case 45: /* "char" */
+/* Line 809 of yacc.c  */
 #line 198 "parse-gram.y"
-       { fputs (char_name ((yyvaluep->character)), stderr); };
-
-/* Line 822 of yacc.c  */
-#line 935 "parse-gram.c"
+       { fputs (char_name (((*yyvaluep).character)), stderr); };
+/* Line 809 of yacc.c  */
+#line 1105 "parse-gram.c"
        break;
-      case 46: /* "\"epilogue\"" */
-
-/* Line 822 of yacc.c  */
+      case 46: /* "epilogue" */
+/* Line 809 of yacc.c  */
 #line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-
-/* Line 822 of yacc.c  */
-#line 944 "parse-gram.c"
+       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 809 of yacc.c  */
+#line 1112 "parse-gram.c"
        break;
-      case 48: /* "\"identifier\"" */
-
-/* Line 822 of yacc.c  */
+      case 48: /* "identifier" */
+/* Line 809 of yacc.c  */
 #line 210 "parse-gram.y"
-       { fputs ((yyvaluep->uniqstr), stderr); };
-
-/* Line 822 of yacc.c  */
-#line 953 "parse-gram.c"
+       { fputs (((*yyvaluep).uniqstr), stderr); };
+/* Line 809 of yacc.c  */
+#line 1119 "parse-gram.c"
        break;
-      case 49: /* "\"identifier:\"" */
-
-/* Line 822 of yacc.c  */
+      case 49: /* "identifier:" */
+/* Line 809 of yacc.c  */
 #line 212 "parse-gram.y"
-       { fprintf (stderr, "%s:", (yyvaluep->uniqstr)); };
-
-/* Line 822 of yacc.c  */
-#line 962 "parse-gram.c"
+       { fprintf (stderr, "%s:", ((*yyvaluep).uniqstr)); };
+/* Line 809 of yacc.c  */
+#line 1126 "parse-gram.c"
        break;
-      case 52: /* "\"%{...%}\"" */
-
-/* Line 822 of yacc.c  */
+      case 52: /* "%{...%}" */
+/* Line 809 of yacc.c  */
 #line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-
-/* Line 822 of yacc.c  */
-#line 971 "parse-gram.c"
+       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 809 of yacc.c  */
+#line 1133 "parse-gram.c"
        break;
-      case 54: /* "\"type\"" */
-
-/* Line 822 of yacc.c  */
+      case 54: /* "type" */
+/* Line 809 of yacc.c  */
 #line 213 "parse-gram.y"
-       { fprintf (stderr, "<%s>", (yyvaluep->uniqstr)); };
-
-/* Line 822 of yacc.c  */
-#line 980 "parse-gram.c"
+       { fprintf (stderr, "<%s>", ((*yyvaluep).uniqstr)); };
+/* Line 809 of yacc.c  */
+#line 1140 "parse-gram.c"
        break;
-      case 71: /* "symbol.prec" */
-
-/* Line 822 of yacc.c  */
+      case 71: /* symbol.prec */
+/* Line 809 of yacc.c  */
 #line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-
-/* Line 822 of yacc.c  */
-#line 989 "parse-gram.c"
+       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 809 of yacc.c  */
+#line 1147 "parse-gram.c"
        break;
-      case 84: /* "variable" */
-
-/* Line 822 of yacc.c  */
+      case 84: /* variable */
+/* Line 809 of yacc.c  */
 #line 210 "parse-gram.y"
-       { fputs ((yyvaluep->uniqstr), stderr); };
-
-/* Line 822 of yacc.c  */
-#line 998 "parse-gram.c"
+       { fputs (((*yyvaluep).uniqstr), stderr); };
+/* Line 809 of yacc.c  */
+#line 1154 "parse-gram.c"
        break;
-      case 85: /* "content.opt" */
-
-/* Line 822 of yacc.c  */
+      case 85: /* content.opt */
+/* Line 809 of yacc.c  */
 #line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-
-/* Line 822 of yacc.c  */
-#line 1007 "parse-gram.c"
+       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 809 of yacc.c  */
+#line 1161 "parse-gram.c"
        break;
-      case 86: /* "braceless" */
-
-/* Line 822 of yacc.c  */
+      case 86: /* braceless */
+/* Line 809 of yacc.c  */
 #line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", (yyvaluep->chars)); };
-
-/* Line 822 of yacc.c  */
-#line 1016 "parse-gram.c"
+       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 809 of yacc.c  */
+#line 1168 "parse-gram.c"
        break;
-      case 87: /* "id" */
-
-/* Line 822 of yacc.c  */
+      case 87: /* id */
+/* Line 809 of yacc.c  */
 #line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-
-/* Line 822 of yacc.c  */
-#line 1025 "parse-gram.c"
+       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 809 of yacc.c  */
+#line 1175 "parse-gram.c"
        break;
-      case 88: /* "id_colon" */
-
-/* Line 822 of yacc.c  */
+      case 88: /* id_colon */
+/* Line 809 of yacc.c  */
 #line 220 "parse-gram.y"
-       { fprintf (stderr, "%s:", (yyvaluep->symbol)->tag); };
-
-/* Line 822 of yacc.c  */
-#line 1034 "parse-gram.c"
+       { fprintf (stderr, "%s:", ((*yyvaluep).symbol)->tag); };
+/* Line 809 of yacc.c  */
+#line 1182 "parse-gram.c"
        break;
-      case 89: /* "symbol" */
-
-/* Line 822 of yacc.c  */
+      case 89: /* symbol */
+/* Line 809 of yacc.c  */
 #line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-
-/* Line 822 of yacc.c  */
-#line 1043 "parse-gram.c"
+       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 809 of yacc.c  */
+#line 1189 "parse-gram.c"
        break;
-      case 90: /* "string_as_id" */
-
-/* Line 822 of yacc.c  */
+      case 90: /* string_as_id */
+/* Line 809 of yacc.c  */
 #line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", (yyvaluep->symbol)->tag); };
-
-/* Line 822 of yacc.c  */
-#line 1052 "parse-gram.c"
+       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 809 of yacc.c  */
+#line 1196 "parse-gram.c"
        break;
       default:
        break;
@@ -1824,8 +1968,7 @@ YYLTYPE yylloc;
 #endif
 
 /* User initialization code.  */
-
-/* Line 1585 of yacc.c  */
+/* Line 1572 of yacc.c  */
 #line 106 "parse-gram.y"
 {
   /* Bison's grammar can initial empty locations, hence a default
@@ -1833,11 +1976,9 @@ YYLTYPE yylloc;
   boundary_set (&yylloc.start, current_file, 1, 1);
   boundary_set (&yylloc.end, current_file, 1, 1);
 }
-
-/* Line 1585 of yacc.c  */
-#line 1839 "parse-gram.c"
+/* Line 1572 of yacc.c  */
+#line 1981 "parse-gram.c"
   yylsp[0] = yylloc;
-
   goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -2028,8 +2169,7 @@ yyreduce:
     switch (yyn)
       {
           case 6:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 245 "parse-gram.y"
     {
       code_props plain_code;
@@ -2043,15 +2183,13 @@ yyreduce:
     break;
 
   case 7:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 254 "parse-gram.y"
     { debug_flag = true; }
     break;
 
   case 8:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 256 "parse-gram.y"
     {
       muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars),
@@ -2060,15 +2198,13 @@ yyreduce:
     break;
 
   case 9:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 260 "parse-gram.y"
     { defines_flag = true; }
     break;
 
   case 10:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 262 "parse-gram.y"
     {
       defines_flag = true;
@@ -2077,43 +2213,37 @@ yyreduce:
     break;
 
   case 11:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 266 "parse-gram.y"
     { error_verbose = true; }
     break;
 
   case 12:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 267 "parse-gram.y"
     { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 13:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 268 "parse-gram.y"
     { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 14:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 269 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 15:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 270 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 16:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 272 "parse-gram.y"
     {
       nondeterministic_parser = true;
@@ -2122,8 +2252,7 @@ yyreduce:
     break;
 
   case 17:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 277 "parse-gram.y"
     {
       code_props action;
@@ -2136,78 +2265,67 @@ yyreduce:
     break;
 
   case 18:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 285 "parse-gram.y"
     { language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, (yylsp[(1) - (2)])); }
     break;
 
   case 19:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 286 "parse-gram.y"
     { add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 20:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 287 "parse-gram.y"
     { locations_flag = true; }
     break;
 
   case 21:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 288 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 22:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 289 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 23:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 290 "parse-gram.y"
     { no_lines_flag = true; }
     break;
 
   case 24:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 291 "parse-gram.y"
     { nondeterministic_parser = true; }
     break;
 
   case 25:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 292 "parse-gram.y"
     { spec_outfile = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 26:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 293 "parse-gram.y"
     { spec_outfile = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 27:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 294 "parse-gram.y"
     { add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 28:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 296 "parse-gram.y"
     {
       /* %pure-parser is deprecated in favor of `%define api.pure', so use
@@ -2226,15 +2344,13 @@ yyreduce:
     break;
 
   case 29:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 310 "parse-gram.y"
     { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
     break;
 
   case 30:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 312 "parse-gram.y"
     {
       char const *skeleton_user = (yyvsp[(2) - (2)].chars);
@@ -2262,29 +2378,25 @@ yyreduce:
     break;
 
   case 31:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 335 "parse-gram.y"
     { token_table_flag = true; }
     break;
 
   case 32:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 336 "parse-gram.y"
     { report_flag |= report_states; }
     break;
 
   case 33:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 337 "parse-gram.y"
     { yacc_flag = true; }
     break;
 
   case 37:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 345 "parse-gram.y"
     {
       grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
@@ -2292,51 +2404,56 @@ yyreduce:
     break;
 
   case 38:
-
-/* Line 1801 of yacc.c  */
+/* Line 1787 of yacc.c  */
 #line 349 "parse-gram.y"
     {
-      symbol_list *list;
-      for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
-       symbol_list_destructor_set (list, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
-      symbol_list_free ((yyvsp[(3) - (3)].list));
+      code_props code;
+      code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
+      code_props_translate_code (&code);
+      {
+        symbol_list *list;
+        for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
+          symbol_list_destructor_set (list, &code);
+        symbol_list_free ((yyvsp[(3) - (3)].list));
+      }
     }
     break;
 
   case 39:
-
-/* Line 1801 of yacc.c  */
-#line 356 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 361 "parse-gram.y"
     {
-      symbol_list *list;
-      for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
-       symbol_list_printer_set (list, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
-      symbol_list_free ((yyvsp[(3) - (3)].list));
+      code_props code;
+      code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
+      code_props_translate_code (&code);
+      {
+        symbol_list *list;
+        for (list = (yyvsp[(3) - (3)].list); list; list = list->next)
+          symbol_list_printer_set (list, &code);
+        symbol_list_free ((yyvsp[(3) - (3)].list));
+      }
     }
     break;
 
   case 40:
-
-/* Line 1801 of yacc.c  */
-#line 363 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 373 "parse-gram.y"
     {
       default_prec = true;
     }
     break;
 
   case 41:
-
-/* Line 1801 of yacc.c  */
-#line 367 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 377 "parse-gram.y"
     {
       default_prec = false;
     }
     break;
 
   case 42:
-
-/* Line 1801 of yacc.c  */
-#line 371 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 381 "parse-gram.y"
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
          muscle_user_name_list_grow.  */
@@ -2346,9 +2463,8 @@ yyreduce:
     break;
 
   case 43:
-
-/* Line 1801 of yacc.c  */
-#line 378 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 388 "parse-gram.y"
     {
       muscle_percent_code_grow ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
       code_scanner_last_string_free ();
@@ -2356,23 +2472,20 @@ yyreduce:
     break;
 
   case 44:
-
-/* Line 1801 of yacc.c  */
-#line 392 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 402 "parse-gram.y"
     {}
     break;
 
   case 45:
-
-/* Line 1801 of yacc.c  */
-#line 393 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 403 "parse-gram.y"
     { muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 46:
-
-/* Line 1801 of yacc.c  */
-#line 398 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 408 "parse-gram.y"
     {
       union_seen = true;
       muscle_code_grow ("stype", (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
@@ -2381,16 +2494,14 @@ yyreduce:
     break;
 
   case 47:
-
-/* Line 1801 of yacc.c  */
-#line 409 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 419 "parse-gram.y"
     { current_class = nterm_sym; }
     break;
 
   case 48:
-
-/* Line 1801 of yacc.c  */
-#line 410 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 420 "parse-gram.y"
     {
       current_class = unknown_sym;
       current_type = NULL;
@@ -2398,16 +2509,14 @@ yyreduce:
     break;
 
   case 49:
-
-/* Line 1801 of yacc.c  */
-#line 414 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 424 "parse-gram.y"
     { current_class = token_sym; }
     break;
 
   case 50:
-
-/* Line 1801 of yacc.c  */
-#line 415 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 425 "parse-gram.y"
     {
       current_class = unknown_sym;
       current_type = NULL;
@@ -2415,9 +2524,8 @@ yyreduce:
     break;
 
   case 51:
-
-/* Line 1801 of yacc.c  */
-#line 420 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 430 "parse-gram.y"
     {
       symbol_list *list;
       tag_seen = true;
@@ -2428,9 +2536,8 @@ yyreduce:
     break;
 
   case 52:
-
-/* Line 1801 of yacc.c  */
-#line 431 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 441 "parse-gram.y"
     {
       symbol_list *list;
       ++current_prec;
@@ -2445,128 +2552,110 @@ yyreduce:
     break;
 
   case 53:
-
-/* Line 1801 of yacc.c  */
-#line 445 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 455 "parse-gram.y"
     { (yyval.assoc) = left_assoc; }
     break;
 
   case 54:
-
-/* Line 1801 of yacc.c  */
-#line 446 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 456 "parse-gram.y"
     { (yyval.assoc) = right_assoc; }
     break;
 
   case 55:
-
-/* Line 1801 of yacc.c  */
-#line 447 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 457 "parse-gram.y"
     { (yyval.assoc) = non_assoc; }
     break;
 
   case 56:
-
-/* Line 1801 of yacc.c  */
-#line 451 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 461 "parse-gram.y"
     { current_type = NULL; }
     break;
 
   case 57:
-
-/* Line 1801 of yacc.c  */
-#line 452 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 462 "parse-gram.y"
     { current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
     break;
 
   case 58:
-
-/* Line 1801 of yacc.c  */
-#line 458 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 468 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 59:
-
-/* Line 1801 of yacc.c  */
-#line 460 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 470 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
     break;
 
   case 60:
-
-/* Line 1801 of yacc.c  */
-#line 464 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 474 "parse-gram.y"
     { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
     break;
 
   case 61:
-
-/* Line 1801 of yacc.c  */
-#line 465 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 475 "parse-gram.y"
     { (yyval.symbol) = (yyvsp[(1) - (2)].symbol); symbol_user_token_number_set ((yyvsp[(1) - (2)].symbol), (yyvsp[(2) - (2)].integer), (yylsp[(2) - (2)])); }
     break;
 
   case 62:
-
-/* Line 1801 of yacc.c  */
-#line 471 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 481 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 63:
-
-/* Line 1801 of yacc.c  */
-#line 473 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 483 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), symbol_list_sym_new ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]))); }
     break;
 
   case 64:
-
-/* Line 1801 of yacc.c  */
-#line 477 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 487 "parse-gram.y"
     { (yyval.list) = (yyvsp[(1) - (1)].list); }
     break;
 
   case 65:
-
-/* Line 1801 of yacc.c  */
-#line 478 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 488 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
     break;
 
   case 66:
-
-/* Line 1801 of yacc.c  */
-#line 482 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 492 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 67:
-
-/* Line 1801 of yacc.c  */
-#line 483 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 493 "parse-gram.y"
     { (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 68:
-
-/* Line 1801 of yacc.c  */
-#line 484 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 494 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
     break;
 
   case 69:
-
-/* Line 1801 of yacc.c  */
-#line 485 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 495 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
     break;
 
   case 70:
-
-/* Line 1801 of yacc.c  */
-#line 491 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 501 "parse-gram.y"
     {
        current_type = (yyvsp[(1) - (1)].uniqstr);
        tag_seen = true;
@@ -2574,9 +2663,8 @@ yyreduce:
     break;
 
   case 71:
-
-/* Line 1801 of yacc.c  */
-#line 496 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 506 "parse-gram.y"
     {
        symbol_class_set ((yyvsp[(1) - (1)].symbol), current_class, (yylsp[(1) - (1)]), true);
        symbol_type_set ((yyvsp[(1) - (1)].symbol), current_type, (yylsp[(1) - (1)]));
@@ -2584,9 +2672,8 @@ yyreduce:
     break;
 
   case 72:
-
-/* Line 1801 of yacc.c  */
-#line 501 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 511 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
       symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
@@ -2595,9 +2682,8 @@ yyreduce:
     break;
 
   case 73:
-
-/* Line 1801 of yacc.c  */
-#line 507 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 517 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (2)].symbol), current_class, (yylsp[(1) - (2)]), true);
       symbol_type_set ((yyvsp[(1) - (2)].symbol), current_type, (yylsp[(1) - (2)]));
@@ -2606,9 +2692,8 @@ yyreduce:
     break;
 
   case 74:
-
-/* Line 1801 of yacc.c  */
-#line 513 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 523 "parse-gram.y"
     {
       symbol_class_set ((yyvsp[(1) - (3)].symbol), current_class, (yylsp[(1) - (3)]), true);
       symbol_type_set ((yyvsp[(1) - (3)].symbol), current_type, (yylsp[(1) - (3)]));
@@ -2618,25 +2703,22 @@ yyreduce:
     break;
 
   case 81:
-
-/* Line 1801 of yacc.c  */
-#line 543 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 553 "parse-gram.y"
     {
       yyerrok;
     }
     break;
 
   case 82:
-
-/* Line 1801 of yacc.c  */
-#line 549 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 559 "parse-gram.y"
     { current_lhs ((yyvsp[(1) - (2)].symbol), (yylsp[(1) - (2)]), (yyvsp[(2) - (2)].named_ref)); }
     break;
 
   case 83:
-
-/* Line 1801 of yacc.c  */
-#line 550 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 560 "parse-gram.y"
     {
     /* Free the current lhs. */
     current_lhs (0, (yylsp[(1) - (4)]), 0);
@@ -2644,101 +2726,87 @@ yyreduce:
     break;
 
   case 84:
-
-/* Line 1801 of yacc.c  */
-#line 557 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 567 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(1) - (1)])); }
     break;
 
   case 85:
-
-/* Line 1801 of yacc.c  */
-#line 558 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 568 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(3) - (3)])); }
     break;
 
   case 87:
-
-/* Line 1801 of yacc.c  */
-#line 564 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 574 "parse-gram.y"
     { grammar_current_rule_begin (current_lhs_symbol, current_lhs_location,
                                  current_lhs_named_ref); }
     break;
 
   case 88:
-
-/* Line 1801 of yacc.c  */
-#line 567 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 577 "parse-gram.y"
     { grammar_current_rule_symbol_append ((yyvsp[(2) - (3)].symbol), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
     break;
 
   case 89:
-
-/* Line 1801 of yacc.c  */
-#line 569 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 579 "parse-gram.y"
     { grammar_current_rule_action_append ((yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
     break;
 
   case 90:
-
-/* Line 1801 of yacc.c  */
-#line 571 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 581 "parse-gram.y"
     { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
     break;
 
   case 91:
-
-/* Line 1801 of yacc.c  */
-#line 573 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 583 "parse-gram.y"
     { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
     break;
 
   case 92:
-
-/* Line 1801 of yacc.c  */
-#line 575 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 585 "parse-gram.y"
     { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
     break;
 
   case 93:
-
-/* Line 1801 of yacc.c  */
-#line 579 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 589 "parse-gram.y"
     { (yyval.named_ref) = 0; }
     break;
 
   case 94:
-
-/* Line 1801 of yacc.c  */
-#line 581 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 591 "parse-gram.y"
     { (yyval.named_ref) = named_ref_new((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 96:
-
-/* Line 1801 of yacc.c  */
-#line 593 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 603 "parse-gram.y"
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
     break;
 
   case 97:
-
-/* Line 1801 of yacc.c  */
-#line 598 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 608 "parse-gram.y"
     { (yyval.chars) = ""; }
     break;
 
   case 98:
-
-/* Line 1801 of yacc.c  */
-#line 599 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 609 "parse-gram.y"
     { (yyval.chars) = (yyvsp[(1) - (1)].uniqstr); }
     break;
 
   case 100:
-
-/* Line 1801 of yacc.c  */
-#line 610 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 620 "parse-gram.y"
     {
       code_props plain_code;
       (yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
@@ -2750,16 +2818,14 @@ yyreduce:
     break;
 
   case 101:
-
-/* Line 1801 of yacc.c  */
-#line 630 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 640 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 102:
-
-/* Line 1801 of yacc.c  */
-#line 632 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 642 "parse-gram.y"
     {
       (yyval.symbol) = symbol_get (char_name ((yyvsp[(1) - (1)].character)), (yylsp[(1) - (1)]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
@@ -2768,16 +2834,14 @@ yyreduce:
     break;
 
   case 103:
-
-/* Line 1801 of yacc.c  */
-#line 640 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 650 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 106:
-
-/* Line 1801 of yacc.c  */
-#line 652 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 662 "parse-gram.y"
     {
       (yyval.symbol) = symbol_get (quotearg_style (c_quoting_style, (yyvsp[(1) - (1)].chars)), (yylsp[(1) - (1)]));
       symbol_class_set ((yyval.symbol), token_sym, (yylsp[(1) - (1)]), false);
@@ -2785,9 +2849,8 @@ yyreduce:
     break;
 
   case 108:
-
-/* Line 1801 of yacc.c  */
-#line 661 "parse-gram.y"
+/* Line 1787 of yacc.c  */
+#line 671 "parse-gram.y"
     {
       code_props plain_code;
       code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
@@ -2799,9 +2862,8 @@ yyreduce:
     break;
 
 
-
-/* Line 1801 of yacc.c  */
-#line 2805 "parse-gram.c"
+/* Line 1787 of yacc.c  */
+#line 2867 "parse-gram.c"
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3049,9 +3111,8 @@ yyreturn:
 }
 
 
-
-/* Line 2062 of yacc.c  */
-#line 671 "parse-gram.y"
+/* Line 2048 of yacc.c  */
+#line 681 "parse-gram.y"
 
 
 
@@ -3108,11 +3169,13 @@ add_param (char const *type, char *decl, location loc)
 
   /* Strip the surrounding '{' and '}', and any blanks just inside
      the braces.  */
-  while (*--p == ' ' || *p == '\t')
-    continue;
+  --p;
+  while (isspace ((unsigned char) *p))
+    --p;
   p[1] = '\0';
-  while (*++decl == ' ' || *decl == '\t')
-    continue;
+  ++decl;
+  while (isspace ((unsigned char) *decl))
+    ++decl;
 
   if (! name_start)
     complain_at (loc, _("missing identifier in parameter declaration"));
@@ -3162,4 +3225,3 @@ char_name (char c)
       return quotearg_style (escape_quoting_style, buf);
     }
 }
-
index 97dbfcf..0cc4d54 100644 (file)
@@ -1,4 +1,4 @@
-/* A Bison parser, made by GNU Bison 2.5.1.19-ced26-dirty.  */
+/* A Bison parser, made by GNU Bison 2.6.1.12-3153-dirty.  */
 
 /* Bison interface for Yacc-like parsers in C
    
@@ -167,8 +167,7 @@ extern int gram_debug;
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
 {
-
-/* Line 2063 of yacc.c  */
+/* Line 2049 of yacc.c  */
 #line 114 "parse-gram.y"
 
   symbol *symbol;
@@ -182,9 +181,8 @@ typedef union YYSTYPE
   named_ref *named_ref;
 
 
-
-/* Line 2063 of yacc.c  */
-#line 188 "parse-gram.h"
+/* Line 2049 of yacc.c  */
+#line 186 "parse-gram.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -204,6 +202,7 @@ typedef struct YYLTYPE
 # define YYLTYPE_IS_TRIVIAL 1
 #endif
 
+
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int gram_parse (void *YYPARSE_PARAM);
@@ -218,5 +217,4 @@ int gram_parse ();
 #endif
 #endif /* ! YYPARSE_PARAM */
 
-
 #endif /* !GRAM__________SRC_PARSE_GRAM_H  */
index eb034b0..02af75e 100644 (file)
@@ -347,17 +347,27 @@ grammar_declaration:
     }
 | "%destructor" "{...}" generic_symlist
     {
-      symbol_list *list;
-      for (list = $3; list; list = list->next)
-       symbol_list_destructor_set (list, $2, @2);
-      symbol_list_free ($3);
+      code_props code;
+      code_props_symbol_action_init (&code, $2, @2);
+      code_props_translate_code (&code);
+      {
+        symbol_list *list;
+        for (list = $3; list; list = list->next)
+          symbol_list_destructor_set (list, &code);
+        symbol_list_free ($3);
+      }
     }
 | "%printer" "{...}" generic_symlist
     {
-      symbol_list *list;
-      for (list = $3; list; list = list->next)
-       symbol_list_printer_set (list, $2, @2);
-      symbol_list_free ($3);
+      code_props code;
+      code_props_symbol_action_init (&code, $2, @2);
+      code_props_translate_code (&code);
+      {
+        symbol_list *list;
+        for (list = $3; list; list = list->next)
+          symbol_list_printer_set (list, &code);
+        symbol_list_free ($3);
+      }
     }
 | "%default-prec"
     {
@@ -724,11 +734,13 @@ add_param (char const *type, char *decl, location loc)
 
   /* Strip the surrounding '{' and '}', and any blanks just inside
      the braces.  */
-  while (*--p == ' ' || *p == '\t')
-    continue;
+  --p;
+  while (isspace ((unsigned char) *p))
+    --p;
   p[1] = '\0';
-  while (*++decl == ' ' || *decl == '\t')
-    continue;
+  ++decl;
+  while (isspace ((unsigned char) *decl))
+    ++decl;
 
   if (! name_start)
     complain_at (loc, _("missing identifier in parameter declaration"));
index 8571e14..f5695a7 100644 (file)
@@ -54,7 +54,7 @@ print_core (struct obstack *oout, state *s)
       snritems = nitemset;
     }
 
-  obstack_fgrow1 (oout, "%d", s->number);
+  obstack_printf (oout, "%d", s->number);
   for (i = 0; i < snritems; i++)
     {
       item_number *sp;
@@ -68,15 +68,15 @@ print_core (struct obstack *oout, state *s)
 
       r = item_number_as_rule_number (*sp);
 
-      obstack_fgrow1 (oout, "\n%s -> ", rules[r].lhs->tag);
+      obstack_printf (oout, "\n%s -> ", rules[r].lhs->tag);
 
       for (sp = rules[r].rhs; sp < sp1; sp++)
-       obstack_fgrow1 (oout, "%s ", symbols[*sp]->tag);
+       obstack_printf (oout, "%s ", symbols[*sp]->tag);
 
       obstack_1grow (oout, '.');
 
       for (/* Nothing */; *sp >= 0; ++sp)
-       obstack_fgrow1 (oout, " %s", symbols[*sp]->tag);
+       obstack_printf (oout, " %s", symbols[*sp]->tag);
 
       /* Experimental feature: display the lookahead tokens. */
       if (report_flag & report_lookahead_tokens
@@ -95,7 +95,7 @@ print_core (struct obstack *oout, state *s)
              obstack_sgrow (oout, "[");
              BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
                {
-                 obstack_fgrow2 (oout, "%s%s", sep, symbols[k]->tag);
+                 obstack_printf (oout, "%s%s", sep, symbols[k]->tag);
                  sep = ", ";
                }
              obstack_sgrow (oout, "]");
index 1e49b65..4fb772f 100644 (file)
@@ -36,7 +36,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 36
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -97,7 +97,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -128,6 +127,8 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 /* %endif */
@@ -214,8 +215,13 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 /* %if-not-reentrant */
-extern int code_leng;
+extern yy_size_t code_leng;
 /* %endif */
 
 /* %if-c-only */
@@ -246,11 +252,6 @@ extern FILE *code_in, *code_out;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -273,7 +274,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -357,8 +358,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when code_text is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int code_leng;
+static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
+yy_size_t code_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -389,7 +390,7 @@ static void code__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE code__scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE code__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE code__scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE code__scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 /* %endif */
 
@@ -424,7 +425,7 @@ void code_free (void *  );
 /* %% [1.0] code_text/code_in/code_out/yy_state_type/code_lineno etc. def's & init go here */
 /* Begin user sect3 */
 
-#define code_wrap(n) 1
+#define code_wrap() 1
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
@@ -464,8 +465,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        (yy_c_buf_p) = yy_cp;
 
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 34
-#define YY_END_OF_BUFFER 35
+#define YY_NUM_RULES 29
+#define YY_END_OF_BUFFER 30
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -476,15 +477,15 @@ struct yy_trans_info
 static yyconst flex_int16_t yy_accept[101] =
     {   0,
         0,    0,    0,    0,    3,    3,    4,    4,    4,    4,
-       21,   21,    0,    0,   35,   33,   29,   30,   31,   32,
-       33,    2,   33,    6,   33,    5,   26,   23,   22,   22,
-        8,   20,   13,    7,   26,   17,   14,   25,   25,   15,
-       26,   16,   18,   19,    8,   29,    7,   33,   30,    1,
-        0,    0,    3,    4,    4,    4,    4,   11,    0,   11,
-       11,    0,    0,    9,   10,    0,   12,    0,   12,   12,
-        0,   25,   25,    0,   21,   27,   28,    0,    0,    0,
-        0,    0,    0,    0,   11,    0,    0,    0,    0,   12,
-        0,   25,    0,    0,    0,    0,   25,   25,   24,    0
+       19,   19,    0,    0,   30,   28,   27,   28,    2,   28,
+        6,   28,    5,   24,   21,   20,   20,    8,   18,   11,
+        7,   24,   15,   11,   23,   23,   12,   24,   16,   17,
+        8,   11,    7,   28,   11,   12,    1,    0,    0,    3,
+        4,    4,    4,    4,   13,    0,   13,   13,    0,    0,
+        9,   10,    0,   14,    0,   14,   14,    0,   23,   23,
+        0,   19,   25,    0,   26,    0,    0,    0,    0,    0,
+        0,    0,   13,    0,    0,    0,    0,   14,    0,   23,
+        0,    0,    0,    0,    0,   23,    0,   23,   22,    0
 
     } ;
 
@@ -527,104 +528,106 @@ static yyconst flex_int32_t yy_meta[31] =
         7,    7,    7,    7,    3,    1,    8,    1,    1,    2
     } ;
 
-static yyconst flex_int16_t yy_base[112] =
+static yyconst flex_int16_t yy_base[113] =
     {   0,
         0,    1,   21,   41,   66,    0,    4,    8,   12,   14,
-       93,    0,  121,    0,  233,  234,  234,  234,  234,  234,
-        7,  234,    0,  234,   39,  234,  234,  234,  234,  234,
-      234,  234,  140,  234,   34,  234,   42,    0,  208,  234,
-       33,  234,  234,  234,  234,  223,  234,   44,  222,  234,
-       59,   69,  192,  234,   73,  185,   76,  234,  189,    0,
-      156,    0,    0,  234,  234,   79,  234,  155,    0,  143,
-        0,    0,  132,   83,  124,  234,  234,   86,   19,  129,
-      133,  138,  141,  123,    0,  129,  111,  164,  145,    0,
-      101,  106,  170,   48,   31,   28,   30,    1,    0,  234,
-
-      174,  182,  188,  190,  194,  201,  205,  209,  212,  216,
-      221
+       93,    0,  118,    0,  242,  243,  243,    7,  243,    0,
+      243,   39,  243,  243,  243,  243,  243,  243,  243,  138,
+      243,   34,  243,   42,    0,  217,  243,   33,  243,  243,
+      243,    8,  243,   44,  232,  243,  243,   59,   69,  213,
+      243,   73,  212,   76,  243,  223,    0,  222,    0,    0,
+      243,  243,   79,  243,  205,    0,  202,    0,    0,  188,
+       83,  175,  243,    0,  243,   86,   19,  126,  130,  135,
+      138,  122,    0,  151,  140,  162,  143,    0,  128,  132,
+      168,  130,  128,  108,   37,   36,   47,   29,    0,  243,
+
+      172,  180,  186,  188,  192,  199,  203,  207,  210,  217,
+      222,  227
     } ;
 
-static yyconst flex_int16_t yy_def[112] =
+static yyconst flex_int16_t yy_def[113] =
     {   0,
       101,  101,  101,  101,  101,    5,    5,    5,    5,    5,
-      100,   11,    5,   13,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  102,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  100,  100,  103,  104,  104,  100,
+      100,   11,  101,   13,  100,  100,  100,  100,  100,  100,
+      100,  102,  100,  100,  100,  100,  100,  100,  100,  100,
+      100,  100,  100,  103,  104,  104,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  100,  100,  100,  100,  100,  105,
-      100,  106,  107,  100,  100,  100,  100,  100,  108,  100,
-      109,  104,  104,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  102,  105,  106,  110,  100,  100,  108,
-      111,  104,  100,   33,  110,  111,  104,  104,  104,    0,
+      100,  100,  100,  100,  100,  100,  105,  100,  106,  107,
+      100,  100,  100,  100,  100,  108,  100,  109,  104,  104,
+      100,  100,  100,  110,  100,  100,  100,  100,  100,  100,
+      100,  102,  105,  106,  111,  100,  100,  108,  112,  104,
+      100,  110,   30,  111,  112,  104,  100,  104,  104,    0,
 
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100
+      100,  100
     } ;
 
-static yyconst flex_int16_t yy_nxt[265] =
+static yyconst flex_int16_t yy_nxt[274] =
     {   0,
-      100,   52,   53,   52,  100,  100,   16,   17,   17,   24,
-       16,  100,  100,   24,   16,  100,   16,   18,   18,   50,
-       26,  100,   26,   99,   19,   19,   20,   20,   17,   25,
-       21,   50,   51,   25,   74,   75,   74,   25,   18,   25,
-       55,   56,   55,   64,   51,   19,   65,   20,   17,   67,
-       21,   98,   68,   64,   67,   70,   65,   58,   18,   66,
-       78,   79,   78,  100,   57,   19,   71,   20,   22,   66,
-       52,   53,   52,   17,   81,   56,   81,   83,   84,   83,
-       88,   89,   88,   18,   74,   75,   74,   78,   79,   78,
-       19,   23,   20,   27,   28,   29,   27,   30,   31,   32,
-
-       33,   34,   27,   27,   27,   35,   27,   36,   27,   27,
-       37,   38,   38,   38,   38,   38,   39,   40,   41,   42,
-       43,   44,   27,   16,   97,  100,   45,   67,   46,   47,
-       52,   53,   52,   48,   81,   56,   81,   58,   49,   81,
-       56,   81,   83,   84,   83,   94,   16,   58,   57,   93,
-       59,   60,   92,   61,   64,   62,   70,   65,   60,   60,
-       60,   60,   60,   60,   63,   88,   89,   88,   70,   61,
-       66,   74,   75,   74,   16,   16,   16,   16,   16,   16,
-       16,   16,   54,   54,   54,   54,   54,   54,   54,   54,
-       69,   69,   69,   69,   69,   72,   72,   85,   85,   85,
-
-       85,   86,   61,   86,   86,   86,   86,   86,   86,   87,
-       82,   87,   90,   90,   90,   90,   91,   80,   91,   95,
-       95,   95,   95,   95,   96,   96,   96,   96,   96,   77,
-       76,   73,  100,   15,  100,  100,  100,  100,  100,  100,
+      100,   49,   50,   49,  100,  100,   16,   17,   17,   21,
+       16,  100,  100,   21,   16,   73,   16,   17,   17,   47,
+       23,  100,   23,   74,   17,   17,   17,   17,   17,   22,
+       18,   47,   48,   22,   71,   72,   71,   22,   17,   22,
+       52,   53,   52,   61,   48,   17,   62,   17,   17,   64,
+       18,   99,   65,   61,   73,   67,   62,   98,   17,   63,
+       76,   77,   76,   64,   54,   17,   68,   17,   19,   63,
+       49,   50,   49,   17,   79,   53,   79,   81,   82,   81,
+       86,   87,   86,   17,   71,   72,   71,   76,   77,   76,
+       17,   20,   17,   24,   25,   26,   24,   27,   28,   29,
+
+       30,   31,   24,   24,   24,   32,   24,   33,   24,   24,
+       34,   35,   35,   35,   35,   35,   36,   37,   38,   37,
+       39,   40,   24,   41,  100,   42,   43,   49,   50,   49,
+       44,   79,   53,   79,   55,   45,   79,   53,   79,   81,
+       82,   81,   46,  100,   46,   55,   97,   54,   56,   57,
+       96,   58,   61,   59,   64,   62,   57,   57,   57,   57,
+       57,   57,   60,   86,   87,   86,   55,   93,   63,   71,
+       72,   71,   16,   16,   16,   16,   16,   16,   16,   16,
+       51,   51,   51,   51,   51,   51,   51,   51,   66,   66,
+       66,   66,   66,   69,   69,   83,   83,   83,   83,   84,
+
+       91,   84,   84,   84,   84,   84,   84,   85,   90,   85,
+       88,   88,   88,   88,   89,   67,   89,   92,   67,   92,
+       92,   92,   92,   92,   92,   94,   94,   94,   94,   94,
+       95,   95,   95,   95,   95,   58,   58,   80,   78,   75,
+       70,  100,   15,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100
+      100,  100,  100
     } ;
 
-static yyconst flex_int16_t yy_chk[265] =
+static yyconst flex_int16_t yy_chk[274] =
     {   0,
-        0,   23,   23,   23,    0,    0,    7,    1,    2,    7,
-        8,    0,    0,    8,    9,    0,   10,    1,    2,   21,
-        9,    0,   10,   98,    1,    2,    1,    2,    3,    7,
-        3,   79,   21,    8,   41,   41,   41,    9,    3,   10,
-       25,   25,   25,   35,   79,    3,   35,    3,    4,   37,
-        4,   97,   37,   48,   96,   37,   48,   95,    4,   35,
-       51,   51,   51,   94,   25,    4,   37,    4,    5,   48,
-       52,   52,   52,    5,   55,   55,   55,   57,   57,   57,
-       66,   66,   66,    5,   74,   74,   74,   78,   78,   78,
+        0,   20,   20,   20,    0,    0,    7,    1,    2,    7,
+        8,    0,    0,    8,    9,   42,   10,    1,    2,   18,
+        9,    0,   10,   42,    1,    2,    1,    2,    3,    7,
+        3,   77,   18,    8,   38,   38,   38,    9,    3,   10,
+       22,   22,   22,   32,   77,    3,   32,    3,    4,   34,
+        4,   98,   34,   44,   97,   34,   44,   96,    4,   32,
+       48,   48,   48,   95,   22,    4,   34,    4,    5,   44,
+       49,   49,   49,    5,   52,   52,   52,   54,   54,   54,
+       63,   63,   63,    5,   71,   71,   71,   76,   76,   76,
         5,    5,    5,   11,   11,   11,   11,   11,   11,   11,
 
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   13,   92,   84,   13,   91,   13,   13,
-       80,   80,   80,   13,   81,   81,   81,   87,   13,   82,
-       82,   82,   83,   83,   83,   86,   13,   33,   84,   75,
-       33,   33,   73,   33,   89,   33,   70,   89,   33,   33,
-       33,   33,   33,   33,   33,   88,   88,   88,   68,   61,
-       89,   93,   93,   93,  101,  101,  101,  101,  101,  101,
-      101,  101,  102,  102,  102,  102,  102,  102,  102,  102,
-      103,  103,  103,  103,  103,  104,  104,  105,  105,  105,
-
-      105,  106,   59,  106,  106,  106,  106,  106,  106,  107,
-       56,  107,  108,  108,  108,  108,  109,   53,  109,  110,
-      110,  110,  110,  110,  111,  111,  111,  111,  111,   49,
-       46,   39,   15,  100,  100,  100,  100,  100,  100,  100,
+       11,   11,   11,   13,   82,   13,   13,   78,   78,   78,
+       13,   79,   79,   79,   94,   13,   80,   80,   80,   81,
+       81,   81,   13,   93,   13,   30,   92,   82,   30,   30,
+       90,   30,   87,   30,   89,   87,   30,   30,   30,   30,
+       30,   30,   30,   86,   86,   86,   85,   84,   87,   91,
+       91,   91,  101,  101,  101,  101,  101,  101,  101,  101,
+      102,  102,  102,  102,  102,  102,  102,  102,  103,  103,
+      103,  103,  103,  104,  104,  105,  105,  105,  105,  106,
+
+       72,  106,  106,  106,  106,  106,  106,  107,   70,  107,
+      108,  108,  108,  108,  109,   67,  109,  110,   65,  110,
+      110,  110,  110,  110,  110,  111,  111,  111,  111,  111,
+      112,  112,  112,  112,  112,   58,   56,   53,   50,   45,
+       36,   15,  100,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100
+      100,  100,  100
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -633,12 +636,11 @@ static char *yy_last_accepting_cpos;
 extern int code__flex_debug;
 int code__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[34] =
+static yyconst flex_int16_t yy_rule_linenum[29] =
     {   0,
-      125,  135,  136,  146,  151,  156,  161,  166,  171,  175,
-      183,  191,  199,  204,  209,  213,  218,  219,  220,  243,
-      245,  246,  247,  251,  259,  261,  266,  270,  283,  284,
-      285,  286,  293
+      132,  142,  143,  153,  158,  163,  169,  174,  179,  183,
+      187,  192,  200,  207,  215,  216,  217,  240,  242,  243,
+      244,  248,  256,  258,  263,  271,  281,  284
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -695,6 +697,9 @@ YY_DECL;
 
 #define YY_USER_ACTION  location_compute (loc, &loc->end, code_text, code_leng);
 
+static char *fetch_type_name (char *cp, char const **type_name,
+                              location dollar_loc);
+
 static void handle_action_dollar (symbol_list *rule, char *cp,
                                  location dollar_loc);
 static void handle_action_at (symbol_list *rule, char *cp, location at_loc);
@@ -726,7 +731,7 @@ of $ and @.  */
 /* C style identifier. Must start with letter. Will be used for
    named symbol references. Shall be kept synchronized with
    scan-gram.l "letter" and "id". */
-#line 730 "scan-code.c"
+#line 735 "scan-code.c"
 
 #define INITIAL 0
 #define SC_COMMENT 1
@@ -784,7 +789,7 @@ FILE *code_get_out (void );
 
 void code_set_out  (FILE * out_str  );
 
-int code_get_leng (void );
+yy_size_t code_get_leng (void );
 
 char *code_get_text (void );
 
@@ -850,7 +855,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( code_text, code_leng, 1, code_out )
+#define ECHO do { if (fwrite( code_text, code_leng, 1, code_out )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -865,7 +870,7 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( code_in )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -972,7 +977,7 @@ YY_DECL
        register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 91 "scan-code.l"
+#line 94 "scan-code.l"
 
 
 
@@ -980,11 +985,15 @@ YY_DECL
   int braces_level = 0;
 
   /* Whether a semicolon is probably needed.
-     The heuristic is that a semicolon is not needed after '{', '}', ';',
-     or a C preprocessor directive, and that whitespaces and comments
-     do not affect this flag.
-     Note that '{' does not need a semicolon because of '{}'.
-     A semicolon may be needed before a cpp direcive, but don't bother.  */
+
+     The heuristic is that a semicolon is not needed after '{', '}',
+     ';', or a C preprocessor directive, and that whitespaces and
+     comments do not affect this flag.  Note that '{' does not need a
+     semicolon because of '{}'.  A semicolon may be needed before a
+     cpp directive, but don't bother.
+
+     While it is maintained in several start-conditions (factoring
+     opportunities), it is meaningful only for SC_RULE_ACTION. */
   bool need_semicolon = false;
 
   /* Whether in a C preprocessor directive.  Don't use a start condition
@@ -1005,7 +1014,7 @@ YY_DECL
   | Scanning a C comment.  The initial '/ *' is already eaten.  |
   `------------------------------------------------------------*/
 
-#line 1009 "scan-code.c"
+#line 1018 "scan-code.c"
 
        if ( !(yy_init) )
                {
@@ -1093,13 +1102,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 34 )
+                       else if ( yy_act < 29 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], code_text );
-                       else if ( yy_act == 34 )
+                       else if ( yy_act == 29 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         code_text );
-                       else if ( yy_act == 35 )
+                       else if ( yy_act == 30 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -1118,7 +1127,7 @@ do_action:        /* This label is used only to access EOF actions. */
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 125 "scan-code.l"
+#line 132 "scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
@@ -1130,13 +1139,13 @@ STRING_GROW; BEGIN sc_context;
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 135 "scan-code.l"
+#line 142 "scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 136 "scan-code.l"
+#line 143 "scan-code.l"
 STRING_GROW;
        YY_BREAK
 
@@ -1148,7 +1157,7 @@ STRING_GROW;
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 146 "scan-code.l"
+#line 153 "scan-code.l"
 STRING_GROW;
        YY_BREAK
 
@@ -1156,7 +1165,7 @@ STRING_GROW;
 
 case 5:
 YY_RULE_SETUP
-#line 151 "scan-code.l"
+#line 158 "scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
@@ -1164,14 +1173,15 @@ STRING_GROW; BEGIN sc_context;
 
 case 6:
 YY_RULE_SETUP
-#line 156 "scan-code.l"
+#line 163 "scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
 
+
 case 7:
 YY_RULE_SETUP
-#line 161 "scan-code.l"
+#line 169 "scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_CHARACTER;
@@ -1180,7 +1190,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 166 "scan-code.l"
+#line 174 "scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_STRING;
@@ -1190,7 +1200,7 @@ YY_RULE_SETUP
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 171 "scan-code.l"
+#line 179 "scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_COMMENT;
@@ -1199,86 +1209,67 @@ YY_RULE_SETUP
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 175 "scan-code.l"
+#line 183 "scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_LINE_COMMENT;
   }
        YY_BREAK
-
-
-
 case 11:
 YY_RULE_SETUP
-#line 183 "scan-code.l"
+#line 187 "scan-code.l"
 {
-    ref_tail_fields = 0;
-    handle_action_dollar (self->rule, code_text, *loc);
-    if (ref_tail_fields) {
-      obstack_sgrow (&obstack_for_string, ref_tail_fields);
-    }
+    warn_at (*loc, _("stray '%s'"), code_text);
+    obstack_escape (&obstack_for_string, code_text);
     need_semicolon = true;
   }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 191 "scan-code.l"
+#line 192 "scan-code.l"
 {
-    ref_tail_fields = 0;
-    handle_action_at (self->rule, code_text, *loc);
-    if (ref_tail_fields) {
-      obstack_sgrow (&obstack_for_string, ref_tail_fields);
-    }
+    obstack_escape (&obstack_for_string, code_text);
     need_semicolon = true;
   }
        YY_BREAK
+
+
+
 case 13:
 YY_RULE_SETUP
-#line 199 "scan-code.l"
+#line 200 "scan-code.l"
 {
-    warn_at (*loc, _("stray '$'"));
-    obstack_sgrow (&obstack_for_string, "$][");
+    ref_tail_fields = NULL;
+    handle_action_dollar (self->rule, code_text, *loc);
+    if (ref_tail_fields)
+      obstack_sgrow (&obstack_for_string, ref_tail_fields);
     need_semicolon = true;
   }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 204 "scan-code.l"
+#line 207 "scan-code.l"
 {
-    warn_at (*loc, _("stray '@'"));
-    obstack_sgrow (&obstack_for_string, "@@");
+    ref_tail_fields = NULL;
+    handle_action_at (self->rule, code_text, *loc);
+    if (ref_tail_fields)
+      obstack_sgrow (&obstack_for_string, ref_tail_fields);
     need_semicolon = true;
   }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 209 "scan-code.l"
-{
-    obstack_sgrow (&obstack_for_string, "@{");
-    need_semicolon = true;
-  }
-       YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 213 "scan-code.l"
-{
-    obstack_sgrow (&obstack_for_string, "@}");
-    need_semicolon = true;
-  }
-       YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 218 "scan-code.l"
+#line 215 "scan-code.l"
 STRING_GROW;                 need_semicolon = false;
        YY_BREAK
-case 18:
+case 16:
 YY_RULE_SETUP
-#line 219 "scan-code.l"
+#line 216 "scan-code.l"
 STRING_GROW; ++braces_level; need_semicolon = false;
        YY_BREAK
-case 19:
+case 17:
 YY_RULE_SETUP
-#line 220 "scan-code.l"
+#line 217 "scan-code.l"
 {
     bool outer_brace = --braces_level == 0;
 
@@ -1302,33 +1293,33 @@ YY_RULE_SETUP
      of lines, allowing whitespace including comments, but in C/C++,
      '#' can only be the start of preprocessor directives or within
      '#define' directives anyway, so don't bother with begin of line.  */
-case 20:
+case 18:
 YY_RULE_SETUP
-#line 243 "scan-code.l"
+#line 240 "scan-code.l"
 STRING_GROW; in_cpp = true;
        YY_BREAK
-case 21:
-/* rule 21 can match eol */
+case 19:
+/* rule 19 can match eol */
 YY_RULE_SETUP
-#line 245 "scan-code.l"
+#line 242 "scan-code.l"
 STRING_GROW;
        YY_BREAK
-case 22:
-/* rule 22 can match eol */
+case 20:
+/* rule 20 can match eol */
 YY_RULE_SETUP
-#line 246 "scan-code.l"
+#line 243 "scan-code.l"
 STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
        YY_BREAK
-case 23:
+case 21:
 YY_RULE_SETUP
-#line 247 "scan-code.l"
+#line 244 "scan-code.l"
 STRING_GROW;
        YY_BREAK
 /* YYFAIL is undocumented and was formally deprecated in Bison
      2.4.2.  */
-case 24:
+case 22:
 YY_RULE_SETUP
-#line 251 "scan-code.l"
+#line 248 "scan-code.l"
 {
     STRING_GROW; need_semicolon = true;
     warn_at (*loc, _("use of YYFAIL, which is deprecated and will be"
@@ -1337,69 +1328,53 @@ YY_RULE_SETUP
        YY_BREAK
 /* The sole purpose of this is to make sure identifiers that merely
      contain YYFAIL don't produce the above warning.  */
-case 25:
+case 23:
 YY_RULE_SETUP
-#line 259 "scan-code.l"
+#line 256 "scan-code.l"
 STRING_GROW; need_semicolon = true;
        YY_BREAK
-case 26:
+case 24:
 YY_RULE_SETUP
-#line 261 "scan-code.l"
+#line 258 "scan-code.l"
 STRING_GROW; need_semicolon = true;
        YY_BREAK
 
 
 
-case 27:
+case 25:
 YY_RULE_SETUP
-#line 266 "scan-code.l"
+#line 263 "scan-code.l"
 {
-    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar[");
+    const char *type_name = NULL;
+    fetch_type_name (code_text + 1, &type_name, *loc)[-1] = 0;
+    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar(");
+    obstack_quote (&obstack_for_string, type_name);
+    obstack_sgrow (&obstack_for_string, ")[");
     self->is_value_used = true;
   }
        YY_BREAK
-case 28:
+case 26:
 YY_RULE_SETUP
-#line 270 "scan-code.l"
+#line 271 "scan-code.l"
 {
     obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
     locations_flag = true;
   }
        YY_BREAK
 
-/*-----------------------------------------.
-  | Escape M4 quoting characters in C code.  |
-  `-----------------------------------------*/
 
 
-case 29:
+/* Escape M4 quoting characters in C code.  */
+case 27:
 YY_RULE_SETUP
-#line 283 "scan-code.l"
-obstack_sgrow (&obstack_for_string, "$][");
+#line 281 "scan-code.l"
+obstack_escape (&obstack_for_string, code_text);
        YY_BREAK
-case 30:
+/* By default, grow the string obstack with the input.  */
+case 28:
+/* rule 28 can match eol */
 YY_RULE_SETUP
 #line 284 "scan-code.l"
-obstack_sgrow (&obstack_for_string, "@@");
-       YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 285 "scan-code.l"
-obstack_sgrow (&obstack_for_string, "@{");
-       YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 286 "scan-code.l"
-obstack_sgrow (&obstack_for_string, "@}");
-       YY_BREAK
-
-/*-----------------------------------------------------.
-  | By default, grow the string obstack with the input.  |
-  `-----------------------------------------------------*/
-case 33:
-/* rule 33 can match eol */
-YY_RULE_SETUP
-#line 293 "scan-code.l"
 STRING_GROW;
        YY_BREAK
 /* End of processing. */
@@ -1410,18 +1385,16 @@ case YY_STATE_EOF(SC_STRING):
 case YY_STATE_EOF(SC_CHARACTER):
 case YY_STATE_EOF(SC_RULE_ACTION):
 case YY_STATE_EOF(SC_SYMBOL_ACTION):
-#line 296 "scan-code.l"
-{
-                   STRING_FINISH;
-                   return last_string;
-                 }
+#line 287 "scan-code.l"
+STRING_FINISH; return last_string;
        YY_BREAK
-case 34:
+
+case 29:
 YY_RULE_SETUP
-#line 301 "scan-code.l"
+#line 290 "scan-code.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1425 "scan-code.c"
+#line 1398 "scan-code.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1619,21 +1592,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1664,7 +1637,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -1772,7 +1745,7 @@ static int yy_get_next_buffer (void)
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 100);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -1807,7 +1780,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -1991,13 +1964,6 @@ static void code__load_buffer_state  (void)
        code_free((void *) b  );
 }
 
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a code_restart() or at EOF.
@@ -2140,7 +2106,7 @@ static void code_ensure_buffer_stack (void)
 /* %if-c++-only */
 /* %endif */
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -2238,12 +2204,12 @@ YY_BUFFER_STATE code__scan_string (yyconst char * yystr )
 /* %if-c-only */
 /** Setup the input buffer state to scan the given bytes. The next call to code_lex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE code__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE code__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -2339,7 +2305,7 @@ FILE *code_get_out  (void)
 /** Get the length of the current token.
  * 
  */
-int code_get_leng  (void)
+yy_size_t code_get_leng  (void)
 {
         return code_leng;
 }
@@ -2508,7 +2474,7 @@ void code_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 301 "scan-code.l"
+#line 290 "scan-code.l"
 
 
 
@@ -2557,7 +2523,7 @@ typedef struct
    not visible from current midrule. */
 #define VARIANT_NOT_VISIBLE_FROM_MIDRULE (1 << 2)
 
-static variant *variant_table = 0;
+static variant *variant_table = NULL;
 static unsigned variant_table_size = 0;
 static unsigned variant_count = 0;
 
@@ -2579,7 +2545,7 @@ static void
 variant_table_free (void)
 {
   free (variant_table);
-  variant_table = 0;
+  variant_table = NULL;
   variant_table_size = variant_count = 0;
 }
 
@@ -2622,7 +2588,7 @@ variant_add (uniqstr id, location id_loc, unsigned symbol_index,
 }
 
 static const char *
-get_at_spec(unsigned symbol_index)
+get_at_spec (unsigned symbol_index)
 {
   static char at_buf[20];
   if (symbol_index == 0)
@@ -2666,30 +2632,30 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
          /* Create the explanation message. */
          obstack_init (&msg_buf);
 
-         obstack_fgrow1 (&msg_buf, _("possibly meant: %c"), dollar_or_at);
+         obstack_printf (&msg_buf, _("possibly meant: %c"), dollar_or_at);
          if (contains_dot_or_dash (id))
-           obstack_fgrow1 (&msg_buf, "[%s]", id);
+           obstack_printf (&msg_buf, "[%s]", id);
          else
            obstack_sgrow (&msg_buf, id);
          obstack_sgrow (&msg_buf, tail);
 
          if (var->err & VARIANT_HIDDEN)
            {
-             obstack_fgrow1 (&msg_buf, _(", hiding %c"), dollar_or_at);
+             obstack_printf (&msg_buf, _(", hiding %c"), dollar_or_at);
              if (contains_dot_or_dash (var->id))
-               obstack_fgrow1 (&msg_buf, "[%s]", var->id);
+               obstack_printf (&msg_buf, "[%s]", var->id);
              else
                obstack_sgrow (&msg_buf, var->id);
              obstack_sgrow (&msg_buf, tail);
            }
 
-         obstack_fgrow1 (&msg_buf, _(" at %s"), at_spec);
+         obstack_printf (&msg_buf, _(" at %s"), at_spec);
 
          if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
             {
               const char *format =
                 _(", cannot be accessed from mid-rule action at $%d");
-              obstack_fgrow1 (&msg_buf, format, midrule_rhs_index);
+              obstack_printf (&msg_buf, format, midrule_rhs_index);
             }
 
          obstack_1grow (&msg_buf, '\0');
@@ -2900,6 +2866,31 @@ parse_ref (char *cp, symbol_list *rule, int rule_length,
 int max_left_semantic_context = 0;
 
 
+/* If CP points to a typename (i.e., <.*?>), set TYPE_NAME to its
+   beginning (i.e., after the opening "<", and return the pointer
+   immediately after it.  */
+
+static
+char *
+fetch_type_name (char *cp, char const **type_name,
+                 location dollar_loc)
+{
+  if (*cp == '<')
+    {
+      *type_name = ++cp;
+      while (*cp != '>')
+       ++cp;
+
+      /* The '>' symbol will be later replaced by '\0'. Original
+        'text' is needed for error messages. */
+      ++cp;
+      if (untyped_var_seen)
+       complain_at (dollar_loc, _("explicit type given in untyped grammar"));
+      tag_seen = true;
+    }
+  return cp;
+}
+
 /*------------------------------------------------------------------.
 | TEXT is pointing to a wannabee semantic value (i.e., a '$').      |
 |                                                                   |
@@ -2913,7 +2904,6 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
 {
   char const *type_name = NULL;
   char *cp = text + 1;
-  char *gt_ptr = 0;
   symbol_list *effective_rule;
   int effective_rule_length;
   int n;
@@ -2930,26 +2920,14 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
     }
 
   /* Get the type name if explicit. */
-  if (*cp == '<')
-    {
-      type_name = ++cp;
-      while (*cp != '>')
-       ++cp;
-
-      /* The '>' symbol will be later replaced by '\0'. Original
-        'text' is needed for error messages. */
-      gt_ptr = cp;
-      ++cp;
-      if (untyped_var_seen)
-       complain_at (dollar_loc, _("explicit type given in untyped grammar"));
-      tag_seen = true;
-    }
+  cp = fetch_type_name (cp, &type_name, dollar_loc);
 
   n = parse_ref (cp, effective_rule, effective_rule_length,
                 rule->midrule_parent_rhs_index, text, dollar_loc, '$');
 
-  if (gt_ptr)
-    *gt_ptr = '\0';
+  /* End type_name. */
+  if (type_name)
+    cp[-1] = '\0';
 
   switch (n)
     {
@@ -2976,11 +2954,11 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
             }
           else
             untyped_var_seen = true;
-          type_name = "";
         }
 
-      obstack_fgrow1 (&obstack_for_string,
-                     "]b4_lhs_value([%s])[", type_name);
+      obstack_sgrow (&obstack_for_string, "]b4_lhs_value(");
+      obstack_quote (&obstack_for_string, type_name);
+      obstack_sgrow (&obstack_for_string, ")[");
       rule->action_props.is_value_used = true;
       break;
 
@@ -2997,12 +2975,12 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
                          cp, quote (effective_rule->content.sym->tag));
           else
             untyped_var_seen = true;
-          type_name = "";
         }
 
-      obstack_fgrow3 (&obstack_for_string,
-                     "]b4_rhs_value(%d, %d, [%s])[",
-                     effective_rule_length, n, type_name);
+      obstack_printf (&obstack_for_string,
+                     "]b4_rhs_value(%d, %d, ", effective_rule_length, n);
+      obstack_quote (&obstack_for_string, type_name);
+      obstack_sgrow (&obstack_for_string, ")[");
       if (n > 0)
        symbol_list_n_get (effective_rule, n)->action_props.is_value_used =
          true;
@@ -3038,7 +3016,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
   locations_flag = true;
 
   n = parse_ref (cp, effective_rule, effective_rule_length,
-                      rule->midrule_parent_rhs_index, text, at_loc, '@');
+                 rule->midrule_parent_rhs_index, text, at_loc, '@');
   switch (n)
     {
     case INVALID_REF:
@@ -3049,7 +3027,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
       break;
 
     default:
-      obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
+      obstack_printf (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
                      effective_rule_length, n);
       break;
     }
index 0a5bb99..c8d554d 100644 (file)
@@ -45,7 +45,10 @@ typedef struct code_props {
     CODE_PROPS_SYMBOL_ACTION, CODE_PROPS_RULE_ACTION
   } kind;
 
-  /** \c NULL iff \c code_props::kind is \c CODE_PROPS_NONE.  */
+  /**
+   * \c NULL iff \c code_props::kind is \c CODE_PROPS_NONE.
+   * Memory is allocated in an obstack freed elsewhere.
+   */
   char const *code;
   /** Undefined iff \c code_props::code is \c NULL.  */
   location location;
index 5bcb568..fa593be 100644 (file)
@@ -46,6 +46,9 @@ YY_DECL;
 
 #define YY_USER_ACTION  location_compute (loc, &loc->end, yytext, yyleng);
 
+static char *fetch_type_name (char *cp, char const **type_name,
+                              location dollar_loc);
+
 static void handle_action_dollar (symbol_list *rule, char *cp,
                                  location dollar_loc);
 static void handle_action_at (symbol_list *rule, char *cp, location at_loc);
@@ -95,11 +98,15 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
   int braces_level = 0;
 
   /* Whether a semicolon is probably needed.
-     The heuristic is that a semicolon is not needed after '{', '}', ';',
-     or a C preprocessor directive, and that whitespaces and comments
-     do not affect this flag.
-     Note that '{' does not need a semicolon because of '{}'.
-     A semicolon may be needed before a cpp direcive, but don't bother.  */
+
+     The heuristic is that a semicolon is not needed after '{', '}',
+     ';', or a C preprocessor directive, and that whitespaces and
+     comments do not affect this flag.  Note that '{' does not need a
+     semicolon because of '{}'.  A semicolon may be needed before a
+     cpp directive, but don't bother.
+
+     While it is maintained in several start-conditions (factoring
+     opportunities), it is meaningful only for SC_RULE_ACTION. */
   bool need_semicolon = false;
 
   /* Whether in a C preprocessor directive.  Don't use a start condition
@@ -157,7 +164,8 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
 }
 
 
-<SC_RULE_ACTION,SC_SYMBOL_ACTION>{
+<SC_RULE_ACTION,SC_SYMBOL_ACTION>
+{
   "'" {
     STRING_GROW;
     BEGIN SC_CHARACTER;
@@ -176,42 +184,31 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
     STRING_GROW;
     BEGIN SC_LINE_COMMENT;
   }
+  [$@]  {
+    warn_at (*loc, _("stray '%s'"), yytext);
+    obstack_escape (&obstack_for_string, yytext);
+    need_semicolon = true;
+  }
+  [\[\]]  {
+    obstack_escape (&obstack_for_string, yytext);
+    need_semicolon = true;
+  }
 }
 
 <SC_RULE_ACTION>
 {
   "$"("<"{tag}">")?{ref}  {
-    ref_tail_fields = 0;
+    ref_tail_fields = NULL;
     handle_action_dollar (self->rule, yytext, *loc);
-    if (ref_tail_fields) {
+    if (ref_tail_fields)
       obstack_sgrow (&obstack_for_string, ref_tail_fields);
-    }
     need_semicolon = true;
   }
   "@"{ref} {
-    ref_tail_fields = 0;
+    ref_tail_fields = NULL;
     handle_action_at (self->rule, yytext, *loc);
-    if (ref_tail_fields) {
+    if (ref_tail_fields)
       obstack_sgrow (&obstack_for_string, ref_tail_fields);
-    }
-    need_semicolon = true;
-  }
-  "$"  {
-    warn_at (*loc, _("stray '$'"));
-    obstack_sgrow (&obstack_for_string, "$][");
-    need_semicolon = true;
-  }
-  "@"  {
-    warn_at (*loc, _("stray '@'"));
-    obstack_sgrow (&obstack_for_string, "@@");
-    need_semicolon = true;
-  }
-  "["  {
-    obstack_sgrow (&obstack_for_string, "@{");
-    need_semicolon = true;
-  }
-  "]"  {
-    obstack_sgrow (&obstack_for_string, "@}");
     need_semicolon = true;
   }
 
@@ -263,8 +260,12 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
 
 <SC_SYMBOL_ACTION>
 {
-  "$$" {
-    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar[");
+  "$"("<"{tag}">")?"$" {
+    const char *type_name = NULL;
+    fetch_type_name (yytext + 1, &type_name, *loc)[-1] = 0;
+    obstack_sgrow (&obstack_for_string, "]b4_dollar_dollar(");
+    obstack_quote (&obstack_for_string, type_name);
+    obstack_sgrow (&obstack_for_string, ")[");
     self->is_value_used = true;
   }
   "@$" {
@@ -274,29 +275,17 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
 }
 
 
-  /*-----------------------------------------.
-  | Escape M4 quoting characters in C code.  |
-  `-----------------------------------------*/
-
 <*>
 {
-  \$   obstack_sgrow (&obstack_for_string, "$][");
-  \@   obstack_sgrow (&obstack_for_string, "@@");
-  \[   obstack_sgrow (&obstack_for_string, "@{");
-  \]   obstack_sgrow (&obstack_for_string, "@}");
-}
-
-  /*-----------------------------------------------------.
-  | By default, grow the string obstack with the input.  |
-  `-----------------------------------------------------*/
+  /* Escape M4 quoting characters in C code.  */
+  [$@\[\]]    obstack_escape (&obstack_for_string, yytext);
 
-<*>.|\n        STRING_GROW;
+  /* By default, grow the string obstack with the input.  */
+  .|\n        STRING_GROW;
 
- /* End of processing. */
-<*><<EOF>>      {
-                   STRING_FINISH;
-                   return last_string;
-                 }
+  /* End of processing. */
+  <<EOF>>     STRING_FINISH; return last_string;
+}
 
 %%
 
@@ -345,7 +334,7 @@ typedef struct
    not visible from current midrule. */
 #define VARIANT_NOT_VISIBLE_FROM_MIDRULE (1 << 2)
 
-static variant *variant_table = 0;
+static variant *variant_table = NULL;
 static unsigned variant_table_size = 0;
 static unsigned variant_count = 0;
 
@@ -367,7 +356,7 @@ static void
 variant_table_free (void)
 {
   free (variant_table);
-  variant_table = 0;
+  variant_table = NULL;
   variant_table_size = variant_count = 0;
 }
 
@@ -410,7 +399,7 @@ variant_add (uniqstr id, location id_loc, unsigned symbol_index,
 }
 
 static const char *
-get_at_spec(unsigned symbol_index)
+get_at_spec (unsigned symbol_index)
 {
   static char at_buf[20];
   if (symbol_index == 0)
@@ -454,30 +443,30 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
          /* Create the explanation message. */
          obstack_init (&msg_buf);
 
-         obstack_fgrow1 (&msg_buf, _("possibly meant: %c"), dollar_or_at);
+         obstack_printf (&msg_buf, _("possibly meant: %c"), dollar_or_at);
          if (contains_dot_or_dash (id))
-           obstack_fgrow1 (&msg_buf, "[%s]", id);
+           obstack_printf (&msg_buf, "[%s]", id);
          else
            obstack_sgrow (&msg_buf, id);
          obstack_sgrow (&msg_buf, tail);
 
          if (var->err & VARIANT_HIDDEN)
            {
-             obstack_fgrow1 (&msg_buf, _(", hiding %c"), dollar_or_at);
+             obstack_printf (&msg_buf, _(", hiding %c"), dollar_or_at);
              if (contains_dot_or_dash (var->id))
-               obstack_fgrow1 (&msg_buf, "[%s]", var->id);
+               obstack_printf (&msg_buf, "[%s]", var->id);
              else
                obstack_sgrow (&msg_buf, var->id);
              obstack_sgrow (&msg_buf, tail);
            }
 
-         obstack_fgrow1 (&msg_buf, _(" at %s"), at_spec);
+         obstack_printf (&msg_buf, _(" at %s"), at_spec);
 
          if (var->err & VARIANT_NOT_VISIBLE_FROM_MIDRULE)
             {
               const char *format =
                 _(", cannot be accessed from mid-rule action at $%d");
-              obstack_fgrow1 (&msg_buf, format, midrule_rhs_index);
+              obstack_printf (&msg_buf, format, midrule_rhs_index);
             }
 
          obstack_1grow (&msg_buf, '\0');
@@ -688,6 +677,31 @@ parse_ref (char *cp, symbol_list *rule, int rule_length,
 int max_left_semantic_context = 0;
 
 
+/* If CP points to a typename (i.e., <.*?>), set TYPE_NAME to its
+   beginning (i.e., after the opening "<", and return the pointer
+   immediately after it.  */
+
+static
+char *
+fetch_type_name (char *cp, char const **type_name,
+                 location dollar_loc)
+{
+  if (*cp == '<')
+    {
+      *type_name = ++cp;
+      while (*cp != '>')
+       ++cp;
+
+      /* The '>' symbol will be later replaced by '\0'. Original
+        'text' is needed for error messages. */
+      ++cp;
+      if (untyped_var_seen)
+       complain_at (dollar_loc, _("explicit type given in untyped grammar"));
+      tag_seen = true;
+    }
+  return cp;
+}
+
 /*------------------------------------------------------------------.
 | TEXT is pointing to a wannabee semantic value (i.e., a '$').      |
 |                                                                   |
@@ -701,7 +715,6 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
 {
   char const *type_name = NULL;
   char *cp = text + 1;
-  char *gt_ptr = 0;
   symbol_list *effective_rule;
   int effective_rule_length;
   int n;
@@ -718,26 +731,14 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
     }
 
   /* Get the type name if explicit. */
-  if (*cp == '<')
-    {
-      type_name = ++cp;
-      while (*cp != '>')
-       ++cp;
-
-      /* The '>' symbol will be later replaced by '\0'. Original
-        'text' is needed for error messages. */
-      gt_ptr = cp;
-      ++cp;
-      if (untyped_var_seen)
-       complain_at (dollar_loc, _("explicit type given in untyped grammar"));
-      tag_seen = true;
-    }
+  cp = fetch_type_name (cp, &type_name, dollar_loc);
 
   n = parse_ref (cp, effective_rule, effective_rule_length,
                 rule->midrule_parent_rhs_index, text, dollar_loc, '$');
 
-  if (gt_ptr)
-    *gt_ptr = '\0';
+  /* End type_name. */
+  if (type_name)
+    cp[-1] = '\0';
 
   switch (n)
     {
@@ -764,11 +765,11 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
             }
           else
             untyped_var_seen = true;
-          type_name = "";
         }
 
-      obstack_fgrow1 (&obstack_for_string,
-                     "]b4_lhs_value([%s])[", type_name);
+      obstack_sgrow (&obstack_for_string, "]b4_lhs_value(");
+      obstack_quote (&obstack_for_string, type_name);
+      obstack_sgrow (&obstack_for_string, ")[");
       rule->action_props.is_value_used = true;
       break;
 
@@ -785,12 +786,12 @@ handle_action_dollar (symbol_list *rule, char *text, location dollar_loc)
                          cp, quote (effective_rule->content.sym->tag));
           else
             untyped_var_seen = true;
-          type_name = "";
         }
 
-      obstack_fgrow3 (&obstack_for_string,
-                     "]b4_rhs_value(%d, %d, [%s])[",
-                     effective_rule_length, n, type_name);
+      obstack_printf (&obstack_for_string,
+                     "]b4_rhs_value(%d, %d, ", effective_rule_length, n);
+      obstack_quote (&obstack_for_string, type_name);
+      obstack_sgrow (&obstack_for_string, ")[");
       if (n > 0)
        symbol_list_n_get (effective_rule, n)->action_props.is_value_used =
          true;
@@ -826,7 +827,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
   locations_flag = true;
 
   n = parse_ref (cp, effective_rule, effective_rule_length,
-                      rule->midrule_parent_rhs_index, text, at_loc, '@');
+                 rule->midrule_parent_rhs_index, text, at_loc, '@');
   switch (n)
     {
     case INVALID_REF:
@@ -837,7 +838,7 @@ handle_action_at (symbol_list *rule, char *text, location at_loc)
       break;
 
     default:
-      obstack_fgrow2 (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
+      obstack_printf (&obstack_for_string, "]b4_rhs_location(%d, %d)[",
                      effective_rule_length, n);
       break;
     }
index b800985..7dd0b8b 100644 (file)
@@ -36,7 +36,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 36
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -97,7 +97,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -128,6 +127,8 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 /* %endif */
@@ -214,8 +215,13 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 /* %if-not-reentrant */
-extern int gram_leng;
+extern yy_size_t gram_leng;
 /* %endif */
 
 /* %if-c-only */
@@ -246,11 +252,6 @@ extern FILE *gram_in, *gram_out;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -273,7 +274,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -357,8 +358,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when gram_text is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int gram_leng;
+static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
+yy_size_t gram_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -389,7 +390,7 @@ static void gram__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE gram__scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE gram__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE gram__scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE gram__scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 /* %endif */
 
@@ -424,7 +425,7 @@ void gram_free (void *  );
 /* %% [1.0] gram_text/gram_in/gram_out/yy_state_type/gram_lineno etc. def's & init go here */
 /* Begin user sect3 */
 
-#define gram_wrap(n) 1
+#define gram_wrap() 1
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
@@ -1012,7 +1013,7 @@ to capture the sequence 'identifier :'. */
    NUL and newline, as this simplifies our implementation.  */
 /* Zero or more instances of backslash-newline.  Following GCC, allow
    white space between the backslash and the newline.  */
-#line 1016 "scan-gram.c"
+#line 1017 "scan-gram.c"
 
 #define INITIAL 0
 #define SC_YACC_COMMENT 1
@@ -1077,7 +1078,7 @@ FILE *gram_get_out (void );
 
 void gram_set_out  (FILE * out_str  );
 
-int gram_get_leng (void );
+yy_size_t gram_get_leng (void );
 
 char *gram_get_text (void );
 
@@ -1143,7 +1144,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( gram_text, gram_leng, 1, gram_out )
+#define ECHO do { if (fwrite( gram_text, gram_leng, 1, gram_out )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -1158,7 +1159,7 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( gram_in )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -1295,7 +1296,7 @@ YY_DECL
   | Scanning white space.  |
   `-----------------------*/
 
-#line 1299 "scan-gram.c"
+#line 1300 "scan-gram.c"
 
        if ( !(yy_init) )
                {
@@ -2391,7 +2392,7 @@ YY_RULE_SETUP
 #line 715 "scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 2395 "scan-gram.c"
+#line 2396 "scan-gram.c"
 case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
        yyterminate();
 
@@ -2591,21 +2592,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -2636,7 +2637,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -2745,7 +2746,7 @@ static int yy_get_next_buffer (void)
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 473);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -2780,7 +2781,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -2965,13 +2966,6 @@ static void gram__load_buffer_state  (void)
        gram_free((void *) b  );
 }
 
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a gram_restart() or at EOF.
@@ -3114,7 +3108,7 @@ static void gram_ensure_buffer_stack (void)
 /* %if-c++-only */
 /* %endif */
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -3212,12 +3206,12 @@ YY_BUFFER_STATE gram__scan_string (yyconst char * yystr )
 /* %if-c-only */
 /** Setup the input buffer state to scan the given bytes. The next call to gram_lex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE gram__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE gram__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -3313,7 +3307,7 @@ FILE *gram_get_out  (void)
 /** Get the length of the current token.
  * 
  */
-int gram_get_leng  (void)
+yy_size_t gram_get_leng  (void)
 {
         return gram_leng;
 }
index c8498d2..6cd3be0 100644 (file)
@@ -36,7 +36,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 36
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -97,7 +97,6 @@ typedef int flex_int32_t;
 typedef unsigned char flex_uint8_t; 
 typedef unsigned short int flex_uint16_t;
 typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
 
 /* Limits of integral types. */
 #ifndef INT8_MIN
@@ -128,6 +127,8 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#endif /* ! C99 */
+
 #endif /* ! FLEXINT_H */
 
 /* %endif */
@@ -214,8 +215,13 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
 /* %if-not-reentrant */
-extern int skel_leng;
+extern yy_size_t skel_leng;
 /* %endif */
 
 /* %if-c-only */
@@ -246,11 +252,6 @@ extern FILE *skel_in, *skel_out;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -273,7 +274,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -357,8 +358,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when skel_text is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int skel_leng;
+static yy_size_t yy_n_chars;           /* number of characters read into yy_ch_buf */
+yy_size_t skel_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -389,7 +390,7 @@ static void skel__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE skel__scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE skel__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE skel__scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE skel__scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 /* %endif */
 
@@ -424,7 +425,7 @@ void skel_free (void *  );
 /* %% [1.0] skel_text/skel_in/skel_out/yy_state_type/skel_lineno etc. def's & init go here */
 /* Begin user sect3 */
 
-#define skel_wrap(n) 1
+#define skel_wrap() 1
 #define YY_SKIP_YYWRAP
 
 #define FLEX_DEBUG
@@ -585,8 +586,8 @@ int skel__flex_debug = 1;
 static yyconst flex_int16_t yy_rule_linenum[22] =
     {   0,
        72,   73,   74,   75,   76,   78,   79,   81,   90,   91,
-       92,  104,  106,  107,  108,  109,  111,  113,  134,  138,
-      139
+       92,  105,  107,  108,  109,  110,  111,  113,  134,  139,
+      140
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -649,7 +650,7 @@ static void fail_for_at_directive_too_few_args (char const *at_directive_name);
 static void fail_for_invalid_at (char const *at);
 
 
-#line 653 "scan-skel.c"
+#line 654 "scan-skel.c"
 
 #define INITIAL 0
 #define SC_AT_DIRECTIVE_ARGS 1
@@ -703,7 +704,7 @@ FILE *skel_get_out (void );
 
 void skel_set_out  (FILE * out_str  );
 
-int skel_get_leng (void );
+yy_size_t skel_get_leng (void );
 
 char *skel_get_text (void );
 
@@ -769,7 +770,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO fwrite( skel_text, skel_leng, 1, skel_out )
+#define ECHO do { if (fwrite( skel_text, skel_leng, 1, skel_out )) {} } while (0)
 /* %endif */
 /* %if-c++-only C++ definition */
 /* %endif */
@@ -784,7 +785,7 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               int n; \
+               size_t n; \
                for ( n = 0; n < max_size && \
                             (c = getc( skel_in )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
@@ -906,7 +907,7 @@ YY_DECL
   char *at_directive_argv[AT_DIRECTIVE_ARGC_MAX];
 
 
-#line 910 "scan-skel.c"
+#line 911 "scan-skel.c"
 
        if ( !(yy_init) )
                {
@@ -1034,13 +1035,13 @@ fputc (']', skel_out);
 case 4:
 YY_RULE_SETUP
 #line 75 "scan-skel.l"
-/* Empty.  Used by b4_cat in ../data/bison.m4.  */
+continue;  /* Used by b4_cat in ../data/bison.m4.  */
        YY_BREAK
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
 #line 76 "scan-skel.l"
-/* Likewise.  */
+continue;
        YY_BREAK
 case 6:
 YY_RULE_SETUP
@@ -1092,38 +1093,38 @@ case YY_STATE_EOF(INITIAL):
 }
        YY_BREAK
 
+
 case 12:
 /* rule 12 can match eol */
 YY_RULE_SETUP
-#line 104 "scan-skel.l"
-{ STRING_GROW; }
+#line 105 "scan-skel.l"
+STRING_GROW;
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 106 "scan-skel.l"
-{ obstack_1grow (&obstack_for_string, '@'); }
+#line 107 "scan-skel.l"
+obstack_1grow (&obstack_for_string, '@');
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 107 "scan-skel.l"
-{ obstack_1grow (&obstack_for_string, '['); }
+#line 108 "scan-skel.l"
+obstack_1grow (&obstack_for_string, '[');
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 108 "scan-skel.l"
-{ obstack_1grow (&obstack_for_string, ']'); }
+#line 109 "scan-skel.l"
+obstack_1grow (&obstack_for_string, ']');
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 109 "scan-skel.l"
-/* Empty.  Useful for starting an argument
-          that begins with whitespace. */
+#line 110 "scan-skel.l"
+continue; /* For starting an argument that begins with whitespace. */
        YY_BREAK
 case 17:
 /* rule 17 can match eol */
 YY_RULE_SETUP
 #line 111 "scan-skel.l"
-/* Empty.  */
+continue;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
@@ -1152,26 +1153,28 @@ YY_RULE_SETUP
 case 19:
 YY_RULE_SETUP
 #line 134 "scan-skel.l"
-{ fail_for_invalid_at (skel_text); }
+fail_for_invalid_at (skel_text);
        YY_BREAK
 
 
+
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 138 "scan-skel.l"
-
+#line 139 "scan-skel.l"
+continue;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 139 "scan-skel.l"
+#line 140 "scan-skel.l"
 { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
        YY_BREAK
 
 
+
 case YY_STATE_EOF(SC_AT_DIRECTIVE_ARGS):
 case YY_STATE_EOF(SC_AT_DIRECTIVE_SKIP_WS):
-#line 143 "scan-skel.l"
+#line 145 "scan-skel.l"
 {
     fatal (_("unclosed %s directive in skeleton"), at_directive_argv[0]);
   }
@@ -1179,10 +1182,10 @@ case YY_STATE_EOF(SC_AT_DIRECTIVE_SKIP_WS):
 
 case 22:
 YY_RULE_SETUP
-#line 148 "scan-skel.l"
+#line 150 "scan-skel.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1186 "scan-skel.c"
+#line 1189 "scan-skel.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -1380,21 +1383,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1425,7 +1428,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -1533,7 +1536,7 @@ static int yy_get_next_buffer (void)
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
        yy_is_jam = (yy_current_state == 44);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
 /* %if-c-only */
@@ -1568,7 +1571,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -1752,13 +1755,6 @@ static void skel__load_buffer_state  (void)
        skel_free((void *) b  );
 }
 
-/* %if-c-only */
-
-/* %endif */
-
-/* %if-c++-only */
-/* %endif */
-
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a skel_restart() or at EOF.
@@ -1901,7 +1897,7 @@ static void skel_ensure_buffer_stack (void)
 /* %if-c++-only */
 /* %endif */
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -1999,12 +1995,12 @@ YY_BUFFER_STATE skel__scan_string (yyconst char * yystr )
 /* %if-c-only */
 /** Setup the input buffer state to scan the given bytes. The next call to skel_lex() will
  * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yybytes the byte buffer to scan
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE skel__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE skel__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -2100,7 +2096,7 @@ FILE *skel_get_out  (void)
 /** Get the length of the current token.
  * 
  */
-int skel_get_leng  (void)
+yy_size_t skel_get_leng  (void)
 {
         return skel_leng;
 }
@@ -2269,7 +2265,7 @@ void skel_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 148 "scan-skel.l"
+#line 150 "scan-skel.l"
 
 
 
index 2433905..ed61b5c 100644 (file)
@@ -72,8 +72,8 @@ static void fail_for_invalid_at (char const *at);
 "@@" fputc ('@', yyout);
 "@{" fputc ('[', yyout);
 "@}" fputc (']', yyout);
-"@`" /* Empty.  Used by b4_cat in ../data/bison.m4.  */
-@\n  /* Likewise.  */
+"@`" continue;  /* Used by b4_cat in ../data/bison.m4.  */
+@\n  continue;
 
 "@oline@"  fprintf (yyout, "%d", out_lineno + 1);
 "@ofile@"  QPUTS (outname);
@@ -87,9 +87,9 @@ static void fail_for_invalid_at (char const *at);
 }
 
   /* This pattern must not match more than the previous @ patterns. */
-@[^@{}`(\n]* fail_for_invalid_at (yytext);
-\n        out_lineno++; ECHO;
-[^@\n]+           ECHO;
+@[^@{}`(\n]*  fail_for_invalid_at (yytext);
+\n            out_lineno++; ECHO;
+[^@\n]+       ECHO;
 
 <INITIAL><<EOF>> {
   if (outname)
@@ -100,15 +100,15 @@ static void fail_for_invalid_at (char const *at);
   return EOF;
 }
 
-<SC_AT_DIRECTIVE_ARGS>{
-  [^@]+ { STRING_GROW; }
+<SC_AT_DIRECTIVE_ARGS>
+{
+  [^@]+  STRING_GROW;
 
-  "@@" { obstack_1grow (&obstack_for_string, '@'); }
-  "@{" { obstack_1grow (&obstack_for_string, '['); }
-  "@}" { obstack_1grow (&obstack_for_string, ']'); }
-  "@`" /* Empty.  Useful for starting an argument
-          that begins with whitespace. */
-  @\n  /* Empty.  */
+  "@@"   obstack_1grow (&obstack_for_string, '@');
+  "@{"   obstack_1grow (&obstack_for_string, '[');
+  "@}"   obstack_1grow (&obstack_for_string, ']');
+  "@`"   continue; /* For starting an argument that begins with whitespace. */
+  @\n    continue;
 
   @[,)] {
     if (at_directive_argc >= AT_DIRECTIVE_ARGC_MAX)
@@ -131,15 +131,17 @@ static void fail_for_invalid_at (char const *at);
       }
   }
 
-  @.? { fail_for_invalid_at (yytext); }
+  @.?  fail_for_invalid_at (yytext);
 }
 
-<SC_AT_DIRECTIVE_SKIP_WS>{
-  [ \t\r\n]
-  . { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
+<SC_AT_DIRECTIVE_SKIP_WS>
+{
+  [ \t\r\n]    continue;
+  .            { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
 }
 
-<SC_AT_DIRECTIVE_ARGS,SC_AT_DIRECTIVE_SKIP_WS>{
+<SC_AT_DIRECTIVE_ARGS,SC_AT_DIRECTIVE_SKIP_WS>
+{
   <<EOF>> {
     fatal (_("unclosed %s directive in skeleton"), at_directive_argv[0]);
   }
index bf47da1..69ac8a1 100644 (file)
@@ -223,49 +223,43 @@ symbol_list_null (symbol_list *node)
 }
 
 void
-symbol_list_destructor_set (symbol_list *node, char const *code, location loc)
+symbol_list_destructor_set (symbol_list *node, code_props const *destructor)
 {
-  code_props destructor;
-  code_props_symbol_action_init (&destructor, code, loc);
-  code_props_translate_code (&destructor);
   switch (node->content_type)
     {
       case SYMLIST_SYMBOL:
-        symbol_destructor_set (node->content.sym, &destructor);
+        symbol_destructor_set (node->content.sym, destructor);
         break;
       case SYMLIST_TYPE:
         semantic_type_destructor_set (
-          semantic_type_get (node->content.type_name), &destructor);
+          semantic_type_get (node->content.type_name), destructor);
         break;
       case SYMLIST_DEFAULT_TAGGED:
-        default_tagged_destructor_set (&destructor);
+        default_tagged_destructor_set (destructor);
         break;
       case SYMLIST_DEFAULT_TAGLESS:
-        default_tagless_destructor_set (&destructor);
+        default_tagless_destructor_set (destructor);
         break;
     }
 }
 
 void
-symbol_list_printer_set (symbol_list *node, char const *code, location loc)
+symbol_list_printer_set (symbol_list *node, code_props const *printer)
 {
-  code_props printer;
-  code_props_symbol_action_init (&printer, code, loc);
-  code_props_translate_code (&printer);
   switch (node->content_type)
     {
       case SYMLIST_SYMBOL:
-        symbol_printer_set (node->content.sym, &printer);
+        symbol_printer_set (node->content.sym, printer);
         break;
       case SYMLIST_TYPE:
         semantic_type_printer_set (
-          semantic_type_get (node->content.type_name), &printer);
+          semantic_type_get (node->content.type_name), printer);
         break;
       case SYMLIST_DEFAULT_TAGGED:
-        default_tagged_printer_set (&printer);
+        default_tagged_printer_set (printer);
         break;
       case SYMLIST_DEFAULT_TAGLESS:
-        default_tagless_printer_set (&printer);
+        default_tagless_printer_set (printer);
         break;
     }
 }
index 43936b2..63577f7 100644 (file)
@@ -119,11 +119,11 @@ uniqstr symbol_list_n_type_name_get (symbol_list *l, location loc, int n);
 bool symbol_list_null (symbol_list *node);
 
 /** Set the \c \%destructor for \c node as \c code at \c loc.  */
-void symbol_list_destructor_set (symbol_list *node, char const *code,
-                                 location loc);
+void symbol_list_destructor_set (symbol_list *node,
+                                 code_props const *destructor);
 
 /** Set the \c \%printer for \c node as \c code at \c loc.  */
-void symbol_list_printer_set (symbol_list *node, char const *code,
-                              location loc);
+void symbol_list_printer_set (symbol_list *node,
+                              code_props const *printer);
 
 #endif /* !SYMLIST_H_ */
index db902e7..7d8cf98 100644 (file)
@@ -60,23 +60,30 @@ struct symbol
   /** The location of its first occurrence.  */
   location location;
 
-  /** Its \c \%type.  */
+  /** Its \c \%type.
+
+      Beware that this is the type_name as was entered by the user,
+      including silly things such as "]" if she entered "%token <]> t".
+      Therefore, when outputting type_name to M4, be sure to escape it
+      into "@}".  See quoted_output for instance.  */
   uniqstr type_name;
+
   /** Its \c \%type's location.  */
   location type_location;
 
   /** Any \c \%destructor declared specifically for this symbol.
 
-     Access this field only through <tt>symbol</tt>'s interface functions.  For
-     example, if <tt>symbol::destructor = NULL</tt>, a default \c \%destructor
-     or a per-type \c \%destructor might be appropriate, and
-     \c symbol_destructor_get will compute the correct one.  */
+      Access this field only through <tt>symbol</tt>'s interface
+      functions.  For example, if <tt>symbol::destructor = NULL</tt>, a
+      default \c \%destructor or a per-type \c \%destructor might be
+      appropriate, and \c symbol_destructor_get will compute the
+      correct one.  */
   code_props destructor;
 
   /** Any \c \%printer declared specifically for this symbol.
 
-     Access this field only through <tt>symbol</tt>'s interface functions.
-     \sa symbol::destructor  */
+      Access this field only through <tt>symbol</tt>'s interface functions.
+      \sa symbol::destructor  */
   code_props printer;
 
   symbol_number number;
index d3c544b..1ae6a6b 100644 (file)
@@ -160,36 +160,50 @@ typedef size_t uintptr_t;
 # define obstack_chunk_free  free
 # include <obstack.h>
 
-# define obstack_sgrow(Obs, Str) \
+# define obstack_sgrow(Obs, Str)                \
   obstack_grow (Obs, Str, strlen (Str))
 
-# define obstack_fgrow1(Obs, Format, Arg1)     \
-do {                                           \
-  char buf[4096];                              \
-  sprintf (buf, Format, Arg1);                 \
-  obstack_grow (Obs, buf, strlen (buf));       \
-} while (0)
+/* Output Str escaped for our postprocessing (i.e., escape M4 special
+   characters).
 
-# define obstack_fgrow2(Obs, Format, Arg1, Arg2)       \
-do {                                           \
-  char buf[4096];                              \
-  sprintf (buf, Format, Arg1, Arg2);           \
-  obstack_grow (Obs, buf, strlen (buf));       \
-} while (0)
+   For instance "[foo]" -> "@{foo@}", "$$" -> "$][$][". */
+
+# define obstack_escape(Obs, Str)                       \
+  do {                                                  \
+    char const *p;                                      \
+    for (p = Str; *p; p++)                              \
+      switch (*p)                                       \
+        {                                               \
+        case '$': obstack_sgrow (Obs, "$]["); break;    \
+        case '@': obstack_sgrow (Obs, "@@" ); break;    \
+        case '[': obstack_sgrow (Obs, "@{" ); break;    \
+        case ']': obstack_sgrow (Obs, "@}" ); break;    \
+        default:  obstack_1grow (Obs, *p   ); break;    \
+        }                                               \
+  } while (0)
+
+
+/* Output Str both quoted for M4 (i.e., embed in [[...]]), and escaped
+   for our postprocessing (i.e., escape M4 special characters).  If
+   Str is empty (or NULL), output "[]" instead of "[[]]" as it make M4
+   programming easier (m4_ifval can be used).
+
+   For instance "[foo]" -> "[[@{foo@}]]", "$$" -> "[[$][$][]]". */
+
+# define obstack_quote(Obs, Str)                \
+  do {                                          \
+    char const* obstack_quote_p = Str;          \
+    if (obstack_quote_p && obstack_quote_p[0])  \
+      {                                         \
+        obstack_sgrow (Obs, "[[");              \
+        obstack_escape (Obs, obstack_quote_p);  \
+        obstack_sgrow (Obs, "]]");              \
+      }                                         \
+    else                                        \
+      obstack_sgrow (Obs, "[]");                \
+  } while (0)
 
-# define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3) \
-do {                                                   \
-  char buf[4096];                                      \
-  sprintf (buf, Format, Arg1, Arg2, Arg3);             \
-  obstack_grow (Obs, buf, strlen (buf));               \
-} while (0)
 
-# define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4)   \
-do {                                                           \
-  char buf[4096];                                              \
-  sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4);               \
-  obstack_grow (Obs, buf, strlen (buf));                       \
-} while (0)
 
 
 
@@ -205,25 +219,21 @@ do {                                                              \
 #  define TAB_EXT ".tab"
 # endif
 
-# ifndef DEFAULT_TMPDIR
-#  define DEFAULT_TMPDIR "/tmp"
-# endif
-
 
 
 /*---------------------.
 | Free a linked list.  |
 `---------------------*/
 
-# define LIST_FREE(Type, List)                 \
-do {                                           \
-  Type *_node, *_next;                         \
-  for (_node = List; _node; _node = _next)     \
-                                             \
-      _next = _node->next;                     \
-      free (_node);                            \
-                                             \
-} while (0)
+# define LIST_FREE(Type, List)                  \
+  do {                                          \
+    Type *_node, *_next;                        \
+    for (_node = List; _node; _node = _next)    \
+      {                                         \
+        _next = _node->next;                    \
+        free (_node);                           \
+      }                                         \
+  } while (0)
 
 
 /*---------------------------------------------.
index be0afa4..e61f1c4 100644 (file)
@@ -113,10 +113,10 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/msvc-inval.m4 \
        $(top_srcdir)/m4/msvc-nothrow.m4 $(top_srcdir)/m4/multiarch.m4 \
        $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/nocrash.m4 \
-       $(top_srcdir)/m4/off_t.m4 $(top_srcdir)/m4/open.m4 \
-       $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perror.m4 \
-       $(top_srcdir)/m4/pipe2.m4 $(top_srcdir)/m4/po.m4 \
-       $(top_srcdir)/m4/posix_spawn.m4 \
+       $(top_srcdir)/m4/obstack-printf.m4 $(top_srcdir)/m4/off_t.m4 \
+       $(top_srcdir)/m4/open.m4 $(top_srcdir)/m4/pathmax.m4 \
+       $(top_srcdir)/m4/perror.m4 $(top_srcdir)/m4/pipe2.m4 \
+       $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/posix_spawn.m4 \
        $(top_srcdir)/m4/printf-frexp.m4 \
        $(top_srcdir)/m4/printf-frexpl.m4 \
        $(top_srcdir)/m4/printf-posix-rpl.m4 \
index e8e8cd9..1ec8ef9 100644 (file)
@@ -1230,6 +1230,142 @@ AT_CHECK_ACTION_LOCATIONS([[%destructor]])
 AT_CHECK_ACTION_LOCATIONS([[%printer]])
 
 
+## ------------------------- ##
+## Qualified $$ in actions.  ##
+## ------------------------- ##
+
+# Check that we can used qualified $$ (v.g., $<type>$) not only in
+# rule actions, but also where $$ is valid: %printer and %destructor.
+#
+# FIXME: Not actually checking %desctructor, but it's the same code as
+# %printer...
+#
+# To do that, use a semantic value that has two fields (sem_type),
+# declare symbols to have only one of these types (INT, float), and
+# use $<type>$ to get the other one.  Including for symbols that are
+# not typed (UNTYPED).
+
+m4_pushdef([AT_TEST],
+[AT_SETUP([[Qualified $$ in actions: $1]])
+
+AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1"])
+
+AT_DATA_GRAMMAR([[input.y]],
+[[%skeleton "$1"
+%defines   // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%locations // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%debug
+%code requires
+{
+  typedef struct sem_type
+  {
+    int ival;
+    float fval;
+  } sem_type;
+
+# define YYSTYPE sem_type
+
+]AT_SKEL_CC_IF([[
+# include <iostream>
+  static void
+  report (std::ostream& yyo, int ival, float fval)
+  {
+    yyo << "ival: " << ival << ", fval: " <<  fval;
+  }
+]], [[
+# include <stdio.h>
+  static void
+  report (FILE* yyo, int ival, float fval)
+  {
+    fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
+  }
+]])[
+}
+
+%code
+{
+  ]AT_YYERROR_DECLARE[
+  ]AT_YYLEX_DECLARE[
+}
+
+%token UNTYPED
+%token <ival> INT
+%type <fval> float
+%printer { report (yyo, $$,       $<fval>$); } <ival>;
+%printer { report (yyo, $<ival>$, $$      ); } <fval>;
+%printer { report (yyo, $<ival>$, $<fval>$); } <>;
+
+]AT_SKEL_CC_IF([[
+/* The lalr1.cc skeleton, for backward compatibility, defines
+   a constructor for position that initializes the filename.  The
+   glr.cc skeleton does not (and in fact cannot: location/position
+   are stored in a union, from which objects with constructors are
+   excluded in C++). */
+%initial-action {
+  @$.initialize ();
+}
+]])[
+
+%initial-action
+{
+  $<ival>$ = 42;
+  $<fval>$ = 4.2;
+}
+
+%%
+float: UNTYPED INT
+{
+  $$       = $<fval>1 + $<fval>2;
+  $<ival>$ = $<ival>1 + $][2;
+};
+%%
+]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(AT_SKEL_CC_IF([[{yy::parser::token::UNTYPED,
+                                 yy::parser::token::INT,
+                                  EOF}]],
+                               [[{UNTYPED, INT, EOF}]]),
+                 [AT_VAL.ival = toknum * 10; AT_VAL.fval = toknum / 10.0;])[
+int
+main (void)
+{]AT_SKEL_CC_IF([[
+  yy::parser p;
+  p.set_debug_level(1);
+  return p.parse ();]], [[
+  yydebug = 1;
+  return yyparse ();]])[
+}
+]])
+
+AT_FULL_COMPILE([[input]])
+AT_PARSER_CHECK([./input], 0, [], [stderr])
+# Don't be too picky on the traces, GLR is not exactly the same.  Keep
+# only the lines from the printer.
+#
+# Don't care about locations.  FIXME: remove their removal when Bison
+# supports C++ without locations.
+AT_CHECK([[sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr]], 0,
+[[Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1)
+Shifting token UNTYPED (ival: 10, fval: 0.1)
+Reading a token: Next token is token INT (ival: 20, fval: 0.2)
+Shifting token INT (ival: 20, fval: 0.2)
+   $][1 = token UNTYPED (ival: 10, fval: 0.1)
+   $][2 = token INT (ival: 20, fval: 0.2)
+-> $$ = nterm float (ival: 30, fval: 0.3)
+Cleanup: popping nterm float (ival: 30, fval: 0.3)
+]])
+
+AT_BISON_OPTION_POPDEFS
+
+AT_CLEANUP
+])
+
+AT_TEST([yacc.c])
+AT_TEST([glr.c])
+AT_TEST([lalr1.cc])
+AT_TEST([glr.cc])
+
+m4_popdef([AT_TEST])
+
 ## ----------------------------------------------- ##
 ## Fix user actions without a trailing semicolon.  ##
 ## ----------------------------------------------- ##
index e4cb07f..3aab868 100644 (file)
@@ -288,16 +288,16 @@ static int power (int base, int exponent);
 ]AT_YYLEX_DECLARE_EXTERN[
 }
 
-]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([], [
+]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([], [[
 /* The lalr1.cc skeleton, for backward compatibility, defines
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
-])])[
+]])])[
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -386,11 +386,9 @@ AT_YYERROR_SEES_LOC_IF([
   fprintf (stderr, ": ");])
   fprintf (stderr, "%s\n", s);
 }])[
-
 ]AT_DEFINES_IF([],
 [AT_CALC_LEX
-AT_CALC_MAIN])[
-]])
+AT_CALC_MAIN])])
 
 AT_DEFINES_IF([AT_DATA_SOURCE([[calc-lex.c]AT_SKEL_CC_IF([[c]])],
 [[#include "calc.h]AT_SKEL_CC_IF([[h]])["
@@ -500,6 +498,20 @@ AT_CHECK([cat stderr], 0, [expout])
 ])
 
 
+# AT_CHECK_SPACES([FILE])
+# -----------------------
+# Make sure we did not introduce bad spaces.  Checked here because all
+# the skeletons are (or should be) exercized here.
+m4_define([AT_CHECK_SPACES],
+[# No initial empty lines.
+AT_CHECK([sed -ne '/./q;=;p;' $1])
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' $1])
+# No final empty lines.
+AT_CHECK([sed -ne '${/^$/{=;p;};}' $1])
+])
+
+
 # AT_CHECK_CALC([BISON-OPTIONS])
 # ------------------------------
 # Start a testing chunk which compiles `calc' grammar with
@@ -514,6 +526,8 @@ AT_BISON_OPTION_PUSHDEFS([$1])
 
 AT_DATA_CALC_Y([$1])
 AT_FULL_COMPILE([calc], AT_DEFINES_IF([[lex], [main]]))
+AT_CHECK_SPACES([calc.AT_SKEL_CC_IF([cc], [c])])
+AT_DEFINES_IF([AT_CHECK_SPACES([calc.AT_SKEL_CC_IF([hh], [h])])])
 
 # Test the priorities.
 _AT_CHECK_CALC([$1],
index 836ff6d..ff1d392 100644 (file)
@@ -1369,3 +1369,100 @@ AT_TEST([%define api.prefix foo], [-p bar], [input.y:1.9-18])
 m4_popdef([AT_TEST])
 
 AT_CLEANUP
+
+
+## -------------- ##
+## Stray $ or @.  ##
+## -------------- ##
+
+AT_SETUP([[Stray $ or @]])
+
+# Give %printer and %destructor "<*> exp TOK" instead of "<*>" to
+# check that the warnings are reported once, not three times.
+
+AT_DATA_GRAMMAR([[input.y]],
+[[%token TOK
+%destructor     { $%; @%; } <*> exp TOK;
+%initial-action { $%; @%; };
+%printer        { $%; @%; } <*> exp TOK;
+%%
+exp: TOK        { $%; @%; $$ = $1; };
+]])
+
+AT_BISON_CHECK([[input.y]], 0, [],
+[[input.y:10.19: warning: stray '$'
+input.y:10.23: warning: stray '@'
+input.y:11.19: warning: stray '$'
+input.y:11.23: warning: stray '@'
+input.y:12.19: warning: stray '$'
+input.y:12.23: warning: stray '@'
+input.y:14.19: warning: stray '$'
+input.y:14.23: warning: stray '@'
+]])
+
+AT_CLEANUP
+
+
+
+## ---------------- ##
+## Code injection.  ##
+## ---------------- ##
+
+
+AT_SETUP([[Code injection]])
+
+m4_pattern_allow([^m4_errprintn$])
+
+# AT_TEST([MACRO])
+# ----------------
+# Try to have MACRO be run by bison.
+m4_pushdef([AT_TEST],
+[AT_DATA([[input.y]],
+[[%type <$1(DEAD %type)> exp
+%token <$1(DEAD %token)> a
+%initial-action
+{
+  $$;
+  $<$1(DEAD %initial-action)>$
+};
+%printer
+{
+  $$
+  $<$1(DEAD %printer)>$
+} <> <*>;
+%lex-param
+{
+  $1(DEAD %lex-param)
+};
+%parse-param
+{
+  $1(DEAD %parse-param)
+};
+%%
+exp:
+  a a[last]
+  {
+    $$;
+    $][1;
+    $<$1(DEAD action 1)>$
+    $<$1(DEAD action 2)>1
+    $<$1(DEAD action 3)>last
+    $<$1(DEAD action 4)>0
+    ;
+  };
+]])
+
+# FIXME: Provide a means to iterate over all the skeletons.
+AT_BISON_CHECK([[-d               input.y]])
+AT_BISON_CHECK([[-d -S glr.c      input.y]])
+AT_BISON_CHECK([[-d -S lalr1.cc   input.y]])
+AT_BISON_CHECK([[-d -S glr.cc     input.y]])
+AT_BISON_CHECK([[   -S lalr1.java input.y]])
+])
+
+AT_TEST([m4_errprintn])
+AT_TEST([@:>@m4_errprintn])
+
+m4_popdef([AT_TEST])
+
+AT_CLEANUP
index 2dbbfc7..5c9b865 100644 (file)
@@ -333,7 +333,7 @@ static
   static size_t toknum = 0;
   int res;
   ]AT_USE_LEX_ARGS[;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ]$2[;]AT_LOCATION_IF([[
   ]AT_LOC_FIRST_LINE[ = ]AT_LOC_LAST_LINE[ = 1;
index af63a18..b330abf 100644 (file)
@@ -1,6 +1,6 @@
 # Signature of the current package.
 m4_define([AT_PACKAGE_NAME],      [GNU Bison])
 m4_define([AT_PACKAGE_TARNAME],   [bison])
-m4_define([AT_PACKAGE_VERSION],   [2.6])
-m4_define([AT_PACKAGE_STRING],    [GNU Bison 2.6])
+m4_define([AT_PACKAGE_VERSION],   [2.6.2])
+m4_define([AT_PACKAGE_STRING],    [GNU Bison 2.6.2])
 m4_define([AT_PACKAGE_BUGREPORT], [bug-bison@gnu.org])
index c2795f6..2f02993 100644 (file)
@@ -917,7 +917,6 @@ m4_define([AT_CHECK_DANCER],
 [AT_SETUP([Dancer $1])
 AT_BISON_OPTION_PUSHDEFS([$1])
 _AT_DATA_DANCER_Y([$1])
-AT_BISON_CHECK([-o dancer.c dancer.y])
 AT_FULL_COMPILE([dancer])
 AT_PARSER_CHECK([./dancer], 1, [],
 [syntax error, unexpected ':'
@@ -1002,7 +1001,6 @@ m4_define([AT_CHECK_EXPECT2],
 [AT_SETUP([Expecting two tokens $1])
 AT_BISON_OPTION_PUSHDEFS([$1])
 _AT_DATA_EXPECT2_Y([$1])
-AT_BISON_CHECK([-o expect2.c expect2.y])
 AT_FULL_COMPILE([expect2])
 AT_PARSER_CHECK([./expect2], 1, [],
 [syntax error, unexpected '+', expecting A or B
@@ -1585,3 +1583,87 @@ Stack now 0
 m4_popdef([AT_LAC_CHECK])
 
 AT_CLEANUP
+
+
+## ---------------------- ##
+## Lex and parse params.  ##
+## ---------------------- ##
+
+# AT_TEST(SKELETON)
+# -----------------
+# Check that the identifier of the params is properly fetched
+# even when there are trailing blanks.
+
+m4_pushdef([AT_TEST],
+[AT_SETUP([[Lex and parse params: $1]])
+
+AT_BISON_OPTION_PUSHDEFS([%locations %skeleton $1])
+
+## FIXME: Improve parsing of parse-param and use the generated
+## yyerror.
+AT_DATA_GRAMMAR([input.y],
+[[%defines
+%locations
+%skeleton $1
+%union { int ival; }
+%parse-param { int x }
+// Spaces, tabs, and new lines.
+%parse-param { @&t@
+        int y   @&t@
+         @&t@
+ @&t@
+}
+
+%{
+#include <stdio.h>
+#include <stdlib.h>
+
+]AT_SKEL_CC_IF([], [[
+static
+void
+yyerror (int x, int y, const char *msg)
+{
+  fprintf (stderr, "x: %d, y: %d, %s\n", x, y, msg);
+}]])[
+
+  ]AT_YYLEX_DECLARE[
+%}
+
+%%
+exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
+%%
+]AT_YYLEX_DEFINE(["a"])[
+
+]AT_SKEL_CC_IF(
+[AT_YYERROR_DEFINE
+
+int
+yyparse (int x, int y)
+{
+  yy::parser parser(x, y);
+  return parser.parse ();
+}
+])[
+
+int
+main (void)
+{
+  return !!yyparse(1, 2);
+}
+]])
+
+AT_FULL_COMPILE([input])
+AT_CHECK([./input], 0, [[x: 1, y: 2
+]])
+AT_BISON_OPTION_POPDEFS
+
+AT_CLEANUP
+])
+
+## FIXME: test Java, and iterate over skeletons.
+AT_TEST("yacc.c")
+AT_TEST("glr.c")
+AT_TEST("lalr1.cc")
+AT_TEST("glr.cc")
+
+m4_popdef([AT_TEST])
index 8d742d5..e2b7005 100644 (file)
@@ -27,6 +27,11 @@ AT_BANNER([[User Actions.]])
 # errors.
 m4_define([AT_SYNCLINES_COMPILE],
 [AT_CHECK([$CC $CFLAGS $CPPFLAGS -c $1], [ignore], [], [stderr])
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -42,6 +47,11 @@ m4_define([AT_SYNCLINES_COMPILE],
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -54,19 +64,22 @@ m4_define([AT_SYNCLINES_COMPILE],
 #   distcc[35882] (dcc_connect_by_name) ERROR: failed to look up host "chrisimac": Unknown host
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
-AT_CHECK([[sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^@%:@]*\( @%:@error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr]],
-         0, [stdout])
+AT_CHECK([[perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$][1:$][2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+]],
+  0, [stdout])
 ])
 
-# AT_TEST_SYNCLINE(TITLE, INPUT, ERROR-MSG)
-# -----------------------------------------
+# AT_TEST(TITLE, INPUT, ERROR-MSG)
+# --------------------------------
 # Check that compiling the parser produced from INPUT cause GCC
 # to issue ERROR-MSG.
-m4_define([AT_TEST_SYNCLINE],
+m4_pushdef([AT_TEST],
 [AT_SETUP([$1])
 AT_BISON_OPTION_PUSHDEFS
 # It seems impossible to find a generic scheme to check the location
@@ -103,12 +116,12 @@ AT_CLEANUP
 ])
 
 
-## --------------------- ##
-## Prologue syncline.  ##
-## --------------------- ##
+## ------------------- ##
+## Prologue syncline.  ##
+## ------------------- ##
 
 
-AT_TEST_SYNCLINE([Prologue synch line],
+AT_TEST([Prologue syncline],
 [[%{
 #error "2"
 ]AT_YYERROR_DECLARE_EXTERN[
@@ -122,11 +135,11 @@ exp: '0';
 ])
 
 
-## ------------------- ##
-## %union syncline.  ##
-## ------------------- ##
+## ----------------- ##
+## %union syncline.  ##
+## ----------------- ##
 
-AT_TEST_SYNCLINE([%union synch line],
+AT_TEST([%union syncline],
 [[%union {
 #error "2"
   char dummy;
@@ -143,11 +156,11 @@ exp: '0';
 ])
 
 
-## ------------------------- ##
-## Postprologue syncline.  ##
-## ------------------------- ##
+## ----------------------- ##
+## Postprologue syncline.  ##
+## ----------------------- ##
 
-AT_TEST_SYNCLINE([Postprologue synch line],
+AT_TEST([Postprologue syncline],
 [[%{
 ]AT_YYERROR_DECLARE_EXTERN[
 ]AT_YYLEX_DECLARE_EXTERN[
@@ -167,11 +180,11 @@ exp: '0';
 ])
 
 
-## ------------------- ##
-## Action syncline.  ##
-## ------------------- ##
+## ----------------- ##
+## Action syncline.  ##
+## ----------------- ##
 
-AT_TEST_SYNCLINE([Action synch line],
+AT_TEST([Action syncline],
 [[%{
 ]AT_YYERROR_DECLARE_EXTERN[
 ]AT_YYLEX_DECLARE_EXTERN[
@@ -186,11 +199,11 @@ exp:
 ])
 
 
-## --------------------- ##
-## Epilogue syncline.  ##
-## --------------------- ##
+## ------------------- ##
+## Epilogue syncline.  ##
+## ------------------- ##
 
-AT_TEST_SYNCLINE([Epilogue synch line],
+AT_TEST([Epilogue syncline],
 [[%{
 ]AT_YYERROR_DECLARE_EXTERN[
 ]AT_YYLEX_DECLARE_EXTERN[
@@ -202,3 +215,5 @@ exp: '0';
 ]],
 [input.y:8: #error "8"
 ])
+
+m4_popdef([AT_TEST])
index aa7be93..e26fb06 100755 (executable)
@@ -602,7 +602,7 @@ at_help_all="1;input.at:27;Invalid \$n and @n;;
 10;input.at:392;Torturing the Scanner;;
 11;input.at:550;Typed symbol aliases;;
 12;input.at:586;Require 1.0;;
-13;input.at:587;Require 2.6;;
+13;input.at:587;Require 2.6.2;;
 14;input.at:589;Require 100.0;;
 15;input.at:596;String aliases for character tokens;;
 16;input.at:617;Symbols;;
@@ -624,287 +624,297 @@ at_help_all="1;input.at:27;Invalid \$n and @n;;
 32;input.at:1292;LAC: Errors for %define;;
 33;input.at:1315;-Werror is not affected by -Wnone and -Wall;;
 34;input.at:1349;%name-prefix and %define api.prefix are incompatible;;
-35;named-refs.at:21;Tutorial calculator;;
-36;named-refs.at:195;Undefined and ambiguous references;;
-37;named-refs.at:271;Misleading references;;
-38;named-refs.at:288;Many kinds of errors;;
-39;named-refs.at:400;Missing identifiers in brackets;;
-40;named-refs.at:414;Redundant words in brackets;;
-41;named-refs.at:428;Comments in brackets;;
-42;named-refs.at:442;Stray symbols in brackets;;
-43;named-refs.at:459;Redundant words in LHS brackets;;
-44;named-refs.at:474;Factored LHS;;
-45;named-refs.at:485;Unresolved references;;
-46;named-refs.at:550;\$ or @ followed by . or -;;
-47;output.at:44;Output files:  -dv ;;
-48;output.at:50;Output files:  -dv >&-;;
-49;output.at:55;Output files:  -dv -o foo.c ;;
-50;output.at:57;Output files:  -dv -o foo.tab.c ;;
-51;output.at:59;Output files:  -dv -y ;;
-52;output.at:61;Output files:  -dv -b bar ;;
-53;output.at:63;Output files:  -dv -g -o foo.c ;;
-54;output.at:67;Output files: %defines %verbose  ;;
-55;output.at:69;Output files: %defines %verbose %yacc  ;;
-56;output.at:72;Output files: %defines %verbose %yacc  ;;
-57;output.at:76;Output files: %file-prefix \"bar\" %defines %verbose  ;;
-58;output.at:78;Output files: %output=\"bar.c\" %defines %verbose %yacc  ;;
-59;output.at:80;Output files: %file-prefix=\"baz\" %output \"bar.c\" %defines %verbose %yacc  ;;
-60;output.at:87;Output files: %defines %verbose  ;;
-61;output.at:90;Output files: %defines %verbose  -o foo.c ;;
-62;output.at:93;Output files:  --defines=foo.hpp -o foo.c++ ;;
-63;output.at:97;Output files: %defines \"foo.hpp\" -o foo.c++ ;;
-64;output.at:101;Output files:  -o foo.c++ --graph=foo.gph ;;
-65;output.at:116;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
-66;output.at:119;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
-67;output.at:123;Output files: %skeleton \"lalr1.cc\" %defines %verbose -o subdir/foo.cc ;;
-68;output.at:128;Output files: %skeleton \"lalr1.cc\" %defines %verbose %file-prefix \"output_dir/foo\"  ;;
-69;output.at:158;Conflicting output files:  --graph=\"foo.tab.c\";;
-70;output.at:163;Conflicting output files: %defines \"foo.output\" -v;;
-71;output.at:168;Conflicting output files: %skeleton \"lalr1.cc\" %defines --graph=\"location.hh\";;
-72;output.at:173;Conflicting output files:  -o foo.y;;
-73;output.at:219;Output file name: \`~!@#\$%^&*()-=_+{}[]|\\:;<>, .';c++;
-74;output.at:226;Output file name: (;c++;
-75;output.at:227;Output file name: );c++;
-76;output.at:228;Output file name: #;c++;
-77;output.at:229;Output file name: @@;c++;
-78;output.at:230;Output file name: @{;c++;
-79;output.at:231;Output file name: @};c++;
-80;output.at:232;Output file name: [;c++;
-81;output.at:233;Output file name: ];c++;
-82;skeletons.at:24;Relative skeleton file names;;
-83;skeletons.at:84;Installed skeleton file names;;
-84;skeletons.at:146;%define Boolean variables: invalid skeleton defaults;;
-85;skeletons.at:170;Complaining during macro argument expansion;;
-86;skeletons.at:252;Fatal errors make M4 exit immediately;;
-87;skeletons.at:306;Fatal errors but M4 continues producing output;;
-88;sets.at:66;Nullable;;
-89;sets.at:151;Broken Closure;;
-90;sets.at:193;Firsts;;
-91;sets.at:269;Accept;;
-92;reduce.at:25;Useless Terminals;;
-93;reduce.at:69;Useless Nonterminals;;
-94;reduce.at:124;Useless Rules;report;
-95;reduce.at:212;Reduced Automaton;report;
-96;reduce.at:302;Underivable Rules;report;
-97;reduce.at:344;Empty Language;;
-98;reduce.at:395;no %define lr.type: Single State Split;;
-99;reduce.at:395;%define lr.type lalr: Single State Split;;
-100;reduce.at:395;%define lr.type ielr: Single State Split;;
-101;reduce.at:395;%define lr.type canonical-lr: Single State Split;;
-102;reduce.at:628;no %define lr.type: Lane Split;;
-103;reduce.at:628;%define lr.type lalr: Lane Split;;
-104;reduce.at:628;%define lr.type ielr: Lane Split;;
-105;reduce.at:628;%define lr.type canonical-lr: Lane Split;;
-106;reduce.at:872;no %define lr.type: Complex Lane Split;;
-107;reduce.at:872;%define lr.type lalr: Complex Lane Split;;
-108;reduce.at:872;%define lr.type ielr: Complex Lane Split;;
-109;reduce.at:872;%define lr.type canonical-lr: Complex Lane Split;;
-110;reduce.at:1141;no %define lr.type: Split During Added Lookahead Propagation;;
-111;reduce.at:1141;%define lr.type lalr: Split During Added Lookahead Propagation;;
-112;reduce.at:1141;%define lr.type ielr: Split During Added Lookahead Propagation;;
-113;reduce.at:1141;%define lr.type canonical-lr: Split During Added Lookahead Propagation;;
-114;reduce.at:1471;no %define lr.default-reductions;;
-115;reduce.at:1471;%define lr.default-reductions most;;
-116;reduce.at:1471;%define lr.default-reductions consistent;;
-117;reduce.at:1471;%define lr.default-reductions accepting;;
-118;synclines.at:111;Prologue synch line;;
-119;synclines.at:129;%union synch line;;
-120;synclines.at:150;Postprologue synch line;;
-121;synclines.at:174;Action synch line;;
-122;synclines.at:193;Epilogue synch line;;
-123;headers.at:57;Invalid CPP guards:  --defines=input/input.h;;
-124;headers.at:58;Invalid CPP guards:  --defines=9foo.h;;
-125;headers.at:59;Invalid CPP guards: %glr-parser --defines=input/input.h;;
-126;headers.at:60;Invalid CPP guards: %glr-parser --defines=9foo.h;;
-127;headers.at:69;export YYLTYPE;;
-128;headers.at:125;Several parsers;c++;
-129;actions.at:24;Mid-rule actions;;
-130;actions.at:79;Exotic Dollars;;
-131;actions.at:574;Printers and Destructors : ;;
-132;actions.at:575;Printers and Destructors with union: ;;
-133;actions.at:577;Printers and Destructors : %defines %skeleton \"lalr1.cc\";c++;
-134;actions.at:578;Printers and Destructors with union: %defines %skeleton \"lalr1.cc\";c++;
-135;actions.at:580;Printers and Destructors : %glr-parser;;
-136;actions.at:581;Printers and Destructors with union: %glr-parser;;
-137;actions.at:592;Default tagless %printer and %destructor;;
-138;actions.at:694;Default tagged and per-type %printer and %destructor;;
-139;actions.at:818;Default %printer and %destructor for user-defined end token;;
-140;actions.at:929;Default %printer and %destructor are not for error or \$undefined;;
-141;actions.at:1024;Default %printer and %destructor are not for \$accept;;
-142;actions.at:1089;Default %printer and %destructor for mid-rule values;;
-143;actions.at:1228;@\$ in %initial-action implies %locations;;
-144;actions.at:1229;@\$ in %destructor implies %locations;;
-145;actions.at:1230;@\$ in %printer implies %locations;;
-146;actions.at:1237;Fix user actions without a trailing semicolon;;
-147;actions.at:1346;Destroying lookahead assigned by semantic action;;
-148;actions.at:1405;YYBACKUP;;
-149;conflicts.at:31;S/R in initial;;
-150;conflicts.at:51;%nonassoc and eof;;
-151;conflicts.at:149;%error-verbose and consistent errors;c++ java;
-152;conflicts.at:450;LAC: %nonassoc requires splitting canonical LR states;;
-153;conflicts.at:540;Unresolved SR Conflicts;report;
-154;conflicts.at:647;Resolved SR Conflicts;report;
-155;conflicts.at:769;Defaulted Conflicted Reduction;report;
-156;conflicts.at:888;%expect not enough;;
-157;conflicts.at:908;%expect right;;
-158;conflicts.at:925;%expect too much;;
-159;conflicts.at:945;%expect with reduce conflicts;;
-160;conflicts.at:965;%prec with user string;;
-161;conflicts.at:982;%no-default-prec without %prec;;
-162;conflicts.at:1008;%no-default-prec with %prec;;
-163;conflicts.at:1032;%default-prec;;
-164;conflicts.at:1056;Unreachable States After Conflict Resolution;;
-165;conflicts.at:1267;Solved conflicts report for multiple reductions in a state;;
-166;conflicts.at:1347;%nonassoc error actions for multiple reductions in a state;;
-167;conflicts.at:1416;-W versus %expect and %expect-rr;;
-168;calc.at:616;Calculator ;;
-169;calc.at:618;Calculator %defines;;
-170;calc.at:619;Calculator %locations;;
-171;calc.at:621;Calculator %name-prefix=\"calc\";;
-172;calc.at:622;Calculator %verbose;;
-173;calc.at:623;Calculator %yacc;;
-174;calc.at:624;Calculator %error-verbose;;
-175;calc.at:626;Calculator %define api.pure %locations;;
-176;calc.at:627;Calculator %define api.push-pull both %define api.pure %locations;;
-177;calc.at:628;Calculator %error-verbose %locations;;
-178;calc.at:630;Calculator %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-179;calc.at:631;Calculator %error-verbose %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
-180;calc.at:633;Calculator %debug;;
-181;calc.at:634;Calculator %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-182;calc.at:635;Calculator %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
-183;calc.at:637;Calculator %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-184;calc.at:638;Calculator %define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
-185;calc.at:640;Calculator %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
-186;calc.at:657;Calculator %glr-parser ;;
-187;calc.at:659;Calculator %glr-parser %defines;;
-188;calc.at:660;Calculator %glr-parser %locations;;
-189;calc.at:661;Calculator %glr-parser %name-prefix \"calc\";;
-190;calc.at:662;Calculator %glr-parser %define api.prefix \"calc\";;
-191;calc.at:663;Calculator %glr-parser %verbose;;
-192;calc.at:664;Calculator %glr-parser %yacc;;
-193;calc.at:665;Calculator %glr-parser %error-verbose;;
-194;calc.at:667;Calculator %glr-parser %define api.pure %locations;;
-195;calc.at:668;Calculator %glr-parser %error-verbose %locations;;
-196;calc.at:670;Calculator %glr-parser %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-197;calc.at:672;Calculator %glr-parser %debug;;
-198;calc.at:673;Calculator %glr-parser %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-199;calc.at:674;Calculator %glr-parser %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
-200;calc.at:676;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
-201;calc.at:678;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
-202;calc.at:679;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
-203;calc.at:689;Calculator %skeleton \"lalr1.cc\" %defines %locations;c++;
-204;calc.at:698;Calculator %language \"C++\" %defines %locations ;c++;
-205;calc.at:699;Calculator %language \"C++\" %defines %locations %define location_type Span;c++;
-206;calc.at:700;Calculator %language \"C++\" %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
-207;calc.at:701;Calculator %language \"C++\" %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
-208;calc.at:702;Calculator %language \"C++\" %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
-209;calc.at:704;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc;c++;
-210;calc.at:706;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
-211;calc.at:707;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
-212;calc.at:718;Calculator %skeleton \"glr.cc\" %defines %locations;c++;
-213;calc.at:727;Calculator %language \"C++\" %glr-parser %defines %locations ;c++;
-214;calc.at:728;Calculator %language \"C++\" %glr-parser %defines %locations %define location_type Span;c++;
-215;calc.at:729;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
-216;calc.at:730;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
-217;calc.at:732;Calculator %language \"C++\" %glr-parser %defines %locations %debug;c++;
-218;calc.at:733;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
-219;calc.at:735;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
-220;calc.at:737;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
-221;calc.at:738;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
-222;torture.at:137;Big triangle;;
-223;torture.at:227;Big horizontal;;
-224;torture.at:363;Many lookahead tokens;;
-225;torture.at:459;Exploding the Stack Size with Alloca;;
-226;torture.at:505;Exploding the Stack Size with Malloc;;
-227;existing.at:76;GNU AWK 3.1.0 Grammar: LALR(1);;
-228;existing.at:76;GNU AWK 3.1.0 Grammar: IELR(1);;
-229;existing.at:76;GNU AWK 3.1.0 Grammar: Canonical LR(1);;
-230;existing.at:780;GNU Cim Grammar: LALR(1);;
-231;existing.at:780;GNU Cim Grammar: IELR(1);;
-232;existing.at:780;GNU Cim Grammar: Canonical LR(1);;
-233;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: LALR(1);;
-234;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: IELR(1);;
-235;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: Canonical LR(1);;
-236;regression.at:25;Trivial grammars;;
-237;regression.at:55;YYSTYPE typedef;;
-238;regression.at:85;Early token definitions with --yacc;;
-239;regression.at:125;Early token definitions without --yacc;;
-240;regression.at:170;Braces parsing;;
-241;regression.at:194;Duplicate string;;
-242;regression.at:222;Rule Line Numbers;report;
-243;regression.at:368;Mixing %token styles;;
-244;regression.at:391;Invalid inputs;;
-245;regression.at:418;Invalid inputs with {};;
-246;regression.at:443;Token definitions;;
-247;regression.at:503;Characters Escapes;;
-248;regression.at:536;Web2c Report;report;
-249;regression.at:713;Web2c Actions;report;
-250;regression.at:929;Dancer ;;
-251;regression.at:930;Dancer %glr-parser;;
-252;regression.at:931;Dancer %skeleton \"lalr1.cc\";c++;
-253;regression.at:1014;Expecting two tokens ;;
-254;regression.at:1015;Expecting two tokens %glr-parser;;
-255;regression.at:1016;Expecting two tokens %skeleton \"lalr1.cc\";c++;
-256;regression.at:1024;Braced code in declaration in rules section;;
-257;regression.at:1091;String alias declared after use;;
-258;regression.at:1114;Extra lookahead sets in report;;
-259;regression.at:1155;Token number in precedence declaration;;
-260;regression.at:1213;parse-gram.y: LALR = IELR;;
-261;regression.at:1234;%error-verbose and YYSTACK_USE_ALLOCA;;
-262;regression.at:1313;%error-verbose overflow;;
-263;regression.at:1423;LAC: Exploratory stack;;
-264;regression.at:1517;LAC: Memory exhaustion;;
-265;c++.at:102;Doxygen Public Documentation;;
-266;c++.at:103;Doxygen Private Documentation;;
-267;c++.at:161;Relative namespace references;c++;
-268;c++.at:167;Absolute namespace references;c++;
-269;c++.at:176;Syntactically invalid namespace references;;
-270;java.at:360;Calculator ;java;
-271;java.at:360;Calculator %error-verbose ;java;
-272;java.at:360;Calculator %locations ;java;
-273;java.at:360;Calculator %error-verbose %locations ;java;
-274;java.at:369;Calculator %lex-param { InputStream is } ;java;
-275;java.at:369;Calculator %error-verbose %lex-param { InputStream is } ;java;
-276;java.at:369;Calculator %locations %lex-param { InputStream is } ;java;
-277;java.at:369;Calculator %error-verbose %locations %lex-param { InputStream is } ;java;
-278;java.at:455;Java parser class and package names;java;
-279;java.at:476;Java parser class modifiers;java;
-280;java.at:534;Java parser class extends and implements;java;
-281;java.at:554;Java %parse-param and %lex-param;java;
-282;java.at:628;Java throws specifications;java;
-283;java.at:717;Java stype, position_class and location_class;java;
-284;java.at:748;Java syntax error handling without error token;java;
-285;cxx-type.at:394;GLR: Resolve ambiguity, impure, no locations;;
-286;cxx-type.at:401;GLR: Resolve ambiguity, impure, locations;;
-287;cxx-type.at:407;GLR: Resolve ambiguity, pure, no locations;;
-288;cxx-type.at:414;GLR: Resolve ambiguity, pure, locations;;
-289;cxx-type.at:421;GLR: Merge conflicting parses, impure, no locations;;
-290;cxx-type.at:428;GLR: Merge conflicting parses, impure, locations;;
-291;cxx-type.at:435;GLR: Merge conflicting parses, pure, no locations;;
-292;cxx-type.at:441;GLR: Merge conflicting parses, pure, locations;;
-293;cxx-type.at:448;GLR: Verbose messages, resolve ambiguity, impure, no locations;;
-294;glr-regression.at:25;Badly Collapsed GLR States;;
-295;glr-regression.at:117;Improper handling of embedded actions and dollar(-N) in GLR parsers;;
-296;glr-regression.at:233;Improper merging of GLR delayed action sets;;
-297;glr-regression.at:345;Duplicate representation of merged trees;;
-298;glr-regression.at:436;User destructor for unresolved GLR semantic value;;
-299;glr-regression.at:496;User destructor after an error during a split parse;;
-300;glr-regression.at:550;Duplicated user destructor for lookahead;;
-301;glr-regression.at:639;Incorrectly initialized location for empty right-hand side in GLR;;
-302;glr-regression.at:733;No users destructors if stack 0 deleted;;
-303;glr-regression.at:810;Corrupted semantic options if user action cuts parse;;
-304;glr-regression.at:864;Undesirable destructors if user action cuts parse;;
-305;glr-regression.at:922;Leaked semantic values if user action cuts parse;;
-306;glr-regression.at:1045;Incorrect lookahead during deterministic GLR;;
-307;glr-regression.at:1169;Incorrect lookahead during nondeterministic GLR;;
-308;glr-regression.at:1386;Leaked semantic values when reporting ambiguity;;
-309;glr-regression.at:1468;Leaked lookahead after nondeterministic parse syntax error;;
-310;glr-regression.at:1528;Uninitialized location when reporting ambiguity;;
-311;glr-regression.at:1613;Missed %merge type warnings when LHS type is declared later;;
-312;glr-regression.at:1666;Ambiguity reports;;
-313;push.at:24;Memory Leak for Early Deletion;;
-314;push.at:83;Multiple impure instances;;
-315;push.at:144;Unsupported Skeletons;;
+35;input.at:1378;Stray \$ or @;;
+36;input.at:1412;Code injection;;
+37;named-refs.at:21;Tutorial calculator;;
+38;named-refs.at:195;Undefined and ambiguous references;;
+39;named-refs.at:271;Misleading references;;
+40;named-refs.at:288;Many kinds of errors;;
+41;named-refs.at:400;Missing identifiers in brackets;;
+42;named-refs.at:414;Redundant words in brackets;;
+43;named-refs.at:428;Comments in brackets;;
+44;named-refs.at:442;Stray symbols in brackets;;
+45;named-refs.at:459;Redundant words in LHS brackets;;
+46;named-refs.at:474;Factored LHS;;
+47;named-refs.at:485;Unresolved references;;
+48;named-refs.at:550;\$ or @ followed by . or -;;
+49;output.at:44;Output files:  -dv ;;
+50;output.at:50;Output files:  -dv >&-;;
+51;output.at:55;Output files:  -dv -o foo.c ;;
+52;output.at:57;Output files:  -dv -o foo.tab.c ;;
+53;output.at:59;Output files:  -dv -y ;;
+54;output.at:61;Output files:  -dv -b bar ;;
+55;output.at:63;Output files:  -dv -g -o foo.c ;;
+56;output.at:67;Output files: %defines %verbose  ;;
+57;output.at:69;Output files: %defines %verbose %yacc  ;;
+58;output.at:72;Output files: %defines %verbose %yacc  ;;
+59;output.at:76;Output files: %file-prefix \"bar\" %defines %verbose  ;;
+60;output.at:78;Output files: %output=\"bar.c\" %defines %verbose %yacc  ;;
+61;output.at:80;Output files: %file-prefix=\"baz\" %output \"bar.c\" %defines %verbose %yacc  ;;
+62;output.at:87;Output files: %defines %verbose  ;;
+63;output.at:90;Output files: %defines %verbose  -o foo.c ;;
+64;output.at:93;Output files:  --defines=foo.hpp -o foo.c++ ;;
+65;output.at:97;Output files: %defines \"foo.hpp\" -o foo.c++ ;;
+66;output.at:101;Output files:  -o foo.c++ --graph=foo.gph ;;
+67;output.at:116;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
+68;output.at:119;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
+69;output.at:123;Output files: %skeleton \"lalr1.cc\" %defines %verbose -o subdir/foo.cc ;;
+70;output.at:128;Output files: %skeleton \"lalr1.cc\" %defines %verbose %file-prefix \"output_dir/foo\"  ;;
+71;output.at:158;Conflicting output files:  --graph=\"foo.tab.c\";;
+72;output.at:163;Conflicting output files: %defines \"foo.output\" -v;;
+73;output.at:168;Conflicting output files: %skeleton \"lalr1.cc\" %defines --graph=\"location.hh\";;
+74;output.at:173;Conflicting output files:  -o foo.y;;
+75;output.at:219;Output file name: \`~!@#\$%^&*()-=_+{}[]|\\:;<>, .';c++;
+76;output.at:226;Output file name: (;c++;
+77;output.at:227;Output file name: );c++;
+78;output.at:228;Output file name: #;c++;
+79;output.at:229;Output file name: @@;c++;
+80;output.at:230;Output file name: @{;c++;
+81;output.at:231;Output file name: @};c++;
+82;output.at:232;Output file name: [;c++;
+83;output.at:233;Output file name: ];c++;
+84;skeletons.at:24;Relative skeleton file names;;
+85;skeletons.at:84;Installed skeleton file names;;
+86;skeletons.at:146;%define Boolean variables: invalid skeleton defaults;;
+87;skeletons.at:170;Complaining during macro argument expansion;;
+88;skeletons.at:252;Fatal errors make M4 exit immediately;;
+89;skeletons.at:306;Fatal errors but M4 continues producing output;;
+90;sets.at:66;Nullable;;
+91;sets.at:151;Broken Closure;;
+92;sets.at:193;Firsts;;
+93;sets.at:269;Accept;;
+94;reduce.at:25;Useless Terminals;;
+95;reduce.at:69;Useless Nonterminals;;
+96;reduce.at:124;Useless Rules;report;
+97;reduce.at:212;Reduced Automaton;report;
+98;reduce.at:302;Underivable Rules;report;
+99;reduce.at:344;Empty Language;;
+100;reduce.at:395;no %define lr.type: Single State Split;;
+101;reduce.at:395;%define lr.type lalr: Single State Split;;
+102;reduce.at:395;%define lr.type ielr: Single State Split;;
+103;reduce.at:395;%define lr.type canonical-lr: Single State Split;;
+104;reduce.at:628;no %define lr.type: Lane Split;;
+105;reduce.at:628;%define lr.type lalr: Lane Split;;
+106;reduce.at:628;%define lr.type ielr: Lane Split;;
+107;reduce.at:628;%define lr.type canonical-lr: Lane Split;;
+108;reduce.at:872;no %define lr.type: Complex Lane Split;;
+109;reduce.at:872;%define lr.type lalr: Complex Lane Split;;
+110;reduce.at:872;%define lr.type ielr: Complex Lane Split;;
+111;reduce.at:872;%define lr.type canonical-lr: Complex Lane Split;;
+112;reduce.at:1141;no %define lr.type: Split During Added Lookahead Propagation;;
+113;reduce.at:1141;%define lr.type lalr: Split During Added Lookahead Propagation;;
+114;reduce.at:1141;%define lr.type ielr: Split During Added Lookahead Propagation;;
+115;reduce.at:1141;%define lr.type canonical-lr: Split During Added Lookahead Propagation;;
+116;reduce.at:1471;no %define lr.default-reductions;;
+117;reduce.at:1471;%define lr.default-reductions most;;
+118;reduce.at:1471;%define lr.default-reductions consistent;;
+119;reduce.at:1471;%define lr.default-reductions accepting;;
+120;synclines.at:124;Prologue syncline;;
+121;synclines.at:142;%union syncline;;
+122;synclines.at:163;Postprologue syncline;;
+123;synclines.at:187;Action syncline;;
+124;synclines.at:206;Epilogue syncline;;
+125;headers.at:57;Invalid CPP guards:  --defines=input/input.h;;
+126;headers.at:58;Invalid CPP guards:  --defines=9foo.h;;
+127;headers.at:59;Invalid CPP guards: %glr-parser --defines=input/input.h;;
+128;headers.at:60;Invalid CPP guards: %glr-parser --defines=9foo.h;;
+129;headers.at:69;export YYLTYPE;;
+130;headers.at:125;Several parsers;c++;
+131;actions.at:24;Mid-rule actions;;
+132;actions.at:79;Exotic Dollars;;
+133;actions.at:574;Printers and Destructors : ;;
+134;actions.at:575;Printers and Destructors with union: ;;
+135;actions.at:577;Printers and Destructors : %defines %skeleton \"lalr1.cc\";c++;
+136;actions.at:578;Printers and Destructors with union: %defines %skeleton \"lalr1.cc\";c++;
+137;actions.at:580;Printers and Destructors : %glr-parser;;
+138;actions.at:581;Printers and Destructors with union: %glr-parser;;
+139;actions.at:592;Default tagless %printer and %destructor;;
+140;actions.at:694;Default tagged and per-type %printer and %destructor;;
+141;actions.at:818;Default %printer and %destructor for user-defined end token;;
+142;actions.at:929;Default %printer and %destructor are not for error or \$undefined;;
+143;actions.at:1024;Default %printer and %destructor are not for \$accept;;
+144;actions.at:1089;Default %printer and %destructor for mid-rule values;;
+145;actions.at:1228;@\$ in %initial-action implies %locations;;
+146;actions.at:1229;@\$ in %destructor implies %locations;;
+147;actions.at:1230;@\$ in %printer implies %locations;;
+148;actions.at:1362;Qualified \$\$ in actions: yacc.c;;
+149;actions.at:1363;Qualified \$\$ in actions: glr.c;;
+150;actions.at:1364;Qualified \$\$ in actions: lalr1.cc;c++;
+151;actions.at:1365;Qualified \$\$ in actions: glr.cc;c++;
+152;actions.at:1373;Fix user actions without a trailing semicolon;;
+153;actions.at:1482;Destroying lookahead assigned by semantic action;;
+154;actions.at:1541;YYBACKUP;;
+155;conflicts.at:31;S/R in initial;;
+156;conflicts.at:51;%nonassoc and eof;;
+157;conflicts.at:149;%error-verbose and consistent errors;c++ java;
+158;conflicts.at:450;LAC: %nonassoc requires splitting canonical LR states;;
+159;conflicts.at:540;Unresolved SR Conflicts;report;
+160;conflicts.at:647;Resolved SR Conflicts;report;
+161;conflicts.at:769;Defaulted Conflicted Reduction;report;
+162;conflicts.at:888;%expect not enough;;
+163;conflicts.at:908;%expect right;;
+164;conflicts.at:925;%expect too much;;
+165;conflicts.at:945;%expect with reduce conflicts;;
+166;conflicts.at:965;%prec with user string;;
+167;conflicts.at:982;%no-default-prec without %prec;;
+168;conflicts.at:1008;%no-default-prec with %prec;;
+169;conflicts.at:1032;%default-prec;;
+170;conflicts.at:1056;Unreachable States After Conflict Resolution;;
+171;conflicts.at:1267;Solved conflicts report for multiple reductions in a state;;
+172;conflicts.at:1347;%nonassoc error actions for multiple reductions in a state;;
+173;conflicts.at:1416;-W versus %expect and %expect-rr;;
+174;calc.at:630;Calculator ;;
+175;calc.at:632;Calculator %defines;;
+176;calc.at:633;Calculator %locations;;
+177;calc.at:635;Calculator %name-prefix=\"calc\";;
+178;calc.at:636;Calculator %verbose;;
+179;calc.at:637;Calculator %yacc;;
+180;calc.at:638;Calculator %error-verbose;;
+181;calc.at:640;Calculator %define api.pure %locations;;
+182;calc.at:641;Calculator %define api.push-pull both %define api.pure %locations;;
+183;calc.at:642;Calculator %error-verbose %locations;;
+184;calc.at:644;Calculator %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+185;calc.at:645;Calculator %error-verbose %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+186;calc.at:647;Calculator %debug;;
+187;calc.at:648;Calculator %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+188;calc.at:649;Calculator %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+189;calc.at:651;Calculator %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+190;calc.at:652;Calculator %define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+191;calc.at:654;Calculator %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
+192;calc.at:671;Calculator %glr-parser ;;
+193;calc.at:673;Calculator %glr-parser %defines;;
+194;calc.at:674;Calculator %glr-parser %locations;;
+195;calc.at:675;Calculator %glr-parser %name-prefix \"calc\";;
+196;calc.at:676;Calculator %glr-parser %define api.prefix \"calc\";;
+197;calc.at:677;Calculator %glr-parser %verbose;;
+198;calc.at:678;Calculator %glr-parser %yacc;;
+199;calc.at:679;Calculator %glr-parser %error-verbose;;
+200;calc.at:681;Calculator %glr-parser %define api.pure %locations;;
+201;calc.at:682;Calculator %glr-parser %error-verbose %locations;;
+202;calc.at:684;Calculator %glr-parser %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+203;calc.at:686;Calculator %glr-parser %debug;;
+204;calc.at:687;Calculator %glr-parser %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+205;calc.at:688;Calculator %glr-parser %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+206;calc.at:690;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+207;calc.at:692;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
+208;calc.at:693;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
+209;calc.at:703;Calculator %skeleton \"lalr1.cc\" %defines %locations;c++;
+210;calc.at:712;Calculator %language \"C++\" %defines %locations ;c++;
+211;calc.at:713;Calculator %language \"C++\" %defines %locations %define location_type Span;c++;
+212;calc.at:714;Calculator %language \"C++\" %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
+213;calc.at:715;Calculator %language \"C++\" %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
+214;calc.at:716;Calculator %language \"C++\" %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+215;calc.at:718;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc;c++;
+216;calc.at:720;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
+217;calc.at:721;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
+218;calc.at:732;Calculator %skeleton \"glr.cc\" %defines %locations;c++;
+219;calc.at:741;Calculator %language \"C++\" %glr-parser %defines %locations ;c++;
+220;calc.at:742;Calculator %language \"C++\" %glr-parser %defines %locations %define location_type Span;c++;
+221;calc.at:743;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
+222;calc.at:744;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
+223;calc.at:746;Calculator %language \"C++\" %glr-parser %defines %locations %debug;c++;
+224;calc.at:747;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+225;calc.at:749;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+226;calc.at:751;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
+227;calc.at:752;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};c++;
+228;torture.at:137;Big triangle;;
+229;torture.at:227;Big horizontal;;
+230;torture.at:363;Many lookahead tokens;;
+231;torture.at:459;Exploding the Stack Size with Alloca;;
+232;torture.at:505;Exploding the Stack Size with Malloc;;
+233;existing.at:76;GNU AWK 3.1.0 Grammar: LALR(1);;
+234;existing.at:76;GNU AWK 3.1.0 Grammar: IELR(1);;
+235;existing.at:76;GNU AWK 3.1.0 Grammar: Canonical LR(1);;
+236;existing.at:780;GNU Cim Grammar: LALR(1);;
+237;existing.at:780;GNU Cim Grammar: IELR(1);;
+238;existing.at:780;GNU Cim Grammar: Canonical LR(1);;
+239;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: LALR(1);;
+240;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: IELR(1);;
+241;existing.at:1400;GNU pic (Groff 1.18.1) Grammar: Canonical LR(1);;
+242;regression.at:25;Trivial grammars;;
+243;regression.at:55;YYSTYPE typedef;;
+244;regression.at:85;Early token definitions with --yacc;;
+245;regression.at:125;Early token definitions without --yacc;;
+246;regression.at:170;Braces parsing;;
+247;regression.at:194;Duplicate string;;
+248;regression.at:222;Rule Line Numbers;report;
+249;regression.at:368;Mixing %token styles;;
+250;regression.at:391;Invalid inputs;;
+251;regression.at:418;Invalid inputs with {};;
+252;regression.at:443;Token definitions;;
+253;regression.at:503;Characters Escapes;;
+254;regression.at:536;Web2c Report;report;
+255;regression.at:713;Web2c Actions;report;
+256;regression.at:928;Dancer ;;
+257;regression.at:929;Dancer %glr-parser;;
+258;regression.at:930;Dancer %skeleton \"lalr1.cc\";c++;
+259;regression.at:1012;Expecting two tokens ;;
+260;regression.at:1013;Expecting two tokens %glr-parser;;
+261;regression.at:1014;Expecting two tokens %skeleton \"lalr1.cc\";c++;
+262;regression.at:1022;Braced code in declaration in rules section;;
+263;regression.at:1089;String alias declared after use;;
+264;regression.at:1112;Extra lookahead sets in report;;
+265;regression.at:1153;Token number in precedence declaration;;
+266;regression.at:1211;parse-gram.y: LALR = IELR;;
+267;regression.at:1232;%error-verbose and YYSTACK_USE_ALLOCA;;
+268;regression.at:1311;%error-verbose overflow;;
+269;regression.at:1421;LAC: Exploratory stack;;
+270;regression.at:1515;LAC: Memory exhaustion;;
+271;regression.at:1664;Lex and parse params: \"yacc.c\";;
+272;regression.at:1665;Lex and parse params: \"glr.c\";;
+273;regression.at:1666;Lex and parse params: \"lalr1.cc\";c++;
+274;regression.at:1667;Lex and parse params: \"glr.cc\";c++;
+275;c++.at:102;Doxygen Public Documentation;;
+276;c++.at:103;Doxygen Private Documentation;;
+277;c++.at:161;Relative namespace references;c++;
+278;c++.at:167;Absolute namespace references;c++;
+279;c++.at:176;Syntactically invalid namespace references;;
+280;java.at:360;Calculator ;java;
+281;java.at:360;Calculator %error-verbose ;java;
+282;java.at:360;Calculator %locations ;java;
+283;java.at:360;Calculator %error-verbose %locations ;java;
+284;java.at:369;Calculator %lex-param { InputStream is } ;java;
+285;java.at:369;Calculator %error-verbose %lex-param { InputStream is } ;java;
+286;java.at:369;Calculator %locations %lex-param { InputStream is } ;java;
+287;java.at:369;Calculator %error-verbose %locations %lex-param { InputStream is } ;java;
+288;java.at:455;Java parser class and package names;java;
+289;java.at:476;Java parser class modifiers;java;
+290;java.at:534;Java parser class extends and implements;java;
+291;java.at:554;Java %parse-param and %lex-param;java;
+292;java.at:628;Java throws specifications;java;
+293;java.at:717;Java stype, position_class and location_class;java;
+294;java.at:748;Java syntax error handling without error token;java;
+295;cxx-type.at:394;GLR: Resolve ambiguity, impure, no locations;;
+296;cxx-type.at:401;GLR: Resolve ambiguity, impure, locations;;
+297;cxx-type.at:407;GLR: Resolve ambiguity, pure, no locations;;
+298;cxx-type.at:414;GLR: Resolve ambiguity, pure, locations;;
+299;cxx-type.at:421;GLR: Merge conflicting parses, impure, no locations;;
+300;cxx-type.at:428;GLR: Merge conflicting parses, impure, locations;;
+301;cxx-type.at:435;GLR: Merge conflicting parses, pure, no locations;;
+302;cxx-type.at:441;GLR: Merge conflicting parses, pure, locations;;
+303;cxx-type.at:448;GLR: Verbose messages, resolve ambiguity, impure, no locations;;
+304;glr-regression.at:25;Badly Collapsed GLR States;;
+305;glr-regression.at:117;Improper handling of embedded actions and dollar(-N) in GLR parsers;;
+306;glr-regression.at:233;Improper merging of GLR delayed action sets;;
+307;glr-regression.at:345;Duplicate representation of merged trees;;
+308;glr-regression.at:436;User destructor for unresolved GLR semantic value;;
+309;glr-regression.at:496;User destructor after an error during a split parse;;
+310;glr-regression.at:550;Duplicated user destructor for lookahead;;
+311;glr-regression.at:639;Incorrectly initialized location for empty right-hand side in GLR;;
+312;glr-regression.at:733;No users destructors if stack 0 deleted;;
+313;glr-regression.at:810;Corrupted semantic options if user action cuts parse;;
+314;glr-regression.at:864;Undesirable destructors if user action cuts parse;;
+315;glr-regression.at:922;Leaked semantic values if user action cuts parse;;
+316;glr-regression.at:1045;Incorrect lookahead during deterministic GLR;;
+317;glr-regression.at:1169;Incorrect lookahead during nondeterministic GLR;;
+318;glr-regression.at:1386;Leaked semantic values when reporting ambiguity;;
+319;glr-regression.at:1468;Leaked lookahead after nondeterministic parse syntax error;;
+320;glr-regression.at:1528;Uninitialized location when reporting ambiguity;;
+321;glr-regression.at:1613;Missed %merge type warnings when LHS type is declared later;;
+322;glr-regression.at:1666;Ambiguity reports;;
+323;push.at:24;Memory Leak for Early Deletion;;
+324;push.at:83;Multiple impure instances;;
+325;push.at:144;Unsupported Skeletons;;
 "
 # List of the all the test groups.
 at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'`
@@ -918,7 +928,7 @@ at_fn_validate_ranges ()
   for at_grp
   do
     eval at_value=\$$at_grp
-    if test $at_value -lt 1 || test $at_value -gt 315; then
+    if test $at_value -lt 1 || test $at_value -gt 325; then
       $as_echo "invalid test group: $at_value" >&2
       exit 1
     fi
@@ -1244,7 +1254,7 @@ fi
 # List of tests.
 if $at_list_p; then
   cat <<_ATEOF || at_write_fail=1
-GNU Bison 2.6 test suite test groups:
+GNU Bison 2.6.2 test suite test groups:
 
  NUM: FILE-NAME:LINE     TEST-GROUP-NAME
       KEYWORDS
@@ -1285,7 +1295,7 @@ _ATEOF
   exit $at_write_fail
 fi
 if $at_version_p; then
-  $as_echo "$as_me (GNU Bison 2.6)" &&
+  $as_echo "$as_me (GNU Bison 2.6.2)" &&
   cat <<\_ATEOF || at_write_fail=1
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1306,70 +1316,70 @@ esac
 # Category starts at test group 1.
 at_banner_text_1="Input Processing."
 # Banner 2. named-refs.at:19
-# Category starts at test group 35.
+# Category starts at test group 37.
 at_banner_text_2="Named references tests."
 # Banner 3. output.at:18
-# Category starts at test group 47.
+# Category starts at test group 49.
 at_banner_text_3="Output file names."
 # Banner 4. skeletons.at:18
-# Category starts at test group 82.
+# Category starts at test group 84.
 at_banner_text_4="Skeleton Support."
 # Banner 5. sets.at:59
-# Category starts at test group 88.
+# Category starts at test group 90.
 at_banner_text_5="Grammar Sets (Firsts etc.)."
 # Banner 6. reduce.at:18
-# Category starts at test group 92.
+# Category starts at test group 94.
 at_banner_text_6="Grammar Reduction."
 # Banner 7. synclines.at:19
-# Category starts at test group 118.
+# Category starts at test group 120.
 at_banner_text_7="User Actions."
 # Banner 8. headers.at:19
-# Category starts at test group 123.
+# Category starts at test group 125.
 at_banner_text_8="Parser Headers."
 # Banner 9. actions.at:18
-# Category starts at test group 129.
+# Category starts at test group 131.
 at_banner_text_9="User Actions."
 # Banner 10. conflicts.at:19
-# Category starts at test group 149.
+# Category starts at test group 155.
 at_banner_text_10="Conflicts."
-# Banner 11. calc.at:607
-# Category starts at test group 168.
+# Banner 11. calc.at:621
+# Category starts at test group 174.
 at_banner_text_11="Simple LALR(1) Calculator."
-# Banner 12. calc.at:647
-# Category starts at test group 186.
+# Banner 12. calc.at:661
+# Category starts at test group 192.
 at_banner_text_12="Simple GLR Calculator."
-# Banner 13. calc.at:686
-# Category starts at test group 203.
+# Banner 13. calc.at:700
+# Category starts at test group 209.
 at_banner_text_13="Simple LALR(1) C++ Calculator."
-# Banner 14. calc.at:715
-# Category starts at test group 212.
+# Banner 14. calc.at:729
+# Category starts at test group 218.
 at_banner_text_14="Simple GLR C++ Calculator."
 # Banner 15. torture.at:19
-# Category starts at test group 222.
+# Category starts at test group 228.
 at_banner_text_15="Torture Tests."
 # Banner 16. existing.at:19
-# Category starts at test group 227.
+# Category starts at test group 233.
 at_banner_text_16="Existing Grammars."
 # Banner 17. regression.at:18
-# Category starts at test group 236.
+# Category starts at test group 242.
 at_banner_text_17="Regression tests."
 # Banner 18. c++.at:19
-# Category starts at test group 265.
+# Category starts at test group 275.
 at_banner_text_18="C++ Features."
 # Banner 19. java.at:18
-# Category starts at test group 270.
+# Category starts at test group 280.
 at_banner_text_19="Java Calculator."
 # Banner 20. java.at:382
-# Category starts at test group 278.
+# Category starts at test group 288.
 at_banner_text_20="Java Parameters."
 # Banner 21. cxx-type.at:18
-# Category starts at test group 285.
+# Category starts at test group 295.
 at_banner_text_21="C++ Type Syntax (GLR)."
 # Banner 22. glr-regression.at:19
-# Category starts at test group 294.
+# Category starts at test group 304.
 at_banner_text_22="GLR Regression Tests"
 # Banner 23. push.at:18
-# Category starts at test group 313.
+# Category starts at test group 323.
 at_banner_text_23="Push Parsing Tests"
 
 # Take any -C into account.
@@ -1530,13 +1540,13 @@ fi
 exec 5>>"$at_suite_log"
 
 # Banners and logs.
-$as_echo "## ------------------------- ##
-## GNU Bison 2.6 test suite. ##
-## ------------------------- ##"
+$as_echo "## --------------------------- ##
+## GNU Bison 2.6.2 test suite. ##
+## --------------------------- ##"
 {
-  $as_echo "## ------------------------- ##
-## GNU Bison 2.6 test suite. ##
-## ------------------------- ##"
+  $as_echo "## --------------------------- ##
+## GNU Bison 2.6.2 test suite. ##
+## --------------------------- ##"
   echo
 
   $as_echo "$as_me: command line was:"
@@ -2398,7 +2408,7 @@ _ASBOX
   $as_echo "Please send $at_msg and all information you think might help:
 
    To: <bug-bison@gnu.org>
-   Subject: [GNU Bison 2.6] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+   Subject: [GNU Bison 2.6.2] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
 
 You may investigate any problem if you feel able to do so, in which
 case the test suite provides a good starting point.  Its output may
@@ -5169,7 +5179,7 @@ read at_status <"$at_status_file"
 #AT_STOP_12
 #AT_START_13
 at_fn_group_banner 13 'input.at:587' \
-  "Require 2.6" "                                    " 1
+  "Require 2.6.2" "                                  " 1
 at_xfail=no
 (
   $as_echo "13. $at_setup_line: testing $at_desc ..."
@@ -5184,7 +5194,7 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%require "2.6";
+%require "2.6.2";
 %%
 empty_file:;
 _ATEOF
@@ -5495,7 +5505,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -8653,335 +8663,18 @@ $at_traceon; }
 read at_status <"$at_status_file"
 #AT_STOP_34
 #AT_START_35
-at_fn_group_banner 35 'named-refs.at:21' \
-  "Tutorial calculator" "                            " 2
+at_fn_group_banner 35 'input.at:1378' \
+  "Stray \$ or @" "                                   " 1
 at_xfail=no
 (
   $as_echo "35. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
-cat >test.y <<'_ATEOF'
-%code top {
-#include <config.h>
-/* We don't need perfect functions for these tests. */
-#undef malloc
-#undef memcmp
-#undef realloc
-}
-
-
-%{
-#include <assert.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-typedef int semantic_value;
-FILE *input;
-static semantic_value global_result = 0;
-static int global_count = 0;
-static int power (int base, int exponent);
-static void yyerror (const char *msg);
-static int yylex (void);
-%}
-
-%union
-{
-  semantic_value ival;
-};
-
-%token CALC_EOF 0 "end of input"
-%token <ival> NUM "number"
-%type  <ival> exp
-
-%nonassoc '='   /* comparison         */
-%left '-' '+'
-%left '*' '/'
-%left NEG /* negation--unary minus */
-%right '^'      /* exponentiation        */
-
-%%
-input:
-  line
-| input line         {  }
-;
-
-line:
-  '\n'
-| exp '\n'           {  }
-;
-
-exp:
-  NUM                { $$ = $NUM; }
-| exp[l] '=' exp[r]
-  {
-    if ($l != $r)
-      fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
-  }
-| exp[x] '+' { $<ival>$ = $x; } [l] exp[r]  { $$ = $<ival>l + $r;    }
-| exp[l] '-' exp[r]        { $$ = $l - $r;        }
-| exp[l] '*' exp[r]        { $$ = $l * $r;        }
-| exp[l] '/' exp[r]  { $$ = $l / $r;        }
-| '-' exp  %prec NEG { $$ = -$2;            }
-| exp[l] '^' exp[r]        { $$ = power ($l, $r); }
-| '(' exp[e] ')'        { $$ = $e;           }
-| '(' error ')'      { $$ = 1111; yyerrok;  }
-| '!'                { $$ = 0; YYERROR;     }
-| '-' error          { $$ = 0; YYERROR;     }
-;
-%%
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
-
-  fprintf (stderr, "%s\n", msg);
-}
-static int get_char (void)
-{
-  int res = getc (input);
-  return res;
-}
-
-static void unget_char (int c)
-{
-  ungetc (c, input);
-}
-
-static int read_signed_integer (void)
-{
-  int c = get_char ();
-  int sign = 1;
-  int n = 0;
-  if (c == '-')
-    {
-      c = get_char ();
-      sign = -1;
-    }
-  while (isdigit (c))
-    {
-      n = 10 * n + (c - '0');
-      c = get_char ();
-    }
-  unget_char ( c);
-  return sign * n;
-}
-
-static int
-yylex (void)
-{
-  int c;
-  /* Skip white space.  */
-  while ((c = get_char ()) == ' ' || c == '\t') {}
+# Give %printer and %destructor "<*> exp TOK" instead of "<*>" to
+# check that the warnings are reported once, not three times.
 
-  /* process numbers   */
-  if (c == '.' || isdigit (c))
-    {
-      unget_char ( c);
-      (yylval).ival = read_signed_integer ();
-      return NUM;
-    }
-
-  /* Return end-of-file.  */
-  if (c == EOF)
-    return CALC_EOF;
-
-  /* Return single chars. */
-  return c;
-}
-
-static int power (int base, int exponent)
-{
-  int res = 1;
-  assert (0 <= exponent);
-  for (/* Niente */; exponent; --exponent)
-    res *= base;
-  return res;
-}
-
-int main (int argc, const char **argv)
-{
-  semantic_value result = 0;
-  int count = 0;
-  int status;
-  if (argc == 2)
-    input = fopen (argv[1], "r");
-  else
-    input = stdin;
-  if (!input)
-    {
-      perror (argv[1]);
-      return 3;
-    }
-  status = yyparse ();
-  fclose (input);
-  assert (global_result == result);
-  assert (global_count == count);
-  return status;
-}
-_ATEOF
-
-
-
-cat >input.txt <<'_ATEOF'
-
-1 + 2 * 3 = 7
-1 + 2 * -3 = -5
--1^2 = -1
-(-1)^2 = 1
----1 = -1
-1 - 2 - 3 = -4
-1 - (2 - 3) = 2
-2^2^3 = 256
-(2^2)^3 = 64
-_ATEOF
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/named-refs.at:184: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o test.c test.y"
-at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:184"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o test.c test.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/named-refs.at:184: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y" "named-refs.at:184"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/named-refs.at:184: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:184"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/named-refs.at:184: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:184"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/named-refs.at:184: bison -o test.c test.y"
-at_fn_check_prepare_trace "named-refs.at:184"
-( $at_check_trace; bison -o test.c test.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/named-refs.at:185: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o test test.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o test test.c $LIBS" "named-refs.at:185"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o test test.c $LIBS
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:185"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/named-refs.at:186:  \$PREPARSER ./test input.txt"
-at_fn_check_prepare_dynamic " $PREPARSER ./test input.txt" "named-refs.at:186"
-( $at_check_trace;  $PREPARSER ./test input.txt
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; tee stderr <"$at_stderr"
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:186"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/named-refs.at:186: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "named-refs.at:186"
-( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; tee stderr <"$at_stderr"
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:186"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-  set +x
-  $at_times_p && times >"$at_times_file"
-) 5>&1 2>&1 7>&- | eval $at_tee_pipe
-read at_status <"$at_status_file"
-#AT_STOP_35
-#AT_START_36
-at_fn_group_banner 36 'named-refs.at:195' \
-  "Undefined and ambiguous references" "             " 2
-at_xfail=no
-(
-  $as_echo "36. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
-
-cat >test.y <<'_ATEOF'
+cat >input.y <<'_ATEOF'
 %code top {
 #include <config.h>
 /* We don't need perfect functions for these tests. */
@@ -8990,160 +8683,55 @@ cat >test.y <<'_ATEOF'
 #undef realloc
 }
 
-
-%{
-static int power (int base, int exponent);
-static void yyerror (const char *msg);
-static int yylex (void);
-%}
-
-%union
-{
-  int ival;
-};
-
-%token CALC_EOF 0 "end of input"
-%token <ival> NUM "number"
-%type  <ival> exp
-
-%nonassoc '='   /* comparison         */
-%left '-' '+'
-%left '*' '/'
-%left NEG /* negation--unary minus */
-%right '^'      /* exponentiation        */
-
-%%
-input:
-  line
-| input line         {  }
-;
-
-line:
-  '\n'
-| exp '\n'           {  }
-;
-
-exp:
-  NUM { $$ = $NUM; }
-| exp[l] '=' exp[r]
-  {
-    if ($l != $r)
-      fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
-  }
-| exp[x] '+' { $<ival>$ = $x; } [l] exp[r] { $$ = $<ival>lo9 + $r; }
-| exp[x] '-' { $<ival>$ = $x; } [l] exp[r] { $$ = $<ival>exp - $r; }
-| exp[x] '*' { $<ival>$ = $x; } [l] exp[r] { $$ = $l * $r; }
-| exp[l] '/' exp[r]  { $$ = $l / $r;        }
-| '-' exp  %prec NEG { $$ = -$2;            }
-| exp[l] '^' exp[r]        { $$ = power ($l, $r12); }
-| '(' exp ')'        { $$ = $expo;           }
-| '(' error ')'      { $$ = 1111; yyerrok;  }
-| '!'                { $$ = 0; YYERROR;     }
-| '-' error          { $$ = 0; YYERROR;     }
-;
+%token TOK
+%destructor     { $%; @%; } <*> exp TOK;
+%initial-action { $%; @%; };
+%printer        { $%; @%; } <*> exp TOK;
 %%
+exp: TOK        { $%; @%; $$ = $1; };
 _ATEOF
 
 
 
-
-{ set +x
-$as_echo "$at_srcdir/named-refs.at:253: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y" "named-refs.at:253"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o test.c test.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo >>"$at_stderr"; $as_echo "test.y:50.51-60: invalid reference: '\$<ival>lo9'
-test.y:50.3-68:      symbol not found in production: lo9
-test.y:51.51-60: warning: misleading reference: '\$<ival>exp'
-test.y:42.1-3:       warning: refers to: \$exp at \$\$
-test.y:51.7:         warning: possibly meant: \$x, hiding \$exp at \$1
-test.y:51.41:        warning: possibly meant: \$r, hiding \$exp at \$4
-test.y:52.51-52: \$l of 'exp' has no declared type
-test.y:55.46-49: invalid reference: '\$r12'
-test.y:55.3-53:      symbol not found in production: r12
-test.y:56.29-33: invalid reference: '\$expo'
-test.y:56.3-46:      symbol not found in production: expo
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:253"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-  set +x
-  $at_times_p && times >"$at_times_file"
-) 5>&1 2>&1 7>&- | eval $at_tee_pipe
-read at_status <"$at_status_file"
-#AT_STOP_36
-#AT_START_37
-at_fn_group_banner 37 'named-refs.at:271' \
-  "Misleading references" "                          " 2
-at_xfail=no
-(
-  $as_echo "37. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
-cat >test.y <<'_ATEOF'
-%code top {
-#include <config.h>
-/* We don't need perfect functions for these tests. */
-#undef malloc
-#undef memcmp
-#undef realloc
-}
-
-
-%%
-start: foo foo.bar { $foo.bar; }
-foo: '1'
-foo.bar: '2'
-_ATEOF
-
-
 if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   at_save_special_files
   mkdir xml-tests
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o test.c test.y"
-at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:279"
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1392"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o test.c test.y
+                  --graph=xml-tests/test.dot input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y" "named-refs.at:279"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input.y" "input.at:1392"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:279: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1392: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:279"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1392"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -9152,16 +8740,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:279: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1392: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:279"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1392"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -9170,7 +8758,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9178,19 +8766,24 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/named-refs.at:279: bison -o test.c test.y"
-at_fn_check_prepare_trace "named-refs.at:279"
-( $at_check_trace; bison -o test.c test.y
+$as_echo "$at_srcdir/input.at:1392: bison input.y"
+at_fn_check_prepare_trace "input.at:1392"
+( $at_check_trace; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "test.y:11.22-29: warning: misleading reference: '\$foo.bar'
-test.y:11.8-10:      warning: refers to: \$foo at \$1
-test.y:11.12-18:     warning: possibly meant: \$[foo.bar] at \$2
+echo >>"$at_stderr"; $as_echo "input.y:10.19: warning: stray '\$'
+input.y:10.23: warning: stray '@'
+input.y:11.19: warning: stray '\$'
+input.y:11.23: warning: stray '@'
+input.y:12.19: warning: stray '\$'
+input.y:12.23: warning: stray '@'
+input.y:14.19: warning: stray '\$'
+input.y:14.23: warning: stray '@'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9205,15 +8798,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y -Werror" "named-refs.at:279"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o test.c test.y -Werror
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y -Werror" "input.at:1392"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:279"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1392"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9221,9 +8814,1642 @@ $at_traceon; }
   # Build expected stderr up to and including the "warnings being
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
-test.y:11.22-29: warning: misleading reference: '$foo.bar'
-test.y:11.8-10:      warning: refers to: $foo at $1
-test.y:11.12-18:     warning: possibly meant: $[foo.bar] at $2
+input.y:10.19: warning: stray '$'
+input.y:10.23: warning: stray '@'
+input.y:11.19: warning: stray '$'
+input.y:11.23: warning: stray '@'
+input.y:12.19: warning: stray '$'
+input.y:12.23: warning: stray '@'
+input.y:14.19: warning: stray '$'
+input.y:14.23: warning: stray '@'
+_ATEOF
+
+  at_bison_check_first=`sed -n \
+    '/: warning: /{=;q;}' at-bison-check-warnings`
+  : ${at_bison_check_first:=1}
+  at_bison_check_first_tmp=`sed -n \
+    '/conflicts: [0-9].*reduce$/{=;q;}' at-bison-check-warnings`
+  : ${at_bison_check_first_tmp:=1}
+  if test $at_bison_check_first_tmp -lt $at_bison_check_first; then
+    at_bison_check_first=$at_bison_check_first_tmp
+  fi
+  if test $at_bison_check_first -gt 1; then
+    sed -n "1,`expr $at_bison_check_first - 1`"p \
+      at-bison-check-warnings > experr
+  fi
+  echo 'bison: warnings being treated as errors' >> experr
+
+  # Finish building expected stderr and check.  Unlike warnings,
+  # complaints cause bison to exit early.  Thus, with -Werror, bison
+  # does not necessarily report all warnings that it does without
+  # -Werror, but it at least reports one.
+  at_bison_check_last=`sed -n '$=' stderr`
+  : ${at_bison_check_last:=1}
+  at_bison_check_last=`expr $at_bison_check_last - 1`
+  sed -n "$at_bison_check_first,$at_bison_check_last"p \
+    at-bison-check-warnings >> experr
+  { set +x
+$as_echo "$at_srcdir/input.at:1392: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1392"
+( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
+              stderr 1>&2
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+$at_diff experr "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y --warnings=error" "input.at:1392"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y --warnings=error
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+$at_diff experr "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1392"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check -Wnone and --warnings=none by making sure that
+  # -Werror doesn't change the exit status when -Wnone or
+  # --warnings=none is specified.
+  { set +x
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y -Wnone -Werror" "input.at:1392"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y -Wnone -Werror
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y --warnings=none -Werror" "input.at:1392"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y --warnings=none -Werror
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1392"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  at_restore_special_files
+fi
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_35
+#AT_START_36
+at_fn_group_banner 36 'input.at:1412' \
+  "Code injection" "                                 " 1
+at_xfail=no
+(
+  $as_echo "36. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+# AT_TEST([MACRO])
+# ----------------
+# Try to have MACRO be run by bison.
+
+
+cat >input.y <<'_ATEOF'
+%type <m4_errprintn(DEAD %type)> exp
+%token <m4_errprintn(DEAD %token)> a
+%initial-action
+{
+  $$;
+  $<m4_errprintn(DEAD %initial-action)>$
+};
+%printer
+{
+  $$
+  $<m4_errprintn(DEAD %printer)>$
+} <> <*>;
+%lex-param
+{
+  m4_errprintn(DEAD %lex-param)
+};
+%parse-param
+{
+  m4_errprintn(DEAD %parse-param)
+};
+%%
+exp:
+  a a[last]
+  {
+    $$;
+    $1;
+    $<m4_errprintn(DEAD action 1)>$
+    $<m4_errprintn(DEAD action 2)>1
+    $<m4_errprintn(DEAD action 3)>last
+    $<m4_errprintn(DEAD action 4)>0
+    ;
+  };
+_ATEOF
+
+
+# FIXME: Provide a means to iterate over all the skeletons.
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d               input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y" "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1463: bison -d               input.y"
+at_fn_check_prepare_trace "input.at:1463"
+( $at_check_trace; bison -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S glr.c      input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y" "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1463: bison -d -S glr.c      input.y"
+at_fn_check_prepare_trace "input.at:1463"
+( $at_check_trace; bison -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S lalr1.cc   input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y" "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1463: bison -d -S lalr1.cc   input.y"
+at_fn_check_prepare_trace "input.at:1463"
+( $at_check_trace; bison -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S glr.cc     input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y" "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1463: bison -d -S glr.cc     input.y"
+at_fn_check_prepare_trace "input.at:1463"
+( $at_check_trace; bison -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot    -S lalr1.java input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y" "input.at:1463"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1463"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1463: bison    -S lalr1.java input.y"
+at_fn_check_prepare_trace "input.at:1463"
+( $at_check_trace; bison    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1463"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+cat >input.y <<'_ATEOF'
+%type <]m4_errprintn(DEAD %type)> exp
+%token <]m4_errprintn(DEAD %token)> a
+%initial-action
+{
+  $$;
+  $<]m4_errprintn(DEAD %initial-action)>$
+};
+%printer
+{
+  $$
+  $<]m4_errprintn(DEAD %printer)>$
+} <> <*>;
+%lex-param
+{
+  ]m4_errprintn(DEAD %lex-param)
+};
+%parse-param
+{
+  ]m4_errprintn(DEAD %parse-param)
+};
+%%
+exp:
+  a a[last]
+  {
+    $$;
+    $1;
+    $<]m4_errprintn(DEAD action 1)>$
+    $<]m4_errprintn(DEAD action 2)>1
+    $<]m4_errprintn(DEAD action 3)>last
+    $<]m4_errprintn(DEAD action 4)>0
+    ;
+  };
+_ATEOF
+
+
+# FIXME: Provide a means to iterate over all the skeletons.
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d               input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y" "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1464: bison -d               input.y"
+at_fn_check_prepare_trace "input.at:1464"
+( $at_check_trace; bison -d               input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S glr.c      input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y" "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1464: bison -d -S glr.c      input.y"
+at_fn_check_prepare_trace "input.at:1464"
+( $at_check_trace; bison -d -S glr.c      input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S lalr1.cc   input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y" "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1464: bison -d -S lalr1.cc   input.y"
+at_fn_check_prepare_trace "input.at:1464"
+( $at_check_trace; bison -d -S lalr1.cc   input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -d -S glr.cc     input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y" "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1464: bison -d -S glr.cc     input.y"
+at_fn_check_prepare_trace "input.at:1464"
+( $at_check_trace; bison -d -S glr.cc     input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot    -S lalr1.java input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y" "input.at:1464"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1464"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/input.at:1464: bison    -S lalr1.java input.y"
+at_fn_check_prepare_trace "input.at:1464"
+( $at_check_trace; bison    -S lalr1.java input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1464"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_36
+#AT_START_37
+at_fn_group_banner 37 'named-refs.at:21' \
+  "Tutorial calculator" "                            " 2
+at_xfail=no
+(
+  $as_echo "37. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >test.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+
+%{
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+typedef int semantic_value;
+FILE *input;
+static semantic_value global_result = 0;
+static int global_count = 0;
+static int power (int base, int exponent);
+static void yyerror (const char *msg);
+static int yylex (void);
+%}
+
+%union
+{
+  semantic_value ival;
+};
+
+%token CALC_EOF 0 "end of input"
+%token <ival> NUM "number"
+%type  <ival> exp
+
+%nonassoc '='   /* comparison         */
+%left '-' '+'
+%left '*' '/'
+%left NEG /* negation--unary minus */
+%right '^'      /* exponentiation        */
+
+%%
+input:
+  line
+| input line         {  }
+;
+
+line:
+  '\n'
+| exp '\n'           {  }
+;
+
+exp:
+  NUM                { $$ = $NUM; }
+| exp[l] '=' exp[r]
+  {
+    if ($l != $r)
+      fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
+   $$ = $l;
+  }
+| exp[x] '+' { $<ival>$ = $x; } [l] exp[r]  { $$ = $<ival>l + $r;    }
+| exp[l] '-' exp[r]        { $$ = $l - $r;        }
+| exp[l] '*' exp[r]        { $$ = $l * $r;        }
+| exp[l] '/' exp[r]  { $$ = $l / $r;        }
+| '-' exp  %prec NEG { $$ = -$2;            }
+| exp[l] '^' exp[r]        { $$ = power ($l, $r); }
+| '(' exp[e] ')'        { $$ = $e;           }
+| '(' error ')'      { $$ = 1111; yyerrok;  }
+| '!'                { $$ = 0; YYERROR;     }
+| '-' error          { $$ = 0; YYERROR;     }
+;
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (const char *msg)
+{
+
+  fprintf (stderr, "%s\n", msg);
+}
+static int get_char (void)
+{
+  int res = getc (input);
+  return res;
+}
+
+static void unget_char (int c)
+{
+  ungetc (c, input);
+}
+
+static int read_signed_integer (void)
+{
+  int c = get_char ();
+  int sign = 1;
+  int n = 0;
+  if (c == '-')
+    {
+      c = get_char ();
+      sign = -1;
+    }
+  while (isdigit (c))
+    {
+      n = 10 * n + (c - '0');
+      c = get_char ();
+    }
+  unget_char ( c);
+  return sign * n;
+}
+
+static int
+yylex (void)
+{
+  int c;
+  /* Skip white space.  */
+  while ((c = get_char ()) == ' ' || c == '\t') {}
+
+  /* process numbers   */
+  if (c == '.' || isdigit (c))
+    {
+      unget_char ( c);
+      (yylval).ival = read_signed_integer ();
+      return NUM;
+    }
+
+  /* Return end-of-file.  */
+  if (c == EOF)
+    return CALC_EOF;
+
+  /* Return single chars. */
+  return c;
+}
+
+static int power (int base, int exponent)
+{
+  int res = 1;
+  assert (0 <= exponent);
+  for (/* Niente */; exponent; --exponent)
+    res *= base;
+  return res;
+}
+
+int main (int argc, const char **argv)
+{
+  semantic_value result = 0;
+  int count = 0;
+  int status;
+  if (argc == 2)
+    input = fopen (argv[1], "r");
+  else
+    input = stdin;
+  if (!input)
+    {
+      perror (argv[1]);
+      return 3;
+    }
+  status = yyparse ();
+  fclose (input);
+  assert (global_result == result);
+  assert (global_count == count);
+  return status;
+}
+_ATEOF
+
+
+
+cat >input.txt <<'_ATEOF'
+
+1 + 2 * 3 = 7
+1 + 2 * -3 = -5
+-1^2 = -1
+(-1)^2 = 1
+---1 = -1
+1 - 2 - 3 = -4
+1 - (2 - 3) = 2
+2^2^3 = 256
+(2^2)^3 = 64
+_ATEOF
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:184: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o test.c test.y"
+at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:184"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:184: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y" "named-refs.at:184"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:184: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:184"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:184: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:184"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:184: bison -o test.c test.y"
+at_fn_check_prepare_trace "named-refs.at:184"
+( $at_check_trace; bison -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:184"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:185: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o test test.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o test test.c $LIBS" "named-refs.at:185"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o test test.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:185"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:186:  \$PREPARSER ./test input.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./test input.txt" "named-refs.at:186"
+( $at_check_trace;  $PREPARSER ./test input.txt
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:186"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:186: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "named-refs.at:186"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:186"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_37
+#AT_START_38
+at_fn_group_banner 38 'named-refs.at:195' \
+  "Undefined and ambiguous references" "             " 2
+at_xfail=no
+(
+  $as_echo "38. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >test.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+
+%{
+static int power (int base, int exponent);
+static void yyerror (const char *msg);
+static int yylex (void);
+%}
+
+%union
+{
+  int ival;
+};
+
+%token CALC_EOF 0 "end of input"
+%token <ival> NUM "number"
+%type  <ival> exp
+
+%nonassoc '='   /* comparison         */
+%left '-' '+'
+%left '*' '/'
+%left NEG /* negation--unary minus */
+%right '^'      /* exponentiation        */
+
+%%
+input:
+  line
+| input line         {  }
+;
+
+line:
+  '\n'
+| exp '\n'           {  }
+;
+
+exp:
+  NUM { $$ = $NUM; }
+| exp[l] '=' exp[r]
+  {
+    if ($l != $r)
+      fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
+   $$ = $l;
+  }
+| exp[x] '+' { $<ival>$ = $x; } [l] exp[r] { $$ = $<ival>lo9 + $r; }
+| exp[x] '-' { $<ival>$ = $x; } [l] exp[r] { $$ = $<ival>exp - $r; }
+| exp[x] '*' { $<ival>$ = $x; } [l] exp[r] { $$ = $l * $r; }
+| exp[l] '/' exp[r]  { $$ = $l / $r;        }
+| '-' exp  %prec NEG { $$ = -$2;            }
+| exp[l] '^' exp[r]        { $$ = power ($l, $r12); }
+| '(' exp ')'        { $$ = $expo;           }
+| '(' error ')'      { $$ = 1111; yyerrok;  }
+| '!'                { $$ = 0; YYERROR;     }
+| '-' error          { $$ = 0; YYERROR;     }
+;
+%%
+_ATEOF
+
+
+
+
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:253: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y" "named-refs.at:253"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "test.y:50.51-60: invalid reference: '\$<ival>lo9'
+test.y:50.3-68:      symbol not found in production: lo9
+test.y:51.51-60: warning: misleading reference: '\$<ival>exp'
+test.y:42.1-3:       warning: refers to: \$exp at \$\$
+test.y:51.7:         warning: possibly meant: \$x, hiding \$exp at \$1
+test.y:51.41:        warning: possibly meant: \$r, hiding \$exp at \$4
+test.y:52.51-52: \$l of 'exp' has no declared type
+test.y:55.46-49: invalid reference: '\$r12'
+test.y:55.3-53:      symbol not found in production: r12
+test.y:56.29-33: invalid reference: '\$expo'
+test.y:56.3-46:      symbol not found in production: expo
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:253"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_38
+#AT_START_39
+at_fn_group_banner 39 'named-refs.at:271' \
+  "Misleading references" "                          " 2
+at_xfail=no
+(
+  $as_echo "39. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+cat >test.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+
+%%
+start: foo foo.bar { $foo.bar; }
+foo: '1'
+foo.bar: '2'
+_ATEOF
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o test.c test.y"
+at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:279"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y" "named-refs.at:279"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:279: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:279"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:279: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:279"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:279: bison -o test.c test.y"
+at_fn_check_prepare_trace "named-refs.at:279"
+( $at_check_trace; bison -o test.c test.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "test.y:11.22-29: warning: misleading reference: '\$foo.bar'
+test.y:11.8-10:      warning: refers to: \$foo at \$1
+test.y:11.12-18:     warning: possibly meant: \$[foo.bar] at \$2
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# Defining POSIXLY_CORRECT causes bison to complain if options
+# are added after the grammar file name, so skip these checks
+# in that case.
+if test -z "${POSIXLY_CORRECT+set}"; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/named-refs.at:279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o test.c test.y -Werror" "named-refs.at:279"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o test.c test.y -Werror
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:279"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Build expected stderr up to and including the "warnings being
+  # treated as errors" message.
+  cat >at-bison-check-warnings <<'_ATEOF'
+test.y:11.22-29: warning: misleading reference: '$foo.bar'
+test.y:11.8-10:      warning: refers to: $foo at $1
+test.y:11.12-18:     warning: possibly meant: $[foo.bar] at $2
 _ATEOF
 
   at_bison_check_first=`sed -n \
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_37
-#AT_START_38
-at_fn_group_banner 38 'named-refs.at:288' \
+#AT_STOP_39
+#AT_START_40
+at_fn_group_banner 40 'named-refs.at:288' \
   "Many kinds of errors" "                           " 2
 at_xfail=no
 (
-  $as_echo "38. $at_setup_line: testing $at_desc ..."
+  $as_echo "40. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9462,13 +10688,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_38
-#AT_START_39
-at_fn_group_banner 39 'named-refs.at:400' \
+#AT_STOP_40
+#AT_START_41
+at_fn_group_banner 41 'named-refs.at:400' \
   "Missing identifiers in brackets" "                " 2
 at_xfail=no
 (
-  $as_echo "39. $at_setup_line: testing $at_desc ..."
+  $as_echo "41. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9508,13 +10734,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_39
-#AT_START_40
-at_fn_group_banner 40 'named-refs.at:414' \
+#AT_STOP_41
+#AT_START_42
+at_fn_group_banner 42 'named-refs.at:414' \
   "Redundant words in brackets" "                    " 2
 at_xfail=no
 (
-  $as_echo "40. $at_setup_line: testing $at_desc ..."
+  $as_echo "42. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9554,13 +10780,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_40
-#AT_START_41
-at_fn_group_banner 41 'named-refs.at:428' \
+#AT_STOP_42
+#AT_START_43
+at_fn_group_banner 43 'named-refs.at:428' \
   "Comments in brackets" "                           " 2
 at_xfail=no
 (
-  $as_echo "41. $at_setup_line: testing $at_desc ..."
+  $as_echo "43. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9600,13 +10826,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_41
-#AT_START_42
-at_fn_group_banner 42 'named-refs.at:442' \
+#AT_STOP_43
+#AT_START_44
+at_fn_group_banner 44 'named-refs.at:442' \
   "Stray symbols in brackets" "                      " 2
 at_xfail=no
 (
-  $as_echo "42. $at_setup_line: testing $at_desc ..."
+  $as_echo "44. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9649,13 +10875,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_42
-#AT_START_43
-at_fn_group_banner 43 'named-refs.at:459' \
+#AT_STOP_44
+#AT_START_45
+at_fn_group_banner 45 'named-refs.at:459' \
   "Redundant words in LHS brackets" "                " 2
 at_xfail=no
 (
-  $as_echo "43. $at_setup_line: testing $at_desc ..."
+  $as_echo "45. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9694,13 +10920,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_43
-#AT_START_44
-at_fn_group_banner 44 'named-refs.at:474' \
+#AT_STOP_45
+#AT_START_46
+at_fn_group_banner 46 'named-refs.at:474' \
   "Factored LHS" "                                   " 2
 at_xfail=no
 (
-  $as_echo "44. $at_setup_line: testing $at_desc ..."
+  $as_echo "46. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9808,13 +11034,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_44
-#AT_START_45
-at_fn_group_banner 45 'named-refs.at:485' \
+#AT_STOP_46
+#AT_START_47
+at_fn_group_banner 47 'named-refs.at:485' \
   "Unresolved references" "                          " 2
 at_xfail=no
 (
-  $as_echo "45. $at_setup_line: testing $at_desc ..."
+  $as_echo "47. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -9905,13 +11131,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_45
-#AT_START_46
-at_fn_group_banner 46 'named-refs.at:550' \
+#AT_STOP_47
+#AT_START_48
+at_fn_group_banner 48 'named-refs.at:550' \
   "\$ or @ followed by . or -" "                      " 2
 at_xfail=no
 (
-  $as_echo "46. $at_setup_line: testing $at_desc ..."
+  $as_echo "48. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_46
-#AT_START_47
-at_fn_group_banner 47 'output.at:44' \
+#AT_STOP_48
+#AT_START_49
+at_fn_group_banner 49 'output.at:44' \
   "Output files:  -dv " "                            " 3
 at_xfail=no
 (
-  $as_echo "47. $at_setup_line: testing $at_desc ..."
+  $as_echo "49. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10291,13 +11517,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_47
-#AT_START_48
-at_fn_group_banner 48 'output.at:50' \
+#AT_STOP_49
+#AT_START_50
+at_fn_group_banner 50 'output.at:50' \
   "Output files:  -dv >&-" "                         " 3
 at_xfail=no
 (
-  $as_echo "48. $at_setup_line: testing $at_desc ..."
+  $as_echo "50. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 { set +x
@@ -10429,13 +11655,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_48
-#AT_START_49
-at_fn_group_banner 49 'output.at:55' \
+#AT_STOP_50
+#AT_START_51
+at_fn_group_banner 51 'output.at:55' \
   "Output files:  -dv -o foo.c " "                   " 3
 at_xfail=no
 (
-  $as_echo "49. $at_setup_line: testing $at_desc ..."
+  $as_echo "51. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10555,13 +11781,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_49
-#AT_START_50
-at_fn_group_banner 50 'output.at:57' \
+#AT_STOP_51
+#AT_START_52
+at_fn_group_banner 52 'output.at:57' \
   "Output files:  -dv -o foo.tab.c " "               " 3
 at_xfail=no
 (
-  $as_echo "50. $at_setup_line: testing $at_desc ..."
+  $as_echo "52. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10681,13 +11907,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_50
-#AT_START_51
-at_fn_group_banner 51 'output.at:59' \
+#AT_STOP_52
+#AT_START_53
+at_fn_group_banner 53 'output.at:59' \
   "Output files:  -dv -y " "                         " 3
 at_xfail=no
 (
-  $as_echo "51. $at_setup_line: testing $at_desc ..."
+  $as_echo "53. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10807,13 +12033,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_51
-#AT_START_52
-at_fn_group_banner 52 'output.at:61' \
+#AT_STOP_53
+#AT_START_54
+at_fn_group_banner 54 'output.at:61' \
   "Output files:  -dv -b bar " "                     " 3
 at_xfail=no
 (
-  $as_echo "52. $at_setup_line: testing $at_desc ..."
+  $as_echo "54. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10933,13 +12159,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_52
-#AT_START_53
-at_fn_group_banner 53 'output.at:63' \
+#AT_STOP_54
+#AT_START_55
+at_fn_group_banner 55 'output.at:63' \
   "Output files:  -dv -g -o foo.c " "                " 3
 at_xfail=no
 (
-  $as_echo "53. $at_setup_line: testing $at_desc ..."
+  $as_echo "55. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11059,13 +12285,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_53
-#AT_START_54
-at_fn_group_banner 54 'output.at:67' \
+#AT_STOP_55
+#AT_START_56
+at_fn_group_banner 56 'output.at:67' \
   "Output files: %defines %verbose  " "              " 3
 at_xfail=no
 (
-  $as_echo "54. $at_setup_line: testing $at_desc ..."
+  $as_echo "56. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11185,13 +12411,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_54
-#AT_START_55
-at_fn_group_banner 55 'output.at:69' \
+#AT_STOP_56
+#AT_START_57
+at_fn_group_banner 57 'output.at:69' \
   "Output files: %defines %verbose %yacc  " "        " 3
 at_xfail=no
 (
-  $as_echo "55. $at_setup_line: testing $at_desc ..."
+  $as_echo "57. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11311,13 +12537,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_55
-#AT_START_56
-at_fn_group_banner 56 'output.at:72' \
+#AT_STOP_57
+#AT_START_58
+at_fn_group_banner 58 'output.at:72' \
   "Output files: %defines %verbose %yacc  " "        " 3
 at_xfail=no
 (
-  $as_echo "56. $at_setup_line: testing $at_desc ..."
+  $as_echo "58. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11437,13 +12663,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_56
-#AT_START_57
-at_fn_group_banner 57 'output.at:76' \
+#AT_STOP_58
+#AT_START_59
+at_fn_group_banner 59 'output.at:76' \
   "Output files: %file-prefix \"bar\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "57. $at_setup_line: testing $at_desc ..."
+  $as_echo "59. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11563,13 +12789,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_57
-#AT_START_58
-at_fn_group_banner 58 'output.at:78' \
+#AT_STOP_59
+#AT_START_60
+at_fn_group_banner 60 'output.at:78' \
   "Output files: %output=\"bar.c\" %defines %verbose %yacc  " "" 3
 at_xfail=no
 (
-  $as_echo "58. $at_setup_line: testing $at_desc ..."
+  $as_echo "60. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11689,13 +12915,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_58
-#AT_START_59
-at_fn_group_banner 59 'output.at:80' \
+#AT_STOP_60
+#AT_START_61
+at_fn_group_banner 61 'output.at:80' \
   "Output files: %file-prefix=\"baz\" %output \"bar.c\" %defines %verbose %yacc  " "" 3
 at_xfail=no
 (
-  $as_echo "59. $at_setup_line: testing $at_desc ..."
+  $as_echo "61. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11815,13 +13041,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_59
-#AT_START_60
-at_fn_group_banner 60 'output.at:87' \
+#AT_STOP_61
+#AT_START_62
+at_fn_group_banner 62 'output.at:87' \
   "Output files: %defines %verbose  " "              " 3
 at_xfail=no
 (
-  $as_echo "60. $at_setup_line: testing $at_desc ..."
+  $as_echo "62. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11941,13 +13167,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_60
-#AT_START_61
-at_fn_group_banner 61 'output.at:90' \
+#AT_STOP_62
+#AT_START_63
+at_fn_group_banner 63 'output.at:90' \
   "Output files: %defines %verbose  -o foo.c " "     " 3
 at_xfail=no
 (
-  $as_echo "61. $at_setup_line: testing $at_desc ..."
+  $as_echo "63. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12067,13 +13293,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_61
-#AT_START_62
-at_fn_group_banner 62 'output.at:93' \
+#AT_STOP_63
+#AT_START_64
+at_fn_group_banner 64 'output.at:93' \
   "Output files:  --defines=foo.hpp -o foo.c++ " "   " 3
 at_xfail=no
 (
-  $as_echo "62. $at_setup_line: testing $at_desc ..."
+  $as_echo "64. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12193,13 +13419,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_62
-#AT_START_63
-at_fn_group_banner 63 'output.at:97' \
+#AT_STOP_64
+#AT_START_65
+at_fn_group_banner 65 'output.at:97' \
   "Output files: %defines \"foo.hpp\" -o foo.c++ " "   " 3
 at_xfail=no
 (
-  $as_echo "63. $at_setup_line: testing $at_desc ..."
+  $as_echo "65. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12319,13 +13545,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_63
-#AT_START_64
-at_fn_group_banner 64 'output.at:101' \
+#AT_STOP_65
+#AT_START_66
+at_fn_group_banner 66 'output.at:101' \
   "Output files:  -o foo.c++ --graph=foo.gph " "     " 3
 at_xfail=no
 (
-  $as_echo "64. $at_setup_line: testing $at_desc ..."
+  $as_echo "66. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12445,13 +13671,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_64
-#AT_START_65
-at_fn_group_banner 65 'output.at:116' \
+#AT_STOP_66
+#AT_START_67
+at_fn_group_banner 67 'output.at:116' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "65. $at_setup_line: testing $at_desc ..."
+  $as_echo "67. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12571,13 +13797,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_65
-#AT_START_66
-at_fn_group_banner 66 'output.at:119' \
+#AT_STOP_67
+#AT_START_68
+at_fn_group_banner 68 'output.at:119' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "66. $at_setup_line: testing $at_desc ..."
+  $as_echo "68. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12724,13 +13950,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_66
-#AT_START_67
-at_fn_group_banner 67 'output.at:123' \
+#AT_STOP_68
+#AT_START_69
+at_fn_group_banner 69 'output.at:123' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose -o subdir/foo.cc " "" 3
 at_xfail=no
 (
-  $as_echo "67. $at_setup_line: testing $at_desc ..."
+  $as_echo "69. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12877,13 +14103,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_67
-#AT_START_68
-at_fn_group_banner 68 'output.at:128' \
+#AT_STOP_69
+#AT_START_70
+at_fn_group_banner 70 'output.at:128' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose %file-prefix \"output_dir/foo\"  " "" 3
 at_xfail=no
 (
-  $as_echo "68. $at_setup_line: testing $at_desc ..."
+  $as_echo "70. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13003,13 +14229,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_68
-#AT_START_69
-at_fn_group_banner 69 'output.at:158' \
+#AT_STOP_70
+#AT_START_71
+at_fn_group_banner 71 'output.at:158' \
   "Conflicting output files:  --graph=\"foo.tab.c\"" " " 3
 at_xfail=no
 (
-  $as_echo "69. $at_setup_line: testing $at_desc ..."
+  $as_echo "71. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -13177,13 +14403,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_69
-#AT_START_70
-at_fn_group_banner 70 'output.at:163' \
+#AT_STOP_71
+#AT_START_72
+at_fn_group_banner 72 'output.at:163' \
   "Conflicting output files: %defines \"foo.output\" -v" "" 3
 at_xfail=no
 (
-  $as_echo "70. $at_setup_line: testing $at_desc ..."
+  $as_echo "72. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -13351,13 +14577,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_70
-#AT_START_71
-at_fn_group_banner 71 'output.at:168' \
+#AT_STOP_72
+#AT_START_73
+at_fn_group_banner 73 'output.at:168' \
   "Conflicting output files: %skeleton \"lalr1.cc\" %defines --graph=\"location.hh\"" "" 3
 at_xfail=no
 (
-  $as_echo "71. $at_setup_line: testing $at_desc ..."
+  $as_echo "73. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -13525,13 +14751,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_71
-#AT_START_72
-at_fn_group_banner 72 'output.at:173' \
+#AT_STOP_73
+#AT_START_74
+at_fn_group_banner 74 'output.at:173' \
   "Conflicting output files:  -o foo.y" "            " 3
 at_xfail=no
 (
-  $as_echo "72. $at_setup_line: testing $at_desc ..."
+  $as_echo "74. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -13582,13 +14808,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_72
-#AT_START_73
-at_fn_group_banner 73 'output.at:219' \
+#AT_STOP_74
+#AT_START_75
+at_fn_group_banner 75 'output.at:219' \
   "Output file name: \`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'" "" 3
 at_xfail=no
 (
-  $as_echo "73. $at_setup_line: testing $at_desc ..."
+  $as_echo "75. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13891,13 +15117,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_73
-#AT_START_74
-at_fn_group_banner 74 'output.at:226' \
+#AT_STOP_75
+#AT_START_76
+at_fn_group_banner 76 'output.at:226' \
   "Output file name: (" "                            " 3
 at_xfail=no
 (
-  $as_echo "74. $at_setup_line: testing $at_desc ..."
+  $as_echo "76. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -14200,13 +15426,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_74
-#AT_START_75
-at_fn_group_banner 75 'output.at:227' \
+#AT_STOP_76
+#AT_START_77
+at_fn_group_banner 77 'output.at:227' \
   "Output file name: )" "                            " 3
 at_xfail=no
 (
-  $as_echo "75. $at_setup_line: testing $at_desc ..."
+  $as_echo "77. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -14509,13 +15735,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_75
-#AT_START_76
-at_fn_group_banner 76 'output.at:228' \
+#AT_STOP_77
+#AT_START_78
+at_fn_group_banner 78 'output.at:228' \
   "Output file name: #" "                            " 3
 at_xfail=no
 (
-  $as_echo "76. $at_setup_line: testing $at_desc ..."
+  $as_echo "78. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -14818,13 +16044,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_76
-#AT_START_77
-at_fn_group_banner 77 'output.at:229' \
+#AT_STOP_78
+#AT_START_79
+at_fn_group_banner 79 'output.at:229' \
   "Output file name: @@" "                           " 3
 at_xfail=no
 (
-  $as_echo "77. $at_setup_line: testing $at_desc ..."
+  $as_echo "79. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -15127,13 +16353,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_77
-#AT_START_78
-at_fn_group_banner 78 'output.at:230' \
+#AT_STOP_79
+#AT_START_80
+at_fn_group_banner 80 'output.at:230' \
   "Output file name: @{" "                           " 3
 at_xfail=no
 (
-  $as_echo "78. $at_setup_line: testing $at_desc ..."
+  $as_echo "80. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -15436,13 +16662,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_78
-#AT_START_79
-at_fn_group_banner 79 'output.at:231' \
+#AT_STOP_80
+#AT_START_81
+at_fn_group_banner 81 'output.at:231' \
   "Output file name: @}" "                           " 3
 at_xfail=no
 (
-  $as_echo "79. $at_setup_line: testing $at_desc ..."
+  $as_echo "81. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -15745,13 +16971,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_79
-#AT_START_80
-at_fn_group_banner 80 'output.at:232' \
+#AT_STOP_81
+#AT_START_82
+at_fn_group_banner 82 'output.at:232' \
   "Output file name: [" "                            " 3
 at_xfail=no
 (
-  $as_echo "80. $at_setup_line: testing $at_desc ..."
+  $as_echo "82. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -16054,13 +17280,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_80
-#AT_START_81
-at_fn_group_banner 81 'output.at:233' \
+#AT_STOP_82
+#AT_START_83
+at_fn_group_banner 83 'output.at:233' \
   "Output file name: ]" "                            " 3
 at_xfail=no
 (
-  $as_echo "81. $at_setup_line: testing $at_desc ..."
+  $as_echo "83. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -16363,13 +17589,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_81
-#AT_START_82
-at_fn_group_banner 82 'skeletons.at:24' \
+#AT_STOP_83
+#AT_START_84
+at_fn_group_banner 84 'skeletons.at:24' \
   "Relative skeleton file names" "                   " 4
 at_xfail=no
 (
-  $as_echo "82. $at_setup_line: testing $at_desc ..."
+  $as_echo "84. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -16736,13 +17962,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_82
-#AT_START_83
-at_fn_group_banner 83 'skeletons.at:84' \
+#AT_STOP_84
+#AT_START_85
+at_fn_group_banner 85 'skeletons.at:84' \
   "Installed skeleton file names" "                  " 4
 at_xfail=no
 (
-  $as_echo "83. $at_setup_line: testing $at_desc ..."
+  $as_echo "85. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17091,13 +18317,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_83
-#AT_START_84
-at_fn_group_banner 84 'skeletons.at:146' \
+#AT_STOP_85
+#AT_START_86
+at_fn_group_banner 86 'skeletons.at:146' \
   "%define Boolean variables: invalid skeleton defaults" "" 4
 at_xfail=no
 (
-  $as_echo "84. $at_setup_line: testing $at_desc ..."
+  $as_echo "86. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17136,13 +18362,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_84
-#AT_START_85
-at_fn_group_banner 85 'skeletons.at:170' \
+#AT_STOP_86
+#AT_START_87
+at_fn_group_banner 87 'skeletons.at:170' \
   "Complaining during macro argument expansion" "    " 4
 at_xfail=no
 (
-  $as_echo "85. $at_setup_line: testing $at_desc ..."
+  $as_echo "87. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17287,13 +18513,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_85
-#AT_START_86
-at_fn_group_banner 86 'skeletons.at:252' \
+#AT_STOP_87
+#AT_START_88
+at_fn_group_banner 88 'skeletons.at:252' \
   "Fatal errors make M4 exit immediately" "          " 4
 at_xfail=no
 (
-  $as_echo "86. $at_setup_line: testing $at_desc ..."
+  $as_echo "88. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17367,13 +18593,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_86
-#AT_START_87
-at_fn_group_banner 87 'skeletons.at:306' \
+#AT_STOP_88
+#AT_START_89
+at_fn_group_banner 89 'skeletons.at:306' \
   "Fatal errors but M4 continues producing output" " " 4
 at_xfail=no
 (
-  $as_echo "87. $at_setup_line: testing $at_desc ..."
+  $as_echo "89. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17431,13 +18657,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_87
-#AT_START_88
-at_fn_group_banner 88 'sets.at:66' \
+#AT_STOP_89
+#AT_START_90
+at_fn_group_banner 90 'sets.at:66' \
   "Nullable" "                                       " 5
 at_xfail=no
 (
-  $as_echo "88. $at_setup_line: testing $at_desc ..."
+  $as_echo "90. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17638,13 +18864,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_88
-#AT_START_89
-at_fn_group_banner 89 'sets.at:151' \
+#AT_STOP_90
+#AT_START_91
+at_fn_group_banner 91 'sets.at:151' \
   "Broken Closure" "                                 " 5
 at_xfail=no
 (
-  $as_echo "89. $at_setup_line: testing $at_desc ..."
+  $as_echo "91. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17782,13 +19008,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_89
-#AT_START_90
-at_fn_group_banner 90 'sets.at:193' \
+#AT_STOP_91
+#AT_START_92
+at_fn_group_banner 92 'sets.at:193' \
   "Firsts" "                                         " 5
 at_xfail=no
 (
-  $as_echo "90. $at_setup_line: testing $at_desc ..."
+  $as_echo "92. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18007,13 +19233,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_90
-#AT_START_91
-at_fn_group_banner 91 'sets.at:269' \
+#AT_STOP_92
+#AT_START_93
+at_fn_group_banner 93 'sets.at:269' \
   "Accept" "                                         " 5
 at_xfail=no
 (
-  $as_echo "91. $at_setup_line: testing $at_desc ..."
+  $as_echo "93. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18170,13 +19396,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_91
-#AT_START_92
-at_fn_group_banner 92 'reduce.at:25' \
+#AT_STOP_93
+#AT_START_94
+at_fn_group_banner 94 'reduce.at:25' \
   "Useless Terminals" "                              " 6
 at_xfail=no
 (
-  $as_echo "92. $at_setup_line: testing $at_desc ..."
+  $as_echo "94. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18316,13 +19542,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_92
-#AT_START_93
-at_fn_group_banner 93 'reduce.at:69' \
+#AT_STOP_94
+#AT_START_95
+at_fn_group_banner 95 'reduce.at:69' \
   "Useless Nonterminals" "                           " 6
 at_xfail=no
 (
-  $as_echo "93. $at_setup_line: testing $at_desc ..."
+  $as_echo "95. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18599,13 +19825,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_93
-#AT_START_94
-at_fn_group_banner 94 'reduce.at:124' \
+#AT_STOP_95
+#AT_START_96
+at_fn_group_banner 96 'reduce.at:124' \
   "Useless Rules" "                                  " 6
 at_xfail=no
 (
-  $as_echo "94. $at_setup_line: testing $at_desc ..."
+  $as_echo "96. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18922,13 +20148,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_94
-#AT_START_95
-at_fn_group_banner 95 'reduce.at:212' \
+#AT_STOP_96
+#AT_START_97
+at_fn_group_banner 97 'reduce.at:212' \
   "Reduced Automaton" "                              " 6
 at_xfail=no
 (
-  $as_echo "95. $at_setup_line: testing $at_desc ..."
+  $as_echo "97. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19335,13 +20561,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_95
-#AT_START_96
-at_fn_group_banner 96 'reduce.at:302' \
+#AT_STOP_97
+#AT_START_98
+at_fn_group_banner 98 'reduce.at:302' \
   "Underivable Rules" "                              " 6
 at_xfail=no
 (
-  $as_echo "96. $at_setup_line: testing $at_desc ..."
+  $as_echo "98. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19602,13 +20828,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_96
-#AT_START_97
-at_fn_group_banner 97 'reduce.at:344' \
+#AT_STOP_98
+#AT_START_99
+at_fn_group_banner 99 'reduce.at:344' \
   "Empty Language" "                                 " 6
 at_xfail=no
 (
-  $as_echo "97. $at_setup_line: testing $at_desc ..."
+  $as_echo "99. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19643,13 +20869,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_97
-#AT_START_98
-at_fn_group_banner 98 'reduce.at:395' \
+#AT_STOP_99
+#AT_START_100
+at_fn_group_banner 100 'reduce.at:395' \
   "no %define lr.type: Single State Split" "         " 6
 at_xfail=no
 (
-  $as_echo "98. $at_setup_line: testing $at_desc ..."
+  $as_echo "100. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20042,13 +21268,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_98
-#AT_START_99
-at_fn_group_banner 99 'reduce.at:395' \
+#AT_STOP_100
+#AT_START_101
+at_fn_group_banner 101 'reduce.at:395' \
   "%define lr.type lalr: Single State Split" "       " 6
 at_xfail=no
 (
-  $as_echo "99. $at_setup_line: testing $at_desc ..."
+  $as_echo "101. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20442,13 +21668,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_99
-#AT_START_100
-at_fn_group_banner 100 'reduce.at:395' \
+#AT_STOP_101
+#AT_START_102
+at_fn_group_banner 102 'reduce.at:395' \
   "%define lr.type ielr: Single State Split" "       " 6
 at_xfail=no
 (
-  $as_echo "100. $at_setup_line: testing $at_desc ..."
+  $as_echo "102. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20850,13 +22076,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_100
-#AT_START_101
-at_fn_group_banner 101 'reduce.at:395' \
+#AT_STOP_102
+#AT_START_103
+at_fn_group_banner 103 'reduce.at:395' \
   "%define lr.type canonical-lr: Single State Split" "" 6
 at_xfail=no
 (
-  $as_echo "101. $at_setup_line: testing $at_desc ..."
+  $as_echo "103. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -21275,13 +22501,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_101
-#AT_START_102
-at_fn_group_banner 102 'reduce.at:628' \
+#AT_STOP_103
+#AT_START_104
+at_fn_group_banner 104 'reduce.at:628' \
   "no %define lr.type: Lane Split" "                 " 6
 at_xfail=no
 (
-  $as_echo "102. $at_setup_line: testing $at_desc ..."
+  $as_echo "104. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -21674,13 +22900,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_102
-#AT_START_103
-at_fn_group_banner 103 'reduce.at:628' \
+#AT_STOP_104
+#AT_START_105
+at_fn_group_banner 105 'reduce.at:628' \
   "%define lr.type lalr: Lane Split" "               " 6
 at_xfail=no
 (
-  $as_echo "103. $at_setup_line: testing $at_desc ..."
+  $as_echo "105. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22074,13 +23300,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_103
-#AT_START_104
-at_fn_group_banner 104 'reduce.at:628' \
+#AT_STOP_105
+#AT_START_106
+at_fn_group_banner 106 'reduce.at:628' \
   "%define lr.type ielr: Lane Split" "               " 6
 at_xfail=no
 (
-  $as_echo "104. $at_setup_line: testing $at_desc ..."
+  $as_echo "106. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22490,13 +23716,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_104
-#AT_START_105
-at_fn_group_banner 105 'reduce.at:628' \
+#AT_STOP_106
+#AT_START_107
+at_fn_group_banner 107 'reduce.at:628' \
   "%define lr.type canonical-lr: Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "105. $at_setup_line: testing $at_desc ..."
+  $as_echo "107. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22923,13 +24149,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_105
-#AT_START_106
-at_fn_group_banner 106 'reduce.at:872' \
+#AT_STOP_107
+#AT_START_108
+at_fn_group_banner 108 'reduce.at:872' \
   "no %define lr.type: Complex Lane Split" "         " 6
 at_xfail=no
 (
-  $as_echo "106. $at_setup_line: testing $at_desc ..."
+  $as_echo "108. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -23333,13 +24559,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_106
-#AT_START_107
-at_fn_group_banner 107 'reduce.at:872' \
+#AT_STOP_108
+#AT_START_109
+at_fn_group_banner 109 'reduce.at:872' \
   "%define lr.type lalr: Complex Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "107. $at_setup_line: testing $at_desc ..."
+  $as_echo "109. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -23744,13 +24970,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_107
-#AT_START_108
-at_fn_group_banner 108 'reduce.at:872' \
+#AT_STOP_109
+#AT_START_110
+at_fn_group_banner 110 'reduce.at:872' \
   "%define lr.type ielr: Complex Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "108. $at_setup_line: testing $at_desc ..."
+  $as_echo "110. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -24173,13 +25399,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_108
-#AT_START_109
-at_fn_group_banner 109 'reduce.at:872' \
+#AT_STOP_110
+#AT_START_111
+at_fn_group_banner 111 'reduce.at:872' \
   "%define lr.type canonical-lr: Complex Lane Split" "" 6
 at_xfail=no
 (
-  $as_echo "109. $at_setup_line: testing $at_desc ..."
+  $as_echo "111. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -24633,13 +25859,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_109
-#AT_START_110
-at_fn_group_banner 110 'reduce.at:1141' \
+#AT_STOP_111
+#AT_START_112
+at_fn_group_banner 112 'reduce.at:1141' \
   "no %define lr.type: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "110. $at_setup_line: testing $at_desc ..."
+  $as_echo "112. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -25082,13 +26308,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_110
-#AT_START_111
-at_fn_group_banner 111 'reduce.at:1141' \
+#AT_STOP_112
+#AT_START_113
+at_fn_group_banner 113 'reduce.at:1141' \
   "%define lr.type lalr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "111. $at_setup_line: testing $at_desc ..."
+  $as_echo "113. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -25532,13 +26758,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_111
-#AT_START_112
-at_fn_group_banner 112 'reduce.at:1141' \
+#AT_STOP_113
+#AT_START_114
+at_fn_group_banner 114 'reduce.at:1141' \
   "%define lr.type ielr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "112. $at_setup_line: testing $at_desc ..."
+  $as_echo "114. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -25985,13 +27211,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_112
-#AT_START_113
-at_fn_group_banner 113 'reduce.at:1141' \
+#AT_STOP_114
+#AT_START_115
+at_fn_group_banner 115 'reduce.at:1141' \
   "%define lr.type canonical-lr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "113. $at_setup_line: testing $at_desc ..."
+  $as_echo "115. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -26458,13 +27684,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_113
-#AT_START_114
-at_fn_group_banner 114 'reduce.at:1471' \
+#AT_STOP_115
+#AT_START_116
+at_fn_group_banner 116 'reduce.at:1471' \
   "no %define lr.default-reductions" "               " 6
 at_xfail=no
 (
-  $as_echo "114. $at_setup_line: testing $at_desc ..."
+  $as_echo "116. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -26780,13 +28006,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_114
-#AT_START_115
-at_fn_group_banner 115 'reduce.at:1471' \
+#AT_STOP_116
+#AT_START_117
+at_fn_group_banner 117 'reduce.at:1471' \
   "%define lr.default-reductions most" "             " 6
 at_xfail=no
 (
-  $as_echo "115. $at_setup_line: testing $at_desc ..."
+  $as_echo "117. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27102,13 +28328,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_115
-#AT_START_116
-at_fn_group_banner 116 'reduce.at:1471' \
+#AT_STOP_117
+#AT_START_118
+at_fn_group_banner 118 'reduce.at:1471' \
   "%define lr.default-reductions consistent" "       " 6
 at_xfail=no
 (
-  $as_echo "116. $at_setup_line: testing $at_desc ..."
+  $as_echo "118. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27425,13 +28651,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_116
-#AT_START_117
-at_fn_group_banner 117 'reduce.at:1471' \
+#AT_STOP_118
+#AT_START_119
+at_fn_group_banner 119 'reduce.at:1471' \
   "%define lr.default-reductions accepting" "        " 6
 at_xfail=no
 (
-  $as_echo "117. $at_setup_line: testing $at_desc ..."
+  $as_echo "119. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27750,13 +28976,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_117
-#AT_START_118
-at_fn_group_banner 118 'synclines.at:111' \
-  "Prologue synch line" "                            " 7
+#AT_STOP_119
+#AT_START_120
+at_fn_group_banner 120 'synclines.at:124' \
+  "Prologue syncline" "                              " 7
 at_xfail=no
 (
-  $as_echo "118. $at_setup_line: testing $at_desc ..."
+  $as_echo "120. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27784,18 +29010,23 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:124"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c syncline.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -27811,6 +29042,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -27824,37 +29060,43 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:111"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:124: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:124"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:124"
 ( $at_check_trace; test "`cat stdout`" = 'syncline.c:1: #error "1"' || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27876,9 +29118,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/synclines.at:111: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/synclines.at:124: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:111"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:124"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -27886,29 +29128,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/synclines.at:111: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:124"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:111: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:124: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:111"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:124"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -27917,16 +29159,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:111: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:124: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:111"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:124"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -27935,7 +29177,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27943,32 +29185,37 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:124"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:124"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c input.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -27984,6 +29231,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -27997,30 +29249,36 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:111"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:124: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:124"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:111: cat stdout"
-at_fn_check_prepare_trace "synclines.at:111"
+$as_echo "$at_srcdir/synclines.at:124: cat stdout"
+at_fn_check_prepare_trace "synclines.at:124"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -28029,7 +29287,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "input.y:2: #error \"2\"
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:111"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28038,13 +29296,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_118
-#AT_START_119
-at_fn_group_banner 119 'synclines.at:129' \
-  "%union synch line" "                              " 7
+#AT_STOP_120
+#AT_START_121
+at_fn_group_banner 121 'synclines.at:142' \
+  "%union syncline" "                                " 7
 at_xfail=no
 (
-  $as_echo "119. $at_setup_line: testing $at_desc ..."
+  $as_echo "121. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28072,18 +29330,23 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:142"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c syncline.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28099,6 +29362,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28112,37 +29380,43 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:129"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:142: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:142"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:142"
 ( $at_check_trace; test "`cat stdout`" = 'syncline.c:1: #error "1"' || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28167,9 +29441,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/synclines.at:129: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/synclines.at:142: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:129"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:142"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28177,29 +29451,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/synclines.at:129: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:142"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:129: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:142: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:129"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:142"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -28208,16 +29482,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:129: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:142: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:129"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:142"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -28226,7 +29500,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28234,32 +29508,37 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:142"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:142"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c input.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28275,6 +29554,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28288,30 +29572,36 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:129"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:142: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:142"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:129: cat stdout"
-at_fn_check_prepare_trace "synclines.at:129"
+$as_echo "$at_srcdir/synclines.at:142: cat stdout"
+at_fn_check_prepare_trace "synclines.at:142"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -28320,7 +29610,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "input.y:2: #error \"2\"
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:142"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28329,13 +29619,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_119
-#AT_START_120
-at_fn_group_banner 120 'synclines.at:150' \
-  "Postprologue synch line" "                        " 7
+#AT_STOP_121
+#AT_START_122
+at_fn_group_banner 122 'synclines.at:163' \
+  "Postprologue syncline" "                          " 7
 at_xfail=no
 (
-  $as_echo "120. $at_setup_line: testing $at_desc ..."
+  $as_echo "122. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28363,18 +29653,23 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:163"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c syncline.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28390,6 +29685,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28403,37 +29703,43 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:163: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:163"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:163"
 ( $at_check_trace; test "`cat stdout`" = 'syncline.c:1: #error "1"' || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28461,9 +29767,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/synclines.at:150: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/synclines.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:163"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28471,29 +29777,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/synclines.at:150: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:163"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:150: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:163: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:150"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:163"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -28502,16 +29808,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:150: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:163: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:150"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:163"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -28520,7 +29826,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28528,32 +29834,37 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:163"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:163"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c input.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28569,6 +29880,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28582,30 +29898,36 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:163: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:163"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:150: cat stdout"
-at_fn_check_prepare_trace "synclines.at:150"
+$as_echo "$at_srcdir/synclines.at:163: cat stdout"
+at_fn_check_prepare_trace "synclines.at:163"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -28614,7 +29936,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "input.y:10: #error \"10\"
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28623,13 +29945,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_120
-#AT_START_121
-at_fn_group_banner 121 'synclines.at:174' \
-  "Action synch line" "                              " 7
+#AT_STOP_122
+#AT_START_123
+at_fn_group_banner 123 'synclines.at:187' \
+  "Action syncline" "                                " 7
 at_xfail=no
 (
-  $as_echo "121. $at_setup_line: testing $at_desc ..."
+  $as_echo "123. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28657,18 +29979,23 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:187"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c syncline.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28684,6 +30011,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28697,37 +30029,43 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:174"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:187: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:187"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:187"
 ( $at_check_trace; test "`cat stdout`" = 'syncline.c:1: #error "1"' || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28750,9 +30088,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/synclines.at:174: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/synclines.at:187: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:174"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:187"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28760,29 +30098,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/synclines.at:174: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:187"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:174: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:187: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:174"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:187"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -28791,16 +30129,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:174: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:187: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:174"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:187"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -28809,7 +30147,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28817,32 +30155,37 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:187"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:187"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c input.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28858,6 +30201,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28871,30 +30219,36 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:174"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:187: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:187"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:174: cat stdout"
-at_fn_check_prepare_trace "synclines.at:174"
+$as_echo "$at_srcdir/synclines.at:187: cat stdout"
+at_fn_check_prepare_trace "synclines.at:187"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -28903,7 +30257,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "input.y:8: #error \"8\"
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:174"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:187"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28912,13 +30266,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_121
-#AT_START_122
-at_fn_group_banner 122 'synclines.at:193' \
-  "Epilogue synch line" "                            " 7
+#AT_STOP_123
+#AT_START_124
+at_fn_group_banner 124 'synclines.at:206' \
+  "Epilogue syncline" "                              " 7
 at_xfail=no
 (
-  $as_echo "122. $at_setup_line: testing $at_desc ..."
+  $as_echo "124. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28946,18 +30300,23 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:206"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c syncline.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -28973,6 +30332,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -28986,37 +30350,43 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:193"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:206: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:206"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:206"
 ( $at_check_trace; test "`cat stdout`" = 'syncline.c:1: #error "1"' || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29038,9 +30408,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/synclines.at:193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/synclines.at:206: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:193"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:206"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29048,29 +30418,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/synclines.at:193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "synclines.at:206"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:193: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:206: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:193"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:206"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -29079,16 +30449,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:193: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:206: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:193"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:206"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -29097,7 +30467,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29105,32 +30475,37 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:206"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:206"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c input.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_skip $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Transform stderr into something like this:
+#
+#   input.y:4: #error "4"
+#
 # In case GCC displays column information, strip it down.
 #
 #   input.y:4:2: #error "4"    or
@@ -29146,6 +30521,11 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
+# The message may include a caret-error:
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
 #
 # And possibly distcc adds its bits.
 #
@@ -29159,30 +30539,36 @@ $at_traceon; }
 #   distcc[35882] Warning: failed to distribute input.c to chrisimac/4, running locally instead
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: sed -e '/^distcc\\[[0-9]*\\] /d'                            \\
-               -e 's/^\\([^:]*:[^:.]*\\)[.:][^:]*:\\(.*\\)\$/\\1:\\2/'      \\
-               -e 's/^\\([^:]*:[^:]*:\\)[^#]*\\( #error\\)/\\1\\2/'  \\
-               -e \"/^[^:]*: In function '[^\\']*':\$/d\"                \\
-            stderr"
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:193"
-( $at_check_trace; sed -e '/^distcc\[[0-9]*\] /d'                            \
-               -e 's/^\([^:]*:[^:.]*\)[.:][^:]*:\(.*\)$/\1:\2/'      \
-               -e 's/^\([^:]*:[^:]*:\)[^#]*\( #error\)/\1\2/'  \
-               -e "/^[^:]*: In function '[^\']*':$/d"                \
-            stderr
+$as_echo "$at_srcdir/synclines.at:206: perl -p -0777 - stderr <<\\EOF
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:206"
+( $at_check_trace; perl -p -0777 - stderr <<\EOF
+  s/^distcc\[\d+\] .*\n//gm;
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  s/^[^:]*: In function '[^']+':\n//gm;
+  s/^\ +#error.*\n\ *\^\n//gm;
+EOF
+
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:193: cat stdout"
-at_fn_check_prepare_trace "synclines.at:193"
+$as_echo "$at_srcdir/synclines.at:206: cat stdout"
+at_fn_check_prepare_trace "synclines.at:206"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -29191,7 +30577,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "input.y:8: #error \"8\"
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:193"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29200,13 +30586,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_122
-#AT_START_123
-at_fn_group_banner 123 'headers.at:57' \
+#AT_STOP_124
+#AT_START_125
+at_fn_group_banner 125 'headers.at:57' \
   "Invalid CPP guards:  --defines=input/input.h" "   " 8
 at_xfail=no
 (
-  $as_echo "123. $at_setup_line: testing $at_desc ..."
+  $as_echo "125. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29365,13 +30751,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_123
-#AT_START_124
-at_fn_group_banner 124 'headers.at:58' \
+#AT_STOP_125
+#AT_START_126
+at_fn_group_banner 126 'headers.at:58' \
   "Invalid CPP guards:  --defines=9foo.h" "          " 8
 at_xfail=no
 (
-  $as_echo "124. $at_setup_line: testing $at_desc ..."
+  $as_echo "126. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29530,13 +30916,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_124
-#AT_START_125
-at_fn_group_banner 125 'headers.at:59' \
+#AT_STOP_126
+#AT_START_127
+at_fn_group_banner 127 'headers.at:59' \
   "Invalid CPP guards: %glr-parser --defines=input/input.h" "" 8
 at_xfail=no
 (
-  $as_echo "125. $at_setup_line: testing $at_desc ..."
+  $as_echo "127. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29695,13 +31081,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_125
-#AT_START_126
-at_fn_group_banner 126 'headers.at:60' \
+#AT_STOP_127
+#AT_START_128
+at_fn_group_banner 128 'headers.at:60' \
   "Invalid CPP guards: %glr-parser --defines=9foo.h" "" 8
 at_xfail=no
 (
-  $as_echo "126. $at_setup_line: testing $at_desc ..."
+  $as_echo "128. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29860,13 +31246,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_126
-#AT_START_127
-at_fn_group_banner 127 'headers.at:69' \
+#AT_STOP_128
+#AT_START_129
+at_fn_group_banner 129 'headers.at:69' \
   "export YYLTYPE" "                                 " 8
 at_xfail=no
 (
-  $as_echo "127. $at_setup_line: testing $at_desc ..."
+  $as_echo "129. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30080,13 +31466,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_127
-#AT_START_128
-at_fn_group_banner 128 'headers.at:125' \
+#AT_STOP_129
+#AT_START_130
+at_fn_group_banner 130 'headers.at:125' \
   "Several parsers" "                                " 8
 at_xfail=no
 (
-  $as_echo "128. $at_setup_line: testing $at_desc ..."
+  $as_echo "130. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30199,7 +31585,7 @@ int x1_lex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -30420,7 +31806,7 @@ int x2_lex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   (x2_lloc).first_line = (x2_lloc).last_line = 1;
@@ -30634,7 +32020,7 @@ int x3_lex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -30855,7 +32241,7 @@ int x4_lex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   (x4_lloc).first_line = (x4_lloc).last_line = 1;
@@ -31068,7 +32454,7 @@ int x5_lex (x5_::parser::semantic_type *lvalp, x5_::parser::location_type *llocp
   static size_t toknum = 0;
   int res;
   (void) lvalp;(void) llocp;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   (*llocp).begin.line = (*llocp).end.line = 1;
@@ -31284,7 +32670,7 @@ int x6_lex (X6_STYPE *lvalp)
   static size_t toknum = 0;
   int res;
   (void) lvalp;;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -31496,7 +32882,7 @@ int x7_lex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -31708,7 +33094,7 @@ int x8_lex (X8_STYPE *lvalp)
   static size_t toknum = 0;
   int res;
   (void) lvalp;;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -31918,13 +33304,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_128
-#AT_START_129
-at_fn_group_banner 129 'actions.at:24' \
+#AT_STOP_130
+#AT_START_131
+at_fn_group_banner 131 'actions.at:24' \
   "Mid-rule actions" "                               " 9
 at_xfail=no
 (
-  $as_echo "129. $at_setup_line: testing $at_desc ..."
+  $as_echo "131. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -31979,7 +33365,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -32127,13 +33513,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_129
-#AT_START_130
-at_fn_group_banner 130 'actions.at:79' \
+#AT_STOP_131
+#AT_START_132
+at_fn_group_banner 132 'actions.at:79' \
   "Exotic Dollars" "                                 " 9
 at_xfail=no
 (
-  $as_echo "130. $at_setup_line: testing $at_desc ..."
+  $as_echo "132. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -32198,7 +33584,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -32385,7 +33771,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -32533,13 +33919,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_130
-#AT_START_131
-at_fn_group_banner 131 'actions.at:574' \
+#AT_STOP_132
+#AT_START_133
+at_fn_group_banner 133 'actions.at:574' \
   "Printers and Destructors : " "                    " 9
 at_xfail=no
 (
-  $as_echo "131. $at_setup_line: testing $at_desc ..."
+  $as_echo "133. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -33166,13 +34552,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_131
-#AT_START_132
-at_fn_group_banner 132 'actions.at:575' \
+#AT_STOP_133
+#AT_START_134
+at_fn_group_banner 134 'actions.at:575' \
   "Printers and Destructors with union: " "          " 9
 at_xfail=no
 (
-  $as_echo "132. $at_setup_line: testing $at_desc ..."
+  $as_echo "134. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -33802,13 +35188,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_132
-#AT_START_133
-at_fn_group_banner 133 'actions.at:577' \
+#AT_STOP_134
+#AT_START_135
+at_fn_group_banner 135 'actions.at:577' \
   "Printers and Destructors : %defines %skeleton \"lalr1.cc\"" "" 9
 at_xfail=no
 (
-  $as_echo "133. $at_setup_line: testing $at_desc ..."
+  $as_echo "135. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -34375,13 +35761,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_133
-#AT_START_134
-at_fn_group_banner 134 'actions.at:578' \
+#AT_STOP_135
+#AT_START_136
+at_fn_group_banner 136 'actions.at:578' \
   "Printers and Destructors with union: %defines %skeleton \"lalr1.cc\"" "" 9
 at_xfail=no
 (
-  $as_echo "134. $at_setup_line: testing $at_desc ..."
+  $as_echo "136. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -34951,13 +36337,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_134
-#AT_START_135
-at_fn_group_banner 135 'actions.at:580' \
+#AT_STOP_136
+#AT_START_137
+at_fn_group_banner 137 'actions.at:580' \
   "Printers and Destructors : %glr-parser" "         " 9
 at_xfail=no
 (
-  $as_echo "135. $at_setup_line: testing $at_desc ..."
+  $as_echo "137. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -35512,13 +36898,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_135
-#AT_START_136
-at_fn_group_banner 136 'actions.at:581' \
+#AT_STOP_137
+#AT_START_138
+at_fn_group_banner 138 'actions.at:581' \
   "Printers and Destructors with union: %glr-parser" "" 9
 at_xfail=no
 (
-  $as_echo "136. $at_setup_line: testing $at_desc ..."
+  $as_echo "138. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -36076,13 +37462,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_136
-#AT_START_137
-at_fn_group_banner 137 'actions.at:592' \
+#AT_STOP_138
+#AT_START_139
+at_fn_group_banner 139 'actions.at:592' \
   "Default tagless %printer and %destructor" "       " 9
 at_xfail=no
 (
-  $as_echo "137. $at_setup_line: testing $at_desc ..."
+  $as_echo "139. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -36163,7 +37549,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   yylval = res;
   (yylloc).first_line = (yylloc).last_line = 1;
@@ -36345,13 +37731,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_137
-#AT_START_138
-at_fn_group_banner 138 'actions.at:694' \
+#AT_STOP_139
+#AT_START_140
+at_fn_group_banner 140 'actions.at:694' \
   "Default tagged and per-type %printer and %destructor" "" 9
 at_xfail=no
 (
-  $as_echo "138. $at_setup_line: testing $at_desc ..."
+  $as_echo "140. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -36433,7 +37819,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -36625,13 +38011,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_138
-#AT_START_139
-at_fn_group_banner 139 'actions.at:818' \
+#AT_STOP_140
+#AT_START_141
+at_fn_group_banner 141 'actions.at:818' \
   "Default %printer and %destructor for user-defined end token" "" 9
 at_xfail=no
 (
-  $as_echo "139. $at_setup_line: testing $at_desc ..."
+  $as_echo "141. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -37122,13 +38508,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_139
-#AT_START_140
-at_fn_group_banner 140 'actions.at:929' \
+#AT_STOP_141
+#AT_START_142
+at_fn_group_banner 142 'actions.at:929' \
   "Default %printer and %destructor are not for error or \$undefined" "" 9
 at_xfail=no
 (
-  $as_echo "140. $at_setup_line: testing $at_desc ..."
+  $as_echo "142. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -37193,7 +38579,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   yylval = res;
   return res;
@@ -37373,13 +38759,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_140
-#AT_START_141
-at_fn_group_banner 141 'actions.at:1024' \
+#AT_STOP_142
+#AT_START_143
+at_fn_group_banner 143 'actions.at:1024' \
   "Default %printer and %destructor are not for \$accept" "" 9
 at_xfail=no
 (
-  $as_echo "141. $at_setup_line: testing $at_desc ..."
+  $as_echo "143. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -37449,7 +38835,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -37568,13 +38954,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_141
-#AT_START_142
-at_fn_group_banner 142 'actions.at:1089' \
+#AT_STOP_143
+#AT_START_144
+at_fn_group_banner 144 'actions.at:1089' \
   "Default %printer and %destructor for mid-rule values" "" 9
 at_xfail=no
 (
-  $as_echo "142. $at_setup_line: testing $at_desc ..."
+  $as_echo "144. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -37634,7 +39020,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -37937,13 +39323,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_142
-#AT_START_143
-at_fn_group_banner 143 'actions.at:1228' \
+#AT_STOP_144
+#AT_START_145
+at_fn_group_banner 145 'actions.at:1228' \
   "@\$ in %initial-action implies %locations" "       " 9
 at_xfail=no
 (
-  $as_echo "143. $at_setup_line: testing $at_desc ..."
+  $as_echo "145. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38003,9 +39389,337 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1228"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1228"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1228: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1228"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1228: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1228"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/actions.at:1228: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1228"
+( $at_check_trace; bison -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1228: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1228"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_145
+#AT_START_146
+at_fn_group_banner 146 'actions.at:1229' \
+  "@\$ in %destructor implies %locations" "           " 9
+at_xfail=no
+(
+  $as_echo "146. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%code {
+  #include <stdio.h>
+static void yyerror (const char *msg);
+static int yylex (void);
+}
+
+%debug
+
+%destructor {
+  fprintf (stderr, "%d\n", @$.first_line);
+} start
+
+%%
+
+start:  ;
+
+%%
+
+static int
+yylex (void)
+{
+  return 0;
+}
+
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (const char *msg)
+{
+
+  fprintf (stderr, "%s\n", msg);
+}
+int
+main (void)
+{
+  return yyparse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/actions.at:1229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1229"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1229"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1229: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1229"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1229: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1229"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/actions.at:1229: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1229"
+( $at_check_trace; bison -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1229: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1229"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_146
+#AT_START_147
+at_fn_group_banner 147 'actions.at:1230' \
+  "@\$ in %printer implies %locations" "              " 9
+at_xfail=no
+(
+  $as_echo "147. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%code {
+  #include <stdio.h>
+static void yyerror (const char *msg);
+static int yylex (void);
+}
+
+%debug
+
+%printer {
+  fprintf (stderr, "%d\n", @$.first_line);
+} start
+
+%%
+
+start:  ;
+
+%%
+
+static int
+yylex (void)
+{
+  return 0;
+}
+
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (const char *msg)
+{
+
+  fprintf (stderr, "%s\n", msg);
+}
+int
+main (void)
+{
+  return yyparse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/actions.at:1230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1228"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1230"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38013,29 +39727,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1228"
+$as_echo "$at_srcdir/actions.at:1230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1230"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1228: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1230: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1228"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1230"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -38044,16 +39758,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1228: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1230: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1228"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1230"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -38062,7 +39776,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38070,29 +39784,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1228: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1228"
+$as_echo "$at_srcdir/actions.at:1230: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1230"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1228: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1228"
+$as_echo "$at_srcdir/actions.at:1230: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1230"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1228"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38101,16 +39815,18 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_143
-#AT_START_144
-at_fn_group_banner 144 'actions.at:1229' \
-  "@\$ in %destructor implies %locations" "           " 9
+#AT_STOP_147
+#AT_START_148
+at_fn_group_banner 148 'actions.at:1362' \
+  "Qualified \$\$ in actions: yacc.c" "                " 9
 at_xfail=no
 (
-  $as_echo "144. $at_setup_line: testing $at_desc ..."
+  $as_echo "148. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
+
+
 cat >input.y <<'_ATEOF'
 %code top {
 #include <config.h>
@@ -38120,41 +39836,94 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%code {
-  #include <stdio.h>
-static void yyerror (const char *msg);
-static int yylex (void);
-}
-
+%skeleton "yacc.c"
+%defines   // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%locations // FIXME: Mandated by lalr1.cc in Bison 2.6.
 %debug
+%code requires
+{
+  typedef struct sem_type
+  {
+    int ival;
+    float fval;
+  } sem_type;
 
-%destructor {
-  fprintf (stderr, "%d\n", @$.first_line);
-} start
+# define YYSTYPE sem_type
 
-%%
 
-start:  ;
+# include <stdio.h>
+  static void
+  report (FILE* yyo, int ival, float fval)
+  {
+    fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
+  }
 
-%%
+}
 
-static int
-yylex (void)
+%code
 {
-  return 0;
+  static void yyerror (const char *msg);
+  static int yylex (void);
 }
 
+%token UNTYPED
+%token <ival> INT
+%type <fval> float
+%printer { report (yyo, $$,       $<fval>$); } <ival>;
+%printer { report (yyo, $<ival>$, $$      ); } <fval>;
+%printer { report (yyo, $<ival>$, $<fval>$); } <>;
+
+
+
+%initial-action
+{
+  $<ival>$ = 42;
+  $<fval>$ = 4.2;
+}
+
+%%
+float: UNTYPED INT
+{
+  $$       = $<fval>1 + $<fval>2;
+  $<ival>$ = $<ival>1 + $2;
+};
+%%
 #include <stdio.h>
 /* A C error reporting function.  */
 static
 void yyerror (const char *msg)
 {
 
+  fprintf (stderr, "%d.%d",
+           (yylloc).first_line, (yylloc).first_column);
+  if ((yylloc).first_line != (yylloc).last_line)
+    fprintf (stderr, "-%d.%d",
+             (yylloc).last_line,  (yylloc).last_column - 1);
+  else if ((yylloc).first_column != (yylloc).last_column - 1)
+    fprintf (stderr, "-%d",
+             (yylloc).last_column - 1);
+  fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
+#include <assert.h>
+static
+int yylex (void)
+{
+  static int const input[] = {UNTYPED, INT, EOF};
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  (yylval).ival = toknum * 10; (yylval).fval = toknum / 10.0;;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
 int
 main (void)
 {
+  yydebug = 1;
   return yyparse ();
 }
 _ATEOF
@@ -38167,9 +39936,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1362: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1229"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1362"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38177,29 +39946,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1229"
+$as_echo "$at_srcdir/actions.at:1362: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1362"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1229: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1362: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1229"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1362"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -38208,16 +39977,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1229: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1362: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1229"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1362"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -38226,7 +39995,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38234,47 +40003,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1229: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1229"
+$as_echo "$at_srcdir/actions.at:1362: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1362"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-{ set +x
-$as_echo "$at_srcdir/actions.at:1229: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1229"
+   { set +x
+$as_echo "$at_srcdir/actions.at:1362: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1362"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1229"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1362:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1362"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1362: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1362"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Don't be too picky on the traces, GLR is not exactly the same.  Keep
+# only the lines from the printer.
+#
+# Don't care about locations.  FIXME: remove their removal when Bison
+# supports C++ without locations.
+{ set +x
+$as_echo "$at_srcdir/actions.at:1362: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1362"
+( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1)
+Shifting token UNTYPED (ival: 10, fval: 0.1)
+Reading a token: Next token is token INT (ival: 20, fval: 0.2)
+Shifting token INT (ival: 20, fval: 0.2)
+   \$1 = token UNTYPED (ival: 10, fval: 0.1)
+   \$2 = token INT (ival: 20, fval: 0.2)
+-> \$\$ = nterm float (ival: 30, fval: 0.3)
+Cleanup: popping nterm float (ival: 30, fval: 0.3)
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1362"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
+
   set +x
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_144
-#AT_START_145
-at_fn_group_banner 145 'actions.at:1230' \
-  "@\$ in %printer implies %locations" "              " 9
+#AT_STOP_148
+#AT_START_149
+at_fn_group_banner 149 'actions.at:1363' \
+  "Qualified \$\$ in actions: glr.c" "                 " 9
 at_xfail=no
 (
-  $as_echo "145. $at_setup_line: testing $at_desc ..."
+  $as_echo "149. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
+
+
 cat >input.y <<'_ATEOF'
 %code top {
 #include <config.h>
@@ -38284,41 +40112,94 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%code {
-  #include <stdio.h>
-static void yyerror (const char *msg);
-static int yylex (void);
-}
-
+%skeleton "glr.c"
+%defines   // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%locations // FIXME: Mandated by lalr1.cc in Bison 2.6.
 %debug
+%code requires
+{
+  typedef struct sem_type
+  {
+    int ival;
+    float fval;
+  } sem_type;
 
-%printer {
-  fprintf (stderr, "%d\n", @$.first_line);
-} start
+# define YYSTYPE sem_type
 
-%%
 
-start:  ;
+# include <stdio.h>
+  static void
+  report (FILE* yyo, int ival, float fval)
+  {
+    fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
+  }
 
-%%
+}
 
-static int
-yylex (void)
+%code
 {
-  return 0;
+  static void yyerror (const char *msg);
+  static int yylex (void);
+}
+
+%token UNTYPED
+%token <ival> INT
+%type <fval> float
+%printer { report (yyo, $$,       $<fval>$); } <ival>;
+%printer { report (yyo, $<ival>$, $$      ); } <fval>;
+%printer { report (yyo, $<ival>$, $<fval>$); } <>;
+
+
+
+%initial-action
+{
+  $<ival>$ = 42;
+  $<fval>$ = 4.2;
 }
 
+%%
+float: UNTYPED INT
+{
+  $$       = $<fval>1 + $<fval>2;
+  $<ival>$ = $<ival>1 + $2;
+};
+%%
 #include <stdio.h>
 /* A C error reporting function.  */
 static
 void yyerror (const char *msg)
 {
 
+  fprintf (stderr, "%d.%d",
+           (yylloc).first_line, (yylloc).first_column);
+  if ((yylloc).first_line != (yylloc).last_line)
+    fprintf (stderr, "-%d.%d",
+             (yylloc).last_line,  (yylloc).last_column - 1);
+  else if ((yylloc).first_column != (yylloc).last_column - 1)
+    fprintf (stderr, "-%d",
+             (yylloc).last_column - 1);
+  fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
+#include <assert.h>
+static
+int yylex (void)
+{
+  static int const input[] = {UNTYPED, INT, EOF};
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  (yylval).ival = toknum * 10; (yylval).fval = toknum / 10.0;;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
 int
 main (void)
 {
+  yydebug = 1;
   return yyparse ();
 }
 _ATEOF
@@ -38331,9 +40212,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1363: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1230"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1363"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38341,29 +40222,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1230"
+$as_echo "$at_srcdir/actions.at:1363: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1363"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1230: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1363: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1230"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1363"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -38372,16 +40253,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1230: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1363: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1230"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1363"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -38390,7 +40271,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38398,44 +40279,685 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1230: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1230"
+$as_echo "$at_srcdir/actions.at:1363: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1363"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-{ set +x
-$as_echo "$at_srcdir/actions.at:1230: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1230"
+   { set +x
+$as_echo "$at_srcdir/actions.at:1363: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1363"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1230"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+{ set +x
+$as_echo "$at_srcdir/actions.at:1363:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1363"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1363: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1363"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Don't be too picky on the traces, GLR is not exactly the same.  Keep
+# only the lines from the printer.
+#
+# Don't care about locations.  FIXME: remove their removal when Bison
+# supports C++ without locations.
+{ set +x
+$as_echo "$at_srcdir/actions.at:1363: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1363"
+( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1)
+Shifting token UNTYPED (ival: 10, fval: 0.1)
+Reading a token: Next token is token INT (ival: 20, fval: 0.2)
+Shifting token INT (ival: 20, fval: 0.2)
+   \$1 = token UNTYPED (ival: 10, fval: 0.1)
+   \$2 = token INT (ival: 20, fval: 0.2)
+-> \$\$ = nterm float (ival: 30, fval: 0.3)
+Cleanup: popping nterm float (ival: 30, fval: 0.3)
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1363"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
   set +x
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_145
-#AT_START_146
-at_fn_group_banner 146 'actions.at:1237' \
+#AT_STOP_149
+#AT_START_150
+at_fn_group_banner 150 'actions.at:1364' \
+  "Qualified \$\$ in actions: lalr1.cc" "              " 9
+at_xfail=no
+(
+  $as_echo "150. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%skeleton "lalr1.cc"
+%defines   // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%locations // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%debug
+%code requires
+{
+  typedef struct sem_type
+  {
+    int ival;
+    float fval;
+  } sem_type;
+
+# define YYSTYPE sem_type
+
+
+# include <iostream>
+  static void
+  report (std::ostream& yyo, int ival, float fval)
+  {
+    yyo << "ival: " << ival << ", fval: " <<  fval;
+  }
+
+}
+
+%code
+{
+
+  static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+}
+
+%token UNTYPED
+%token <ival> INT
+%type <fval> float
+%printer { report (yyo, $$,       $<fval>$); } <ival>;
+%printer { report (yyo, $<ival>$, $$      ); } <fval>;
+%printer { report (yyo, $<ival>$, $<fval>$); } <>;
+
+
+/* The lalr1.cc skeleton, for backward compatibility, defines
+   a constructor for position that initializes the filename.  The
+   glr.cc skeleton does not (and in fact cannot: location/position
+   are stored in a union, from which objects with constructors are
+   excluded in C++). */
+%initial-action {
+  @$.initialize ();
+}
+
+
+%initial-action
+{
+  $<ival>$ = 42;
+  $<fval>$ = 4.2;
+}
+
+%%
+float: UNTYPED INT
+{
+  $$       = $<fval>1 + $<fval>2;
+  $<ival>$ = $<ival>1 + $2;
+};
+%%
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
+{
+  (void) l;
+  std::cerr << l << ": " << m << std::endl;
+}
+#include <assert.h>
+static
+int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
+{
+  static int const input[] = {yy::parser::token::UNTYPED,
+                                 yy::parser::token::INT,
+                                  EOF};
+  static size_t toknum = 0;
+  int res;
+  (void) lvalp;(void) llocp;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  (*lvalp).ival = toknum * 10; (*lvalp).fval = toknum / 10.0;;
+  (*llocp).begin.line = (*llocp).end.line = 1;
+  (*llocp).begin.column = (*llocp).end.column = toknum;
+  return res;
+}
+int
+main (void)
+{
+  yy::parser p;
+  p.set_debug_level(1);
+  return p.parse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/actions.at:1364: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.cc input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1364"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1364: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y" "actions.at:1364"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1364: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1364"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1364: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1364"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:1364"
+( $at_check_trace; bison -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:1364"
+( $at_check_trace; $BISON_CXX_WORKS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "actions.at:1364"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1364"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1364"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Don't be too picky on the traces, GLR is not exactly the same.  Keep
+# only the lines from the printer.
+#
+# Don't care about locations.  FIXME: remove their removal when Bison
+# supports C++ without locations.
+{ set +x
+$as_echo "$at_srcdir/actions.at:1364: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1364"
+( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1)
+Shifting token UNTYPED (ival: 10, fval: 0.1)
+Reading a token: Next token is token INT (ival: 20, fval: 0.2)
+Shifting token INT (ival: 20, fval: 0.2)
+   \$1 = token UNTYPED (ival: 10, fval: 0.1)
+   \$2 = token INT (ival: 20, fval: 0.2)
+-> \$\$ = nterm float (ival: 30, fval: 0.3)
+Cleanup: popping nterm float (ival: 30, fval: 0.3)
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1364"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_150
+#AT_START_151
+at_fn_group_banner 151 'actions.at:1365' \
+  "Qualified \$\$ in actions: glr.cc" "                " 9
+at_xfail=no
+(
+  $as_echo "151. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%skeleton "glr.cc"
+%defines   // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%locations // FIXME: Mandated by lalr1.cc in Bison 2.6.
+%debug
+%code requires
+{
+  typedef struct sem_type
+  {
+    int ival;
+    float fval;
+  } sem_type;
+
+# define YYSTYPE sem_type
+
+
+# include <iostream>
+  static void
+  report (std::ostream& yyo, int ival, float fval)
+  {
+    yyo << "ival: " << ival << ", fval: " <<  fval;
+  }
+
+}
+
+%code
+{
+
+  static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+}
+
+%token UNTYPED
+%token <ival> INT
+%type <fval> float
+%printer { report (yyo, $$,       $<fval>$); } <ival>;
+%printer { report (yyo, $<ival>$, $$      ); } <fval>;
+%printer { report (yyo, $<ival>$, $<fval>$); } <>;
+
+
+/* The lalr1.cc skeleton, for backward compatibility, defines
+   a constructor for position that initializes the filename.  The
+   glr.cc skeleton does not (and in fact cannot: location/position
+   are stored in a union, from which objects with constructors are
+   excluded in C++). */
+%initial-action {
+  @$.initialize ();
+}
+
+
+%initial-action
+{
+  $<ival>$ = 42;
+  $<fval>$ = 4.2;
+}
+
+%%
+float: UNTYPED INT
+{
+  $$       = $<fval>1 + $<fval>2;
+  $<ival>$ = $<ival>1 + $2;
+};
+%%
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
+{
+  (void) l;
+  std::cerr << l << ": " << m << std::endl;
+}
+#include <assert.h>
+static
+int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
+{
+  static int const input[] = {yy::parser::token::UNTYPED,
+                                 yy::parser::token::INT,
+                                  EOF};
+  static size_t toknum = 0;
+  int res;
+  (void) lvalp;(void) llocp;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  (*lvalp).ival = toknum * 10; (*lvalp).fval = toknum / 10.0;;
+  (*llocp).begin.line = (*llocp).end.line = 1;
+  (*llocp).begin.column = (*llocp).end.column = toknum;
+  return res;
+}
+int
+main (void)
+{
+  yy::parser p;
+  p.set_debug_level(1);
+  return p.parse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/actions.at:1365: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.cc input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1365"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1365: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y" "actions.at:1365"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1365: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1365"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1365: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1365"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:1365"
+( $at_check_trace; bison -o input.cc input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:1365"
+( $at_check_trace; $BISON_CXX_WORKS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "actions.at:1365"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1365"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1365"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Don't be too picky on the traces, GLR is not exactly the same.  Keep
+# only the lines from the printer.
+#
+# Don't care about locations.  FIXME: remove their removal when Bison
+# supports C++ without locations.
+{ set +x
+$as_echo "$at_srcdir/actions.at:1365: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1365"
+( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "Reading a token: Next token is token UNTYPED (ival: 10, fval: 0.1)
+Shifting token UNTYPED (ival: 10, fval: 0.1)
+Reading a token: Next token is token INT (ival: 20, fval: 0.2)
+Shifting token INT (ival: 20, fval: 0.2)
+   \$1 = token UNTYPED (ival: 10, fval: 0.1)
+   \$2 = token INT (ival: 20, fval: 0.2)
+-> \$\$ = nterm float (ival: 30, fval: 0.3)
+Cleanup: popping nterm float (ival: 30, fval: 0.3)
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1365"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_151
+#AT_START_152
+at_fn_group_banner 152 'actions.at:1373' \
   "Fix user actions without a trailing semicolon" "  " 9
 at_xfail=no
 (
-  $as_echo "146. $at_setup_line: testing $at_desc ..."
+  $as_echo "152. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38501,9 +41023,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1294"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38511,29 +41033,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1430: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1294"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1430"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -38542,16 +41064,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1430: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1294"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1430"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -38560,7 +41082,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38568,8 +41090,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1294: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1430"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -38613,7 +41135,7 @@ input.y:36.1: warning: future versions of Bison will not add the ';'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38628,15 +41150,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror" "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror" "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38707,9 +41229,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/actions.at:1430: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1294"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1430"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38717,7 +41239,7 @@ at_status=$? at_failed=false
 $at_check_filter
 $at_diff experr "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38725,15 +41247,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error" "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error" "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 $at_diff experr "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38742,28 +41264,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror" "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror" "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror" "actions.at:1294"
+$as_echo "$at_srcdir/actions.at:1430: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror" "actions.at:1430"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38772,11 +41294,11 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1333: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1469: perl -0777 -ne '
 my \$count = 0;
 s{/\\* TEST:N:2 \\*/ \\}\$}{ ++\$count; \"\" }gem;
 printf \"\$count\\n\";' input.c"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1333"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1469"
 ( $at_check_trace; perl -0777 -ne '
 my $count = 0;
 s{/\* TEST:N:2 \*/ \}$}{ ++$count; "" }gem;
@@ -38788,16 +41310,16 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "3
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1333"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1469"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1334: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1470: perl -0777 -ne '
 my \$count = 0;
 s{/\\* TEST:Y:2 \\*/ ;\\}\$}{ ++\$count; \"\" }gem;
 printf \"\$count\\n\";' input.c"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1334"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1470"
 ( $at_check_trace; perl -0777 -ne '
 my $count = 0;
 s{/\* TEST:Y:2 \*/ ;\}$}{ ++$count; "" }gem;
@@ -38809,16 +41331,16 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "6
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1334"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1470"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1335: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1471: perl -0777 -ne '
 my \$count = 0;
 s{// TEST:N:1 [;{}]*\\n\\}\$}{ ++\$count; \"\" }gem;
 printf \"\$count\\n\";' input.c"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1335"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1471"
 ( $at_check_trace; perl -0777 -ne '
 my $count = 0;
 s{// TEST:N:1 [;{}]*\n\}$}{ ++$count; "" }gem;
@@ -38830,16 +41352,16 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "6
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1335"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1336: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1472: perl -0777 -ne '
 my \$count = 0;
 s{// TEST:Y:1 [;{}]*\\n;\\}\$}{ ++\$count; \"\" }gem;
 printf \"\$count\\n\";' input.c"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1336"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1472"
 ( $at_check_trace; perl -0777 -ne '
 my $count = 0;
 s{// TEST:Y:1 [;{}]*\n;\}$}{ ++$count; "" }gem;
@@ -38851,16 +41373,16 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "12
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1336"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1472"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1337: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1473: perl -0777 -ne '
 my \$count = 0;
 s{#define TEST_MACRO_N \\\\\\n\\[\\]\"broken\\\\\" \\\$ \\@ \\\$\\\$ \\@\\\$ \\[\\];\\\\\\nstring;\"\\}}{ ++\$count; \"\" }gem;
 printf \"\$count\\n\";' input.c"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1337"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1473"
 ( $at_check_trace; perl -0777 -ne '
 my $count = 0;
 s{#define TEST_MACRO_N \\\n\[\]"broken\\" \$ \@ \$\$ \@\$ \[\];\\\nstring;"\}}{ ++$count; "" }gem;
@@ -38872,7 +41394,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1337"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1473"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38881,13 +41403,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_146
-#AT_START_147
-at_fn_group_banner 147 'actions.at:1346' \
+#AT_STOP_152
+#AT_START_153
+at_fn_group_banner 153 'actions.at:1482' \
   "Destroying lookahead assigned by semantic action" "" 9
 at_xfail=no
 (
-  $as_echo "147. $at_setup_line: testing $at_desc ..."
+  $as_echo "153. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38950,7 +41472,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -38970,9 +41492,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1528: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1392"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1528"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38980,29 +41502,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1392: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1392"
+$as_echo "$at_srcdir/actions.at:1528: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1528"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1392: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1528: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1392"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1528"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -39011,16 +41533,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1392: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1528: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1392"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1528"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -39029,7 +41551,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39037,48 +41559,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1392: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1392"
+$as_echo "$at_srcdir/actions.at:1528: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1528"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1393: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1393"
+$as_echo "$at_srcdir/actions.at:1529: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1529"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1393"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1394:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1394"
+$as_echo "$at_srcdir/actions.at:1530:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1530"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1394"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1394: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:1394"
+$as_echo "$at_srcdir/actions.at:1530: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1530"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -39088,7 +41610,7 @@ echo >>"$at_stderr"; $as_echo "'b' destructor
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1394"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39098,13 +41620,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_147
-#AT_START_148
-at_fn_group_banner 148 'actions.at:1405' \
+#AT_STOP_153
+#AT_START_154
+at_fn_group_banner 154 'actions.at:1541' \
   "YYBACKUP" "                                       " 9
 at_xfail=no
 (
-  $as_echo "148. $at_setup_line: testing $at_desc ..."
+  $as_echo "154. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -39159,7 +41681,7 @@ int yylex (YYSTYPE *lvalp)
   static size_t toknum = 0;
   int res;
   (void) lvalp;;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   *lvalp = (toknum + 1) * 10;
   return res;
@@ -39182,9 +41704,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/actions.at:1446: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/actions.at:1582: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1446"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1582"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -39192,29 +41714,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1446"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1582"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1446: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1446"
+$as_echo "$at_srcdir/actions.at:1582: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "actions.at:1582"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1446"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1582"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1446: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1582: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1446"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1582"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -39223,16 +41745,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1446"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1582"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1446: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1582: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1446"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1582"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -39241,7 +41763,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1446"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1582"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39249,35 +41771,35 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1446: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1446"
+$as_echo "$at_srcdir/actions.at:1582: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1582"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1446"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1582"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1447: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1447"
+$as_echo "$at_srcdir/actions.at:1583: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "actions.at:1583"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1447"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1583"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1448:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1448"
+$as_echo "$at_srcdir/actions.at:1584:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1584"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -39287,20 +41809,20 @@ echo >>"$at_stdout"; $as_echo "a: 123
 a: 456
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1448"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1584"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1448: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:1448"
+$as_echo "$at_srcdir/actions.at:1584: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1584"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1448"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1584"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39310,13 +41832,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_148
-#AT_START_149
-at_fn_group_banner 149 'conflicts.at:31' \
+#AT_STOP_154
+#AT_START_155
+at_fn_group_banner 155 'conflicts.at:31' \
   "S/R in initial" "                                 " 10
 at_xfail=no
 (
-  $as_echo "149. $at_setup_line: testing $at_desc ..."
+  $as_echo "155. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_149
-#AT_START_150
-at_fn_group_banner 150 'conflicts.at:51' \
+#AT_STOP_155
+#AT_START_156
+at_fn_group_banner 156 'conflicts.at:51' \
   "%nonassoc and eof" "                              " 10
 at_xfail=no
 (
-  $as_echo "150. $at_setup_line: testing $at_desc ..."
+  $as_echo "156. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -40620,13 +43142,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_150
-#AT_START_151
-at_fn_group_banner 151 'conflicts.at:149' \
+#AT_STOP_156
+#AT_START_157
+at_fn_group_banner 157 'conflicts.at:149' \
   "%error-verbose and consistent errors" "           " 10
 at_xfail=no
 (
-  $as_echo "151. $at_setup_line: testing $at_desc ..."
+  $as_echo "157. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -44717,13 +47239,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_151
-#AT_START_152
-at_fn_group_banner 152 'conflicts.at:450' \
+#AT_STOP_157
+#AT_START_158
+at_fn_group_banner 158 'conflicts.at:450' \
   "LAC: %nonassoc requires splitting canonical LR states" "" 10
 at_xfail=no
 (
-  $as_echo "152. $at_setup_line: testing $at_desc ..."
+  $as_echo "158. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -44792,7 +47314,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -45214,13 +47736,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_152
-#AT_START_153
-at_fn_group_banner 153 'conflicts.at:540' \
+#AT_STOP_158
+#AT_START_159
+at_fn_group_banner 159 'conflicts.at:540' \
   "Unresolved SR Conflicts" "                        " 10
 at_xfail=no
 (
-  $as_echo "153. $at_setup_line: testing $at_desc ..."
+  $as_echo "159. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -45423,13 +47945,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_153
-#AT_START_154
-at_fn_group_banner 154 'conflicts.at:647' \
+#AT_STOP_159
+#AT_START_160
+at_fn_group_banner 160 'conflicts.at:647' \
   "Resolved SR Conflicts" "                          " 10
 at_xfail=no
 (
-  $as_echo "154. $at_setup_line: testing $at_desc ..."
+  $as_echo "160. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -45627,13 +48149,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_154
-#AT_START_155
-at_fn_group_banner 155 'conflicts.at:769' \
+#AT_STOP_160
+#AT_START_161
+at_fn_group_banner 161 'conflicts.at:769' \
   "Defaulted Conflicted Reduction" "                 " 10
 at_xfail=no
 (
-  $as_echo "155. $at_setup_line: testing $at_desc ..."
+  $as_echo "161. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -45965,13 +48487,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_155
-#AT_START_156
-at_fn_group_banner 156 'conflicts.at:888' \
+#AT_STOP_161
+#AT_START_162
+at_fn_group_banner 162 'conflicts.at:888' \
   "%expect not enough" "                             " 10
 at_xfail=no
 (
-  $as_echo "156. $at_setup_line: testing $at_desc ..."
+  $as_echo "162. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46005,13 +48527,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_156
-#AT_START_157
-at_fn_group_banner 157 'conflicts.at:908' \
+#AT_STOP_162
+#AT_START_163
+at_fn_group_banner 163 'conflicts.at:908' \
   "%expect right" "                                  " 10
 at_xfail=no
 (
-  $as_echo "157. $at_setup_line: testing $at_desc ..."
+  $as_echo "163. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46113,13 +48635,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_157
-#AT_START_158
-at_fn_group_banner 158 'conflicts.at:925' \
+#AT_STOP_163
+#AT_START_164
+at_fn_group_banner 164 'conflicts.at:925' \
   "%expect too much" "                               " 10
 at_xfail=no
 (
-  $as_echo "158. $at_setup_line: testing $at_desc ..."
+  $as_echo "164. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46153,13 +48675,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_158
-#AT_START_159
-at_fn_group_banner 159 'conflicts.at:945' \
+#AT_STOP_164
+#AT_START_165
+at_fn_group_banner 165 'conflicts.at:945' \
   "%expect with reduce conflicts" "                  " 10
 at_xfail=no
 (
-  $as_echo "159. $at_setup_line: testing $at_desc ..."
+  $as_echo "165. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46193,13 +48715,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_159
-#AT_START_160
-at_fn_group_banner 160 'conflicts.at:965' \
+#AT_STOP_165
+#AT_START_166
+at_fn_group_banner 166 'conflicts.at:965' \
   "%prec with user string" "                         " 10
 at_xfail=no
 (
-  $as_echo "160. $at_setup_line: testing $at_desc ..."
+  $as_echo "166. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46301,13 +48823,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_160
-#AT_START_161
-at_fn_group_banner 161 'conflicts.at:982' \
+#AT_STOP_166
+#AT_START_167
+at_fn_group_banner 167 'conflicts.at:982' \
   "%no-default-prec without %prec" "                 " 10
 at_xfail=no
 (
-  $as_echo "161. $at_setup_line: testing $at_desc ..."
+  $as_echo "167. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46418,13 +48940,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_161
-#AT_START_162
-at_fn_group_banner 162 'conflicts.at:1008' \
+#AT_STOP_167
+#AT_START_168
+at_fn_group_banner 168 'conflicts.at:1008' \
   "%no-default-prec with %prec" "                    " 10
 at_xfail=no
 (
-  $as_echo "162. $at_setup_line: testing $at_desc ..."
+  $as_echo "168. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46533,13 +49055,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_162
-#AT_START_163
-at_fn_group_banner 163 'conflicts.at:1032' \
+#AT_STOP_168
+#AT_START_169
+at_fn_group_banner 169 'conflicts.at:1032' \
   "%default-prec" "                                  " 10
 at_xfail=no
 (
-  $as_echo "163. $at_setup_line: testing $at_desc ..."
+  $as_echo "169. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -46648,13 +49170,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_163
-#AT_START_164
-at_fn_group_banner 164 'conflicts.at:1056' \
+#AT_STOP_169
+#AT_START_170
+at_fn_group_banner 170 'conflicts.at:1056' \
   "Unreachable States After Conflict Resolution" "   " 10
 at_xfail=no
 (
-  $as_echo "164. $at_setup_line: testing $at_desc ..."
+  $as_echo "170. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_164
-#AT_START_165
-at_fn_group_banner 165 'conflicts.at:1267' \
+#AT_STOP_170
+#AT_START_171
+at_fn_group_banner 171 'conflicts.at:1267' \
   "Solved conflicts report for multiple reductions in a state" "" 10
 at_xfail=no
 (
-  $as_echo "165. $at_setup_line: testing $at_desc ..."
+  $as_echo "171. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -47482,13 +50004,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_165
-#AT_START_166
-at_fn_group_banner 166 'conflicts.at:1347' \
+#AT_STOP_171
+#AT_START_172
+at_fn_group_banner 172 'conflicts.at:1347' \
   "%nonassoc error actions for multiple reductions in a state" "" 10
 at_xfail=no
 (
-  $as_echo "166. $at_setup_line: testing $at_desc ..."
+  $as_echo "172. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -47654,13 +50176,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_166
-#AT_START_167
-at_fn_group_banner 167 'conflicts.at:1416' \
+#AT_STOP_172
+#AT_START_173
+at_fn_group_banner 173 'conflicts.at:1416' \
   "-W versus %expect and %expect-rr" "               " 10
 at_xfail=no
 (
-  $as_echo "167. $at_setup_line: testing $at_desc ..."
+  $as_echo "173. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48216,13 +50738,13 @@ done
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_167
-#AT_START_168
-at_fn_group_banner 168 'calc.at:616' \
+#AT_STOP_173
+#AT_START_174
+at_fn_group_banner 174 'calc.at:630' \
   "Calculator " "                                    " 11
 at_xfail=no
 (
-  $as_echo "168. $at_setup_line: testing $at_desc ..."
+  $as_echo "174. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48350,7 +50872,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -48486,7 +51007,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -48502,9 +51022,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:616: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:630: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:616"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:630"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -48512,29 +51032,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:616: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:630"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:616: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:630: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:616"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:630"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -48543,16 +51063,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:616: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:630: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:616"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:630"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -48561,7 +51081,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48569,33 +51089,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:616: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:616: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:630"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:630: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:630"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:630: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:630"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -48615,28 +51167,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48649,28 +51201,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48708,15 +51260,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48726,28 +51278,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48785,15 +51337,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48803,28 +51355,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48862,15 +51414,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48880,28 +51432,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48939,15 +51491,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48958,28 +51510,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49017,43 +51569,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49091,15 +51643,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49126,28 +51678,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49189,15 +51741,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49210,28 +51762,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49270,15 +51822,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49288,28 +51840,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49349,15 +51901,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49370,28 +51922,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:616: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49431,15 +51983,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:616: cat stderr"
-at_fn_check_prepare_trace "calc.at:616"
+$as_echo "$at_srcdir/calc.at:630: cat stderr"
+at_fn_check_prepare_trace "calc.at:630"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49451,13 +52003,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_168
-#AT_START_169
-at_fn_group_banner 169 'calc.at:618' \
+#AT_STOP_174
+#AT_START_175
+at_fn_group_banner 175 'calc.at:632' \
   "Calculator %defines" "                            " 11
 at_xfail=no
 (
-  $as_echo "169. $at_setup_line: testing $at_desc ..."
+  $as_echo "175. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -49585,8 +52137,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -49760,9 +52310,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:618: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:632: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:618"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:632"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -49770,29 +52320,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:618: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:632"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:618: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:632: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:618"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:632"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -49801,16 +52351,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:618: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:632: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:618"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:632"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -49819,7 +52369,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49827,29 +52377,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:618: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:618: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:632"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:632: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:632"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:632: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:632"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:632: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:632"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:632: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:632"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49873,28 +52485,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49907,28 +52519,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49966,15 +52578,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49984,28 +52596,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50043,15 +52655,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50061,28 +52673,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50120,15 +52732,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50138,28 +52750,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50197,15 +52809,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50216,28 +52828,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50275,43 +52887,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50349,15 +52961,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50384,28 +52996,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50447,15 +53059,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50468,28 +53080,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50528,15 +53140,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50546,28 +53158,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50607,15 +53219,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50628,28 +53240,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:618: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50689,15 +53301,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:618: cat stderr"
-at_fn_check_prepare_trace "calc.at:618"
+$as_echo "$at_srcdir/calc.at:632: cat stderr"
+at_fn_check_prepare_trace "calc.at:632"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50709,13 +53321,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_169
-#AT_START_170
-at_fn_group_banner 170 'calc.at:619' \
+#AT_STOP_175
+#AT_START_176
+at_fn_group_banner 176 'calc.at:633' \
   "Calculator %locations" "                          " 11
 at_xfail=no
 (
-  $as_echo "170. $at_setup_line: testing $at_desc ..."
+  $as_echo "176. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -50852,7 +53464,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -51007,7 +53618,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -51023,9 +53633,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:619: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:633: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:619"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:633"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -51033,29 +53643,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:619: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:633"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:619: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:633: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:619"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:633"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -51064,16 +53674,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:619: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:633: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:619"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:633"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -51082,7 +53692,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51090,34 +53700,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:619: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:619: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:633"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:633: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:633"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:633: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:633"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -51136,28 +53778,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51170,28 +53812,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51228,15 +53870,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51246,28 +53888,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51304,15 +53946,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51322,28 +53964,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51380,15 +54022,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51398,28 +54040,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51456,15 +54098,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51475,28 +54117,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51533,43 +54175,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51606,15 +54248,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51641,28 +54283,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51703,15 +54345,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51724,28 +54366,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51783,15 +54425,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51801,28 +54443,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51861,15 +54503,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51882,28 +54524,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:619: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51942,15 +54584,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:619: cat stderr"
-at_fn_check_prepare_trace "calc.at:619"
+$as_echo "$at_srcdir/calc.at:633: cat stderr"
+at_fn_check_prepare_trace "calc.at:633"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51962,13 +54604,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_170
-#AT_START_171
-at_fn_group_banner 171 'calc.at:621' \
+#AT_STOP_176
+#AT_START_177
+at_fn_group_banner 177 'calc.at:635' \
   "Calculator %name-prefix=\"calc\"" "                 " 11
 at_xfail=no
 (
-  $as_echo "171. $at_setup_line: testing $at_desc ..."
+  $as_echo "177. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -52096,7 +54738,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -52232,7 +54873,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -52248,9 +54888,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:621: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:635: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:621"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:635"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -52258,29 +54898,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:621: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:635"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:621: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:635: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:621"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:635"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -52289,16 +54929,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:621: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:635: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:621"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:635"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -52307,7 +54947,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52315,32 +54955,64 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:621: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:621: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:635"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:635: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:635"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:635: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:635"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
 
 
 # Test the priorities.
@@ -52361,28 +55033,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52395,28 +55067,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52454,15 +55126,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52472,28 +55144,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52531,15 +55203,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52549,28 +55221,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52608,15 +55280,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52626,28 +55298,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52685,15 +55357,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52704,28 +55376,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52763,43 +55435,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52837,15 +55509,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52872,28 +55544,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52935,15 +55607,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52956,28 +55628,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53016,15 +55688,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53034,28 +55706,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53095,15 +55767,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53116,28 +55788,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:621: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53177,15 +55849,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:621: cat stderr"
-at_fn_check_prepare_trace "calc.at:621"
+$as_echo "$at_srcdir/calc.at:635: cat stderr"
+at_fn_check_prepare_trace "calc.at:635"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53197,13 +55869,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_171
-#AT_START_172
-at_fn_group_banner 172 'calc.at:622' \
+#AT_STOP_177
+#AT_START_178
+at_fn_group_banner 178 'calc.at:636' \
   "Calculator %verbose" "                            " 11
 at_xfail=no
 (
-  $as_echo "172. $at_setup_line: testing $at_desc ..."
+  $as_echo "178. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -53331,7 +56003,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -53467,7 +56138,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -53483,9 +56153,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:622: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:636: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:622"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:636"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -53493,29 +56163,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:622: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:636"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:622: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:636: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:622"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:636"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -53524,16 +56194,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:622: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:636: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:622"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:636"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -53542,7 +56212,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53550,33 +56220,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:622: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:622: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:636"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:636: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:636"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:636: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:636"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -53596,28 +56298,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53630,28 +56332,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53689,15 +56391,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53707,28 +56409,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53766,15 +56468,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53784,28 +56486,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53843,15 +56545,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53861,28 +56563,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53920,15 +56622,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53939,28 +56641,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53998,43 +56700,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54072,15 +56774,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54107,28 +56809,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54170,15 +56872,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54191,28 +56893,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54251,15 +56953,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54269,28 +56971,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54330,15 +57032,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54351,28 +57053,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:622: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54412,15 +57114,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:622: cat stderr"
-at_fn_check_prepare_trace "calc.at:622"
+$as_echo "$at_srcdir/calc.at:636: cat stderr"
+at_fn_check_prepare_trace "calc.at:636"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:622"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54432,13 +57134,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_172
-#AT_START_173
-at_fn_group_banner 173 'calc.at:623' \
+#AT_STOP_178
+#AT_START_179
+at_fn_group_banner 179 'calc.at:637' \
   "Calculator %yacc" "                               " 11
 at_xfail=no
 (
-  $as_echo "173. $at_setup_line: testing $at_desc ..."
+  $as_echo "179. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -54566,7 +57268,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -54702,7 +57403,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -54718,9 +57418,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:623: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:637: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:623"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:637"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -54728,29 +57428,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:623: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:637"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:623: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:637: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:623"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:637"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -54759,16 +57459,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:623: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:637: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:623"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:637"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -54777,7 +57477,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54785,32 +57485,64 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:623: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:623: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:637"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:637: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:637"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:637: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:637"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
 
 
 # Test the priorities.
@@ -54831,28 +57563,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54865,28 +57597,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54924,15 +57656,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54942,28 +57674,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55001,15 +57733,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55019,28 +57751,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55078,15 +57810,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55096,28 +57828,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55155,15 +57887,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55174,28 +57906,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55233,43 +57965,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55307,15 +58039,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55342,28 +58074,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55405,15 +58137,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55426,28 +58158,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55486,15 +58218,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55504,28 +58236,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55565,15 +58297,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55586,28 +58318,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:623: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55647,15 +58379,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:623: cat stderr"
-at_fn_check_prepare_trace "calc.at:623"
+$as_echo "$at_srcdir/calc.at:637: cat stderr"
+at_fn_check_prepare_trace "calc.at:637"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55667,13 +58399,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_173
-#AT_START_174
-at_fn_group_banner 174 'calc.at:624' \
+#AT_STOP_179
+#AT_START_180
+at_fn_group_banner 180 'calc.at:638' \
   "Calculator %error-verbose" "                      " 11
 at_xfail=no
 (
-  $as_echo "174. $at_setup_line: testing $at_desc ..."
+  $as_echo "180. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -55801,7 +58533,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -55937,7 +58668,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -55953,9 +58683,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:624: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:638: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:624"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:638"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -55963,29 +58693,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:624: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:638"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:624: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:638: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:624"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:638"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -55994,16 +58724,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:624: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:638: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:624"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:638"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -56012,7 +58742,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56020,33 +58750,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:624: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:624: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:638"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:638: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:638"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:638: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:638"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -56066,28 +58828,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56100,28 +58862,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56158,15 +58920,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56176,28 +58938,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56234,15 +58996,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56252,28 +59014,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56310,15 +59072,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56328,28 +59090,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56386,15 +59148,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56405,28 +59167,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56463,43 +59225,43 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56536,15 +59298,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56571,28 +59333,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56633,15 +59395,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56654,28 +59416,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56713,15 +59475,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56731,28 +59493,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56791,15 +59553,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56812,28 +59574,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:624: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56872,15 +59634,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:624: cat stderr"
-at_fn_check_prepare_trace "calc.at:624"
+$as_echo "$at_srcdir/calc.at:638: cat stderr"
+at_fn_check_prepare_trace "calc.at:638"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:624"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56892,13 +59654,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_174
-#AT_START_175
-at_fn_group_banner 175 'calc.at:626' \
+#AT_STOP_180
+#AT_START_181
+at_fn_group_banner 181 'calc.at:640' \
   "Calculator %define api.pure %locations" "         " 11
 at_xfail=no
 (
-  $as_echo "175. $at_setup_line: testing $at_desc ..."
+  $as_echo "181. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -57026,7 +59788,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
@@ -57181,7 +59942,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -57197,9 +59957,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:626: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:640: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:626"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:640"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -57207,29 +59967,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:626: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:640"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:626: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:640: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:626"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:640"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -57238,16 +59998,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:626: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:640: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:626"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:640"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -57256,7 +60016,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57264,34 +60024,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:626: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:626: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:640"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:640: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:640"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:640: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:640"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -57310,28 +60102,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57344,28 +60136,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57403,15 +60195,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57421,28 +60213,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57480,15 +60272,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57498,28 +60290,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57557,15 +60349,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57575,28 +60367,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57634,15 +60426,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57653,28 +60445,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57712,43 +60504,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57786,15 +60578,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57821,28 +60613,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57884,15 +60676,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57905,28 +60697,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57965,15 +60757,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57983,28 +60775,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58044,15 +60836,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58065,28 +60857,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:626: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58126,15 +60918,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:626: cat stderr"
-at_fn_check_prepare_trace "calc.at:626"
+$as_echo "$at_srcdir/calc.at:640: cat stderr"
+at_fn_check_prepare_trace "calc.at:640"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:626"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58146,13 +60938,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_175
-#AT_START_176
-at_fn_group_banner 176 'calc.at:627' \
+#AT_STOP_181
+#AT_START_182
+at_fn_group_banner 182 'calc.at:641' \
   "Calculator %define api.push-pull both %define api.pure %locations" "" 11
 at_xfail=no
 (
-  $as_echo "176. $at_setup_line: testing $at_desc ..."
+  $as_echo "182. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -58280,7 +61072,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
@@ -58435,7 +61226,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -58451,9 +61241,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:627: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:641: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:627"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:641"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -58461,29 +61251,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:627: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:641"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:627: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:641: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:627"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:641"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -58492,16 +61282,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:627: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:641: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:627"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:641"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -58510,7 +61300,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58518,34 +61308,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:627: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:627: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:641"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:641: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:641"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:641: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:641"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -58564,28 +61386,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58598,28 +61420,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58657,15 +61479,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58675,28 +61497,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58734,15 +61556,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58752,28 +61574,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58811,15 +61633,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58829,28 +61651,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58888,15 +61710,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58907,28 +61729,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58966,43 +61788,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59040,15 +61862,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59075,28 +61897,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59138,15 +61960,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59159,28 +61981,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59219,15 +62041,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59237,28 +62059,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59298,15 +62120,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59319,28 +62141,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:627: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59380,15 +62202,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:627: cat stderr"
-at_fn_check_prepare_trace "calc.at:627"
+$as_echo "$at_srcdir/calc.at:641: cat stderr"
+at_fn_check_prepare_trace "calc.at:641"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:627"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59400,13 +62222,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_176
-#AT_START_177
-at_fn_group_banner 177 'calc.at:628' \
+#AT_STOP_182
+#AT_START_183
+at_fn_group_banner 183 'calc.at:642' \
   "Calculator %error-verbose %locations" "           " 11
 at_xfail=no
 (
-  $as_echo "177. $at_setup_line: testing $at_desc ..."
+  $as_echo "183. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -59543,7 +62365,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -59698,7 +62519,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -59714,9 +62534,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:642: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:628"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:642"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -59724,29 +62544,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:642"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:642: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:642"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -59755,16 +62575,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:642: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:642"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -59773,7 +62593,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59781,33 +62601,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:628: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:628: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:642"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:642: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:642"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:642: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:642"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -59827,28 +62679,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59861,28 +62713,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59918,15 +62770,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59936,28 +62788,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59993,15 +62845,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60011,28 +62863,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60068,15 +62920,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60086,28 +62938,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60143,15 +62995,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60162,28 +63014,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60219,43 +63071,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60291,15 +63143,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60326,28 +63178,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60387,15 +63239,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60408,28 +63260,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60466,15 +63318,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60484,28 +63336,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60543,15 +63395,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60564,28 +63416,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60623,15 +63475,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:628: cat stderr"
-at_fn_check_prepare_trace "calc.at:628"
+$as_echo "$at_srcdir/calc.at:642: cat stderr"
+at_fn_check_prepare_trace "calc.at:642"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60643,13 +63495,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_177
-#AT_START_178
-at_fn_group_banner 178 'calc.at:630' \
+#AT_STOP_183
+#AT_START_184
+at_fn_group_banner 184 'calc.at:644' \
   "Calculator %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "178. $at_setup_line: testing $at_desc ..."
+  $as_echo "184. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -60786,8 +63638,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -60980,9 +63830,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:630: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:644: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:630"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:644"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -60990,29 +63840,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:630: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:644"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:630: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:644: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:630"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:644"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -61021,16 +63871,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:630: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:644: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:630"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:644"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -61039,7 +63889,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61047,29 +63897,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:630: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:630: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:644"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:644: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:644"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:644: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:644"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:644: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:644"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:644: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:644"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61093,28 +64005,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61127,28 +64039,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61184,15 +64096,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61202,28 +64114,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61259,15 +64171,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61277,28 +64189,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61334,15 +64246,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61352,28 +64264,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61409,15 +64321,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61428,28 +64340,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61485,43 +64397,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61557,15 +64469,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61592,28 +64504,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61653,15 +64565,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61674,28 +64586,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61732,15 +64644,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61750,28 +64662,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61809,15 +64721,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61830,28 +64742,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:630: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61889,15 +64801,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:630: cat stderr"
-at_fn_check_prepare_trace "calc.at:630"
+$as_echo "$at_srcdir/calc.at:644: cat stderr"
+at_fn_check_prepare_trace "calc.at:644"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61909,13 +64821,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_178
-#AT_START_179
-at_fn_group_banner 179 'calc.at:631' \
+#AT_STOP_184
+#AT_START_185
+at_fn_group_banner 185 'calc.at:645' \
   "Calculator %error-verbose %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "179. $at_setup_line: testing $at_desc ..."
+  $as_echo "185. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -62052,8 +64964,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -62246,9 +65156,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:631: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:645: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:631"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:645"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -62256,29 +65166,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:631: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:645"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:631: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:645: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:631"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:645"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -62287,16 +65197,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:631: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:645: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:631"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:645"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -62305,7 +65215,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62313,29 +65223,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:631: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:631: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:645"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:645: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:645"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:645: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:645"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:645: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:645"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:645: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:645"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62359,28 +65331,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62393,28 +65365,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62450,15 +65422,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62468,28 +65440,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62525,15 +65497,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62543,28 +65515,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62600,15 +65572,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62618,28 +65590,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62675,15 +65647,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62694,28 +65666,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62751,43 +65723,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62823,15 +65795,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62858,28 +65830,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62919,15 +65891,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62940,28 +65912,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62998,15 +65970,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63016,28 +65988,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63075,15 +66047,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63096,28 +66068,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:631: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63155,15 +66127,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:631: cat stderr"
-at_fn_check_prepare_trace "calc.at:631"
+$as_echo "$at_srcdir/calc.at:645: cat stderr"
+at_fn_check_prepare_trace "calc.at:645"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:631"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63175,13 +66147,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_179
-#AT_START_180
-at_fn_group_banner 180 'calc.at:633' \
+#AT_STOP_185
+#AT_START_186
+at_fn_group_banner 186 'calc.at:647' \
   "Calculator %debug" "                              " 11
 at_xfail=no
 (
-  $as_echo "180. $at_setup_line: testing $at_desc ..."
+  $as_echo "186. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -63309,7 +66281,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -63445,7 +66416,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -63461,9 +66431,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:633: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:647: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:633"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:647"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -63471,29 +66441,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:633: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:647"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:633: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:647: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:633"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:647"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -63502,16 +66472,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:633: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:647: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:633"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:647"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -63520,7 +66490,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63528,34 +66498,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:633: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:633: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:647"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:647: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:647"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:647: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:647"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -63574,28 +66576,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63608,28 +66610,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63667,15 +66669,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63685,28 +66687,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63744,15 +66746,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63762,28 +66764,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63821,15 +66823,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63839,28 +66841,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63898,15 +66900,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63917,28 +66919,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63976,43 +66978,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64050,15 +67052,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64085,28 +67087,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64148,15 +67150,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64169,28 +67171,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64229,15 +67231,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64247,28 +67249,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64308,15 +67310,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64329,28 +67331,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:633: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64390,15 +67392,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:633: cat stderr"
-at_fn_check_prepare_trace "calc.at:633"
+$as_echo "$at_srcdir/calc.at:647: cat stderr"
+at_fn_check_prepare_trace "calc.at:647"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64410,13 +67412,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_180
-#AT_START_181
-at_fn_group_banner 181 'calc.at:634' \
+#AT_STOP_186
+#AT_START_187
+at_fn_group_banner 187 'calc.at:648' \
   "Calculator %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "181. $at_setup_line: testing $at_desc ..."
+  $as_echo "187. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -64553,8 +67555,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -64747,9 +67747,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:634: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:634"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:648"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -64757,29 +67757,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:634: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:648"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:634: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:648: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:634"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:648"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -64788,16 +67788,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:634: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:648: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:634"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:648"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -64806,7 +67806,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64814,29 +67814,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:634: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:634: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:648"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:648: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:648"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:648: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:648"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:648: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:648"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:648: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:648"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64860,28 +67922,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64894,28 +67956,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64951,15 +68013,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64969,28 +68031,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65026,15 +68088,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65044,28 +68106,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65101,15 +68163,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65119,28 +68181,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65176,15 +68238,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65195,28 +68257,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65252,43 +68314,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65324,15 +68386,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65359,28 +68421,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65420,15 +68482,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65441,28 +68503,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65499,15 +68561,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65517,28 +68579,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65576,15 +68638,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65597,28 +68659,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:634: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65656,15 +68718,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:634: cat stderr"
-at_fn_check_prepare_trace "calc.at:634"
+$as_echo "$at_srcdir/calc.at:648: cat stderr"
+at_fn_check_prepare_trace "calc.at:648"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:634"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65676,13 +68738,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_181
-#AT_START_182
-at_fn_group_banner 182 'calc.at:635' \
+#AT_STOP_187
+#AT_START_188
+at_fn_group_banner 188 'calc.at:649' \
   "Calculator %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "182. $at_setup_line: testing $at_desc ..."
+  $as_echo "188. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -65819,8 +68881,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -66013,9 +69073,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:635: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:649: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:635"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:649"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -66023,29 +69083,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:635: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:649"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:635: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:649: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:635"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:649"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -66054,16 +69114,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:635: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:649: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:635"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:649"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -66072,7 +69132,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66080,29 +69140,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:635: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:635: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:649"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:649: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:649"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:649: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:649"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:649: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:649"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:649: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:649"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66126,28 +69248,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66160,28 +69282,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66217,15 +69339,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66235,28 +69357,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66292,15 +69414,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66310,28 +69432,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66367,15 +69489,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66385,28 +69507,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66442,15 +69564,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66461,28 +69583,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66518,43 +69640,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66590,15 +69712,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66625,28 +69747,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66686,15 +69808,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66707,28 +69829,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66765,15 +69887,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66783,28 +69905,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66842,15 +69964,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66863,28 +69985,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:635: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66922,15 +70044,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:635: cat stderr"
-at_fn_check_prepare_trace "calc.at:635"
+$as_echo "$at_srcdir/calc.at:649: cat stderr"
+at_fn_check_prepare_trace "calc.at:649"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66942,13 +70064,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_182
-#AT_START_183
-at_fn_group_banner 183 'calc.at:637' \
+#AT_STOP_188
+#AT_START_189
+at_fn_group_banner 189 'calc.at:651' \
   "Calculator %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "183. $at_setup_line: testing $at_desc ..."
+  $as_echo "189. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -67076,8 +70198,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -67270,9 +70390,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:637: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:651: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:637"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:651"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -67280,29 +70400,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:637: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:651"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:637: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:651: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:637"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:651"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -67311,16 +70431,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:637: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:651: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:637"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:651"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -67329,7 +70449,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67337,29 +70457,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:637: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:637: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:651"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:651: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:651"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:651: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:651"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:651: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:651"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:651: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:651"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67383,28 +70565,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67417,28 +70599,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67475,15 +70657,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67493,28 +70675,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67551,15 +70733,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67569,28 +70751,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67627,15 +70809,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67645,28 +70827,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67703,15 +70885,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67722,28 +70904,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67780,43 +70962,43 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67853,15 +71035,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67888,28 +71070,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67950,15 +71132,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67971,28 +71153,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68030,15 +71212,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68048,28 +71230,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68108,15 +71290,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68129,28 +71311,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:637: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68189,15 +71371,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:637: cat stderr"
-at_fn_check_prepare_trace "calc.at:637"
+$as_echo "$at_srcdir/calc.at:651: cat stderr"
+at_fn_check_prepare_trace "calc.at:651"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68209,13 +71391,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_183
-#AT_START_184
-at_fn_group_banner 184 'calc.at:638' \
+#AT_STOP_189
+#AT_START_190
+at_fn_group_banner 190 'calc.at:652' \
   "Calculator %define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "184. $at_setup_line: testing $at_desc ..."
+  $as_echo "190. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -68343,8 +71525,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -68537,9 +71717,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:638: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:652: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:638"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:652"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -68547,29 +71727,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:638: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:652"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:638: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:652: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:638"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:652"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -68578,16 +71758,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:638: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:652: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:638"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:652"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -68596,7 +71776,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68604,29 +71784,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:638: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:638: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:652"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:652: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:652"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:652: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:652"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:652: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:652"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:652: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:652"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68650,28 +71892,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68684,28 +71926,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68742,15 +71984,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68760,28 +72002,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68818,15 +72060,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68836,28 +72078,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68894,15 +72136,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68912,28 +72154,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68970,15 +72212,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68989,28 +72231,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69047,43 +72289,43 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69120,15 +72362,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69155,28 +72397,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69217,15 +72459,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69238,28 +72480,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69297,15 +72539,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69315,28 +72557,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69375,15 +72617,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69396,28 +72638,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:638: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69456,15 +72698,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:638: cat stderr"
-at_fn_check_prepare_trace "calc.at:638"
+$as_echo "$at_srcdir/calc.at:652: cat stderr"
+at_fn_check_prepare_trace "calc.at:652"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69476,13 +72718,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_184
-#AT_START_185
-at_fn_group_banner 185 'calc.at:640' \
+#AT_STOP_190
+#AT_START_191
+at_fn_group_banner 191 'calc.at:654' \
   "Calculator %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 11
 at_xfail=no
 (
-  $as_echo "185. $at_setup_line: testing $at_desc ..."
+  $as_echo "191. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -69619,8 +72861,6 @@ yyerror (CALCLTYPE *llocp,
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -69813,9 +73053,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:640: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:654: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:640"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:654"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -69823,29 +73063,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:640: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:654"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:640: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:654: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:640"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:654"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -69854,16 +73094,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:640: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:654: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:640"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:654"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -69872,7 +73112,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69880,29 +73120,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:640: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:640: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:654"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:654: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:654"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:654: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:654"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:654: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:654"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:654: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:654"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69926,28 +73228,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69960,28 +73262,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70017,15 +73319,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70035,28 +73337,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70092,15 +73394,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70110,28 +73412,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70167,15 +73469,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70185,28 +73487,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70242,15 +73544,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70261,28 +73563,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70318,43 +73620,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70390,15 +73692,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70425,28 +73727,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70486,15 +73788,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70507,28 +73809,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70565,15 +73867,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70583,28 +73885,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70642,15 +73944,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70663,28 +73965,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:640: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70722,15 +74024,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:640: cat stderr"
-at_fn_check_prepare_trace "calc.at:640"
+$as_echo "$at_srcdir/calc.at:654: cat stderr"
+at_fn_check_prepare_trace "calc.at:654"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70742,13 +74044,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_185
-#AT_START_186
-at_fn_group_banner 186 'calc.at:657' \
+#AT_STOP_191
+#AT_START_192
+at_fn_group_banner 192 'calc.at:671' \
   "Calculator %glr-parser " "                        " 12
 at_xfail=no
 (
-  $as_echo "186. $at_setup_line: testing $at_desc ..."
+  $as_echo "192. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -70876,7 +74178,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -71012,7 +74313,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -71028,9 +74328,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:657: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:671: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:657"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:671"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -71038,29 +74338,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:657: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:671"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:657: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:671: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:657"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:671"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -71069,16 +74369,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:657: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:671: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:657"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:671"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -71087,7 +74387,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71095,34 +74395,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:657: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:657: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:671"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:671: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:671"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:671: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:671"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -71141,28 +74473,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71175,28 +74507,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71234,15 +74566,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71252,28 +74584,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71311,15 +74643,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71329,28 +74661,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71388,15 +74720,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71406,28 +74738,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71465,15 +74797,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71484,28 +74816,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71543,43 +74875,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71617,15 +74949,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71652,28 +74984,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71715,15 +75047,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71736,28 +75068,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71796,15 +75128,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71814,28 +75146,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71875,15 +75207,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71896,28 +75228,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:657: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71957,15 +75289,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:657: cat stderr"
-at_fn_check_prepare_trace "calc.at:657"
+$as_echo "$at_srcdir/calc.at:671: cat stderr"
+at_fn_check_prepare_trace "calc.at:671"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71977,13 +75309,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_186
-#AT_START_187
-at_fn_group_banner 187 'calc.at:659' \
+#AT_STOP_192
+#AT_START_193
+at_fn_group_banner 193 'calc.at:673' \
   "Calculator %glr-parser %defines" "                " 12
 at_xfail=no
 (
-  $as_echo "187. $at_setup_line: testing $at_desc ..."
+  $as_echo "193. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -72111,8 +75443,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -72286,9 +75616,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:659: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:673: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:659"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:673"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -72296,29 +75626,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:659: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:673"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:659: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:673: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:659"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:673"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -72327,16 +75657,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:659: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:673: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:659"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:673"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -72345,7 +75675,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72353,29 +75683,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:659: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:659: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:673"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:673: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:673"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:673: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:673"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:673: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:673"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:673: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:673"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72399,28 +75791,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72433,28 +75825,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72492,15 +75884,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72510,28 +75902,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72569,15 +75961,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72587,28 +75979,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72646,15 +76038,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72664,28 +76056,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72723,15 +76115,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72742,28 +76134,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72801,43 +76193,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72875,15 +76267,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72910,28 +76302,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72973,15 +76365,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72994,28 +76386,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73054,15 +76446,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73072,28 +76464,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73133,15 +76525,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73154,28 +76546,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:659: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73215,15 +76607,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:659: cat stderr"
-at_fn_check_prepare_trace "calc.at:659"
+$as_echo "$at_srcdir/calc.at:673: cat stderr"
+at_fn_check_prepare_trace "calc.at:673"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73235,13 +76627,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_187
-#AT_START_188
-at_fn_group_banner 188 'calc.at:660' \
+#AT_STOP_193
+#AT_START_194
+at_fn_group_banner 194 'calc.at:674' \
   "Calculator %glr-parser %locations" "              " 12
 at_xfail=no
 (
-  $as_echo "188. $at_setup_line: testing $at_desc ..."
+  $as_echo "194. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -73378,7 +76770,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -73533,7 +76924,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -73549,9 +76939,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:660: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:674: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:660"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:674"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -73559,29 +76949,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:660: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:674"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:660: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:674: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:660"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:674"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -73590,16 +76980,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:660: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:674: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:660"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:674"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -73608,7 +76998,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73616,33 +77006,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:660: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:660: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:674"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:674: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:674"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:674: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:674"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -73662,28 +77084,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73696,28 +77118,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73754,15 +77176,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73772,28 +77194,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73830,15 +77252,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73848,28 +77270,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73906,15 +77328,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73924,28 +77346,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73982,15 +77404,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74001,28 +77423,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74059,43 +77481,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74132,15 +77554,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74167,28 +77589,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74229,15 +77651,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74250,28 +77672,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74309,15 +77731,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74327,28 +77749,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74387,15 +77809,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74408,28 +77830,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:660: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74468,15 +77890,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:660: cat stderr"
-at_fn_check_prepare_trace "calc.at:660"
+$as_echo "$at_srcdir/calc.at:674: cat stderr"
+at_fn_check_prepare_trace "calc.at:674"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74488,13 +77910,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_188
-#AT_START_189
-at_fn_group_banner 189 'calc.at:661' \
+#AT_STOP_194
+#AT_START_195
+at_fn_group_banner 195 'calc.at:675' \
   "Calculator %glr-parser %name-prefix \"calc\"" "     " 12
 at_xfail=no
 (
-  $as_echo "189. $at_setup_line: testing $at_desc ..."
+  $as_echo "195. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -74622,7 +78044,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int calclex (void);
@@ -74758,7 +78179,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -74774,9 +78194,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:661: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:675: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:661"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:675"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -74784,29 +78204,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:661: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:675"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:661: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:675: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:661"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:675"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -74815,16 +78235,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:661: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:675: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:661"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:675"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -74833,7 +78253,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74841,33 +78261,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:661: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:661: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:675"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:675: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:675"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:675: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:675"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -74887,28 +78339,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74921,28 +78373,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74980,15 +78432,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74998,28 +78450,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75057,15 +78509,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75075,28 +78527,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75134,15 +78586,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75152,28 +78604,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75211,15 +78663,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75230,28 +78682,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75289,43 +78741,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75363,15 +78815,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75398,28 +78850,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75461,15 +78913,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75482,28 +78934,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75542,15 +78994,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75560,28 +79012,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75621,15 +79073,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75642,28 +79094,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:661: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75703,15 +79155,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:661: cat stderr"
-at_fn_check_prepare_trace "calc.at:661"
+$as_echo "$at_srcdir/calc.at:675: cat stderr"
+at_fn_check_prepare_trace "calc.at:675"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75723,13 +79175,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_189
-#AT_START_190
-at_fn_group_banner 190 'calc.at:662' \
+#AT_STOP_195
+#AT_START_196
+at_fn_group_banner 196 'calc.at:676' \
   "Calculator %glr-parser %define api.prefix \"calc\"" "" 12
 at_xfail=no
 (
-  $as_echo "190. $at_setup_line: testing $at_desc ..."
+  $as_echo "196. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -75857,7 +79309,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int calclex (void);
@@ -75993,7 +79444,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -76009,9 +79459,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:662: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:676: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:662"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:676"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -76019,29 +79469,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:662: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:676"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:662: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:676: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:662"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:676"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -76050,16 +79500,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:662: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:676: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:662"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:676"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -76068,7 +79518,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76076,33 +79526,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:662: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:662: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:676"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:676: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:676"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:676: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:676"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -76122,28 +79604,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76156,28 +79638,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76215,15 +79697,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76233,28 +79715,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76292,15 +79774,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76310,28 +79792,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76369,15 +79851,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76387,28 +79869,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76446,15 +79928,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76465,28 +79947,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76524,43 +80006,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76598,15 +80080,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76633,28 +80115,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76696,15 +80178,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76717,28 +80199,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76777,15 +80259,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76795,28 +80277,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76856,15 +80338,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76877,28 +80359,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:662: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76938,15 +80420,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:662: cat stderr"
-at_fn_check_prepare_trace "calc.at:662"
+$as_echo "$at_srcdir/calc.at:676: cat stderr"
+at_fn_check_prepare_trace "calc.at:676"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:662"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76958,13 +80440,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_190
-#AT_START_191
-at_fn_group_banner 191 'calc.at:663' \
+#AT_STOP_196
+#AT_START_197
+at_fn_group_banner 197 'calc.at:677' \
   "Calculator %glr-parser %verbose" "                " 12
 at_xfail=no
 (
-  $as_echo "191. $at_setup_line: testing $at_desc ..."
+  $as_echo "197. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -77092,7 +80574,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -77228,7 +80709,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -77244,9 +80724,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:663: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:677: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:663"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:677"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -77254,29 +80734,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:663: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:677"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:663: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:677: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:663"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:677"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -77285,16 +80765,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:663: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:677: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:663"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:677"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -77303,7 +80783,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77311,34 +80791,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:663: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:663: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:677"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:677: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:677"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:677: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:677"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -77357,28 +80869,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77391,28 +80903,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77450,15 +80962,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77468,28 +80980,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77527,15 +81039,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77545,28 +81057,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77604,15 +81116,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77622,28 +81134,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77681,15 +81193,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77700,28 +81212,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77759,43 +81271,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77833,15 +81345,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77868,28 +81380,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77931,15 +81443,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77952,28 +81464,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78012,15 +81524,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78030,28 +81542,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78091,15 +81603,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78112,28 +81624,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78173,15 +81685,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:663: cat stderr"
-at_fn_check_prepare_trace "calc.at:663"
+$as_echo "$at_srcdir/calc.at:677: cat stderr"
+at_fn_check_prepare_trace "calc.at:677"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:663"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78193,13 +81705,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_191
-#AT_START_192
-at_fn_group_banner 192 'calc.at:664' \
+#AT_STOP_197
+#AT_START_198
+at_fn_group_banner 198 'calc.at:678' \
   "Calculator %glr-parser %yacc" "                   " 12
 at_xfail=no
 (
-  $as_echo "192. $at_setup_line: testing $at_desc ..."
+  $as_echo "198. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -78327,7 +81839,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -78463,7 +81974,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -78479,9 +81989,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:678: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:664"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:678"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -78489,29 +81999,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:678"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:664: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:678: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:664"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:678"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -78520,16 +82030,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:664: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:678: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:664"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:678"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -78538,7 +82048,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78546,33 +82056,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:664: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:664: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:678"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:678: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:678"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:678: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:678"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -78592,28 +82134,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78626,28 +82168,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78685,15 +82227,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78703,28 +82245,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78762,15 +82304,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78780,28 +82322,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78839,15 +82381,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78857,28 +82399,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78916,15 +82458,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78935,28 +82477,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78994,43 +82536,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79068,15 +82610,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79103,28 +82645,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79166,15 +82708,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79187,28 +82729,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79247,15 +82789,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79265,28 +82807,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79326,15 +82868,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79347,28 +82889,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:664: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79408,15 +82950,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:664: cat stderr"
-at_fn_check_prepare_trace "calc.at:664"
+$as_echo "$at_srcdir/calc.at:678: cat stderr"
+at_fn_check_prepare_trace "calc.at:678"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:664"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79428,13 +82970,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_192
-#AT_START_193
-at_fn_group_banner 193 'calc.at:665' \
+#AT_STOP_198
+#AT_START_199
+at_fn_group_banner 199 'calc.at:679' \
   "Calculator %glr-parser %error-verbose" "          " 12
 at_xfail=no
 (
-  $as_echo "193. $at_setup_line: testing $at_desc ..."
+  $as_echo "199. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -79562,7 +83104,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -79698,7 +83239,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -79714,9 +83254,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:665: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:679: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:665"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:679"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -79724,29 +83264,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:665: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:679"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:665: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:679: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:665"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:679"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -79755,16 +83295,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:665: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:679: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:665"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:679"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -79773,7 +83313,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79781,33 +83321,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:665: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:665: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:679"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:679: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:679"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:679: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:679"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -79827,28 +83399,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79861,28 +83433,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79919,15 +83491,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79937,28 +83509,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79995,15 +83567,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80013,28 +83585,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80071,15 +83643,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80089,28 +83661,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80147,15 +83719,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80166,28 +83738,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80224,43 +83796,43 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80297,15 +83869,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80332,28 +83904,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80394,15 +83966,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80415,28 +83987,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80474,15 +84046,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80492,28 +84064,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80552,15 +84124,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80573,28 +84145,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:665: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80633,15 +84205,15 @@ mv at-expout expout
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:665: cat stderr"
-at_fn_check_prepare_trace "calc.at:665"
+$as_echo "$at_srcdir/calc.at:679: cat stderr"
+at_fn_check_prepare_trace "calc.at:679"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:665"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80653,13 +84225,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_193
-#AT_START_194
-at_fn_group_banner 194 'calc.at:667' \
+#AT_STOP_199
+#AT_START_200
+at_fn_group_banner 200 'calc.at:681' \
   "Calculator %glr-parser %define api.pure %locations" "" 12
 at_xfail=no
 (
-  $as_echo "194. $at_setup_line: testing $at_desc ..."
+  $as_echo "200. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -80796,7 +84368,6 @@ yyerror (YYLTYPE *llocp,
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
@@ -80951,7 +84522,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -80967,9 +84537,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:667: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:681: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:667"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:681"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -80977,29 +84547,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:667: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:681"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:667: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:681: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:667"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:681"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -81008,16 +84578,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:667: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:681: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:667"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:681"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -81026,7 +84596,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81034,34 +84604,66 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:667: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:667: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:681"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:681: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:681"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:681: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:681"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -81080,28 +84682,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81114,28 +84716,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81172,15 +84774,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81190,28 +84792,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81248,15 +84850,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81266,28 +84868,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81324,15 +84926,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81342,28 +84944,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81400,15 +85002,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81419,28 +85021,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81477,43 +85079,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81550,15 +85152,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81585,28 +85187,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81647,15 +85249,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81668,28 +85270,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81727,15 +85329,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81745,28 +85347,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81805,15 +85407,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81826,28 +85428,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81886,15 +85488,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:667: cat stderr"
-at_fn_check_prepare_trace "calc.at:667"
+$as_echo "$at_srcdir/calc.at:681: cat stderr"
+at_fn_check_prepare_trace "calc.at:681"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:667"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81906,13 +85508,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_194
-#AT_START_195
-at_fn_group_banner 195 'calc.at:668' \
+#AT_STOP_200
+#AT_START_201
+at_fn_group_banner 201 'calc.at:682' \
   "Calculator %glr-parser %error-verbose %locations" "" 12
 at_xfail=no
 (
-  $as_echo "195. $at_setup_line: testing $at_desc ..."
+  $as_echo "201. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -82049,7 +85651,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -82204,7 +85805,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -82220,9 +85820,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:668: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:682: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:668"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:682"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -82230,29 +85830,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:668: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:682"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:668: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:682: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:668"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:682"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -82261,16 +85861,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:668: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:682: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:668"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:682"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -82279,7 +85879,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82287,33 +85887,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:668: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:668: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:682"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:682: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:682"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:682: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:682"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -82333,28 +85965,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82367,28 +85999,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82424,15 +86056,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82442,28 +86074,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82499,15 +86131,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82517,28 +86149,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82574,15 +86206,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82592,28 +86224,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82649,15 +86281,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82668,28 +86300,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82725,43 +86357,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82797,15 +86429,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82832,28 +86464,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82893,15 +86525,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82914,28 +86546,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82972,15 +86604,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82990,28 +86622,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83049,15 +86681,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83070,28 +86702,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:668: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83129,15 +86761,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:668: cat stderr"
-at_fn_check_prepare_trace "calc.at:668"
+$as_echo "$at_srcdir/calc.at:682: cat stderr"
+at_fn_check_prepare_trace "calc.at:682"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:668"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83149,13 +86781,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_195
-#AT_START_196
-at_fn_group_banner 196 'calc.at:670' \
+#AT_STOP_201
+#AT_START_202
+at_fn_group_banner 202 'calc.at:684' \
   "Calculator %glr-parser %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "196. $at_setup_line: testing $at_desc ..."
+  $as_echo "202. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -83292,8 +86924,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -83486,9 +87116,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:670: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:684: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:670"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:684"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -83496,29 +87126,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:670: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:684"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:670: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:684: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:670"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:684"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -83527,16 +87157,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:670: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:684: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:670"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:684"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -83545,7 +87175,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83553,29 +87183,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:670: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:670: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:684"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:684: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:684"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:684: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:684"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:684: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:684"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:684: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:684"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83599,28 +87291,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83633,28 +87325,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83690,15 +87382,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83708,28 +87400,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83765,15 +87457,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83783,28 +87475,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83840,15 +87532,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83858,28 +87550,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83915,15 +87607,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83934,28 +87626,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83991,43 +87683,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84063,15 +87755,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84098,28 +87790,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84159,15 +87851,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84180,28 +87872,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84238,15 +87930,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84256,28 +87948,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84315,15 +88007,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84336,28 +88028,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:670: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84395,15 +88087,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:670: cat stderr"
-at_fn_check_prepare_trace "calc.at:670"
+$as_echo "$at_srcdir/calc.at:684: cat stderr"
+at_fn_check_prepare_trace "calc.at:684"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84415,13 +88107,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_196
-#AT_START_197
-at_fn_group_banner 197 'calc.at:672' \
+#AT_STOP_202
+#AT_START_203
+at_fn_group_banner 203 'calc.at:686' \
   "Calculator %glr-parser %debug" "                  " 12
 at_xfail=no
 (
-  $as_echo "197. $at_setup_line: testing $at_desc ..."
+  $as_echo "203. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -84549,7 +88241,6 @@ yyerror (
 
   fprintf (stderr, "%s\n", s);
 }
-
 #include <ctype.h>
 
 int yylex (void);
@@ -84685,7 +88376,6 @@ main (int argc, const char **argv)
   assert (global_count == count);
   return status;
 }
-
 _ATEOF
 
 
@@ -84701,9 +88391,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:672: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:686: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:672"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:686"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -84711,29 +88401,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:672: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:686"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:672: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:686: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:672"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:686"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -84742,16 +88432,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:672: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:686: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:672"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:686"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -84760,7 +88450,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84768,33 +88458,65 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:672: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:672: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS" "calc.at:686"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:686: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:686"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:686: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:686"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
 
 # Test the priorities.
 cat >input <<'_ATEOF'
@@ -84814,28 +88536,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84848,28 +88570,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84907,15 +88629,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84925,28 +88647,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84984,15 +88706,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85002,28 +88724,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85061,15 +88783,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85079,28 +88801,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85138,15 +88860,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85157,28 +88879,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85216,43 +88938,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85290,15 +89012,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85325,28 +89047,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85388,15 +89110,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85409,28 +89131,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85469,15 +89191,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85487,28 +89209,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85548,15 +89270,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85569,28 +89291,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:672: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85630,15 +89352,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:672: cat stderr"
-at_fn_check_prepare_trace "calc.at:672"
+$as_echo "$at_srcdir/calc.at:686: cat stderr"
+at_fn_check_prepare_trace "calc.at:686"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:672"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85650,13 +89372,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_197
-#AT_START_198
-at_fn_group_banner 198 'calc.at:673' \
+#AT_STOP_203
+#AT_START_204
+at_fn_group_banner 204 'calc.at:687' \
   "Calculator %glr-parser %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "198. $at_setup_line: testing $at_desc ..."
+  $as_echo "204. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -85793,8 +89515,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -85987,9 +89707,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:673: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:687: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:673"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:687"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -85997,29 +89717,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:673: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:687"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:673: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:687: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:673"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:687"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -86028,16 +89748,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:673: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:687: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:673"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:687"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -86046,7 +89766,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86054,29 +89774,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:673: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:673: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:687"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:687: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:687"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:687: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:687"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:687: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:687"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:687: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:687"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86100,28 +89882,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86134,28 +89916,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86191,15 +89973,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86209,28 +89991,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86266,15 +90048,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86284,28 +90066,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86341,15 +90123,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86359,28 +90141,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86416,15 +90198,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86435,28 +90217,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86492,43 +90274,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86564,15 +90346,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86599,28 +90381,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86660,15 +90442,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86681,28 +90463,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86739,15 +90521,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86757,28 +90539,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86816,15 +90598,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86837,28 +90619,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:673: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86896,15 +90678,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:673: cat stderr"
-at_fn_check_prepare_trace "calc.at:673"
+$as_echo "$at_srcdir/calc.at:687: cat stderr"
+at_fn_check_prepare_trace "calc.at:687"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86916,13 +90698,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_198
-#AT_START_199
-at_fn_group_banner 199 'calc.at:674' \
+#AT_STOP_204
+#AT_START_205
+at_fn_group_banner 205 'calc.at:688' \
   "Calculator %glr-parser %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "199. $at_setup_line: testing $at_desc ..."
+  $as_echo "205. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -87059,8 +90841,6 @@ yyerror (
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -87253,9 +91033,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:674: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:688: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:674"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:688"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -87263,29 +91043,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:674: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:688"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:674: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:688: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:674"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:688"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -87294,16 +91074,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:674: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:688: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:674"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:688"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -87312,7 +91092,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87320,29 +91100,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:674: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:674: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:688"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:688: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:688"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:688: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:688"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:688: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:688"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:688: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:688"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87366,28 +91208,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87400,28 +91242,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87457,15 +91299,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87475,28 +91317,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87532,15 +91374,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87550,28 +91392,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87607,15 +91449,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87625,28 +91467,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87682,15 +91524,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87701,28 +91543,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87758,43 +91600,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87830,15 +91672,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87865,28 +91707,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87926,15 +91768,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87947,28 +91789,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88005,15 +91847,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88023,28 +91865,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88082,15 +91924,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88103,28 +91945,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:674: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88162,15 +92004,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$as_echo "$at_srcdir/calc.at:688: cat stderr"
+at_fn_check_prepare_trace "calc.at:688"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88182,13 +92024,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_199
-#AT_START_200
-at_fn_group_banner 200 'calc.at:676' \
+#AT_STOP_205
+#AT_START_206
+at_fn_group_banner 206 'calc.at:690' \
   "Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "200. $at_setup_line: testing $at_desc ..."
+  $as_echo "206. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -88325,8 +92167,6 @@ yyerror (YYLTYPE *llocp,
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -88519,9 +92359,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:676: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:690: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:676"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:690"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -88529,29 +92369,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:676: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:690"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:676: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:690: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:676"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:690"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -88560,16 +92400,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:676: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:690: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:676"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:690"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -88578,7 +92418,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88586,29 +92426,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:676: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:676: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:690"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:690: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:690"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:690: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:690"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:690: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:690"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:690: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:690"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88632,28 +92534,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88666,28 +92568,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88723,15 +92625,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88741,28 +92643,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88798,15 +92700,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88816,28 +92718,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88873,15 +92775,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88891,28 +92793,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88948,15 +92850,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88967,28 +92869,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89024,43 +92926,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89096,15 +92998,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89131,28 +93033,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89192,15 +93094,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89213,28 +93115,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89271,15 +93173,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89289,28 +93191,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89348,15 +93250,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89369,28 +93271,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:676: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89428,15 +93330,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:676: cat stderr"
-at_fn_check_prepare_trace "calc.at:676"
+$as_echo "$at_srcdir/calc.at:690: cat stderr"
+at_fn_check_prepare_trace "calc.at:690"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89448,13 +93350,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_200
-#AT_START_201
-at_fn_group_banner 201 'calc.at:678' \
+#AT_STOP_206
+#AT_START_207
+at_fn_group_banner 207 'calc.at:692' \
   "Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 12
 at_xfail=no
 (
-  $as_echo "201. $at_setup_line: testing $at_desc ..."
+  $as_echo "207. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -89591,8 +93493,6 @@ yyerror (YYLTYPE *llocp,
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -89785,9 +93685,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:678: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:692: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:678"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:692"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -89795,29 +93695,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:678: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:692"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:678: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:692: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:678"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:692"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -89826,16 +93726,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:678: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:692: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:678"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:692"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -89844,7 +93744,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89852,29 +93752,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:678: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:678: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:692"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:692: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:692"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:692: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:692"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:692: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:692"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:692: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:692"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89898,28 +93860,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89932,28 +93894,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89989,15 +93951,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90007,28 +93969,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90064,15 +94026,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90082,28 +94044,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90139,15 +94101,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90157,28 +94119,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90214,15 +94176,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90233,28 +94195,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90290,43 +94252,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90362,15 +94324,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90397,28 +94359,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90458,15 +94420,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90479,28 +94441,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90537,15 +94499,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90555,28 +94517,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90614,15 +94576,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90635,28 +94597,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:678: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90694,15 +94656,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:678: cat stderr"
-at_fn_check_prepare_trace "calc.at:678"
+$as_echo "$at_srcdir/calc.at:692: cat stderr"
+at_fn_check_prepare_trace "calc.at:692"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90714,13 +94676,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_201
-#AT_START_202
-at_fn_group_banner 202 'calc.at:679' \
+#AT_STOP_207
+#AT_START_208
+at_fn_group_banner 208 'calc.at:693' \
   "Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 12
 at_xfail=no
 (
-  $as_echo "202. $at_setup_line: testing $at_desc ..."
+  $as_echo "208. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -90857,8 +94819,6 @@ yyerror (CALCLTYPE *llocp,
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", s);
 }
-
-
 _ATEOF
 
 
@@ -91051,9 +95011,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:679: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:693: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.c calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:679"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:693"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -91061,29 +95021,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:679: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y" "calc.at:693"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:679: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:693: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:679"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:693"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -91092,16 +95052,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:679: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:693: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:679"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:693"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -91110,7 +95070,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91118,29 +95078,91 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:679: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; bison -o calc.c calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/calc.at:679: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.c calc-lex.c calc-main.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS" "calc.at:693"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c calc-lex.c calc-main.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:693: sed -ne '/./q;=;p;' calc.c"
+at_fn_check_prepare_trace "calc.at:693"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:693: sed -ne '\${/^\$/{=;p;};}' calc.c"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:693"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.c
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:693: sed -ne '/./q;=;p;' calc.h"
+at_fn_check_prepare_trace "calc.at:693"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:693: sed -ne '\${/^\$/{=;p;};}' calc.h"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:693"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.h
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91164,28 +95186,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91198,28 +95220,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91255,15 +95277,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91273,28 +95295,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91330,15 +95352,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91348,28 +95370,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91405,15 +95427,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91423,28 +95445,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91480,15 +95502,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91499,28 +95521,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91556,43 +95578,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91628,15 +95650,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91663,28 +95685,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91724,15 +95746,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91745,28 +95767,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91803,15 +95825,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91821,28 +95843,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91880,15 +95902,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91901,28 +95923,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:679: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91960,15 +95982,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:679: cat stderr"
-at_fn_check_prepare_trace "calc.at:679"
+$as_echo "$at_srcdir/calc.at:693: cat stderr"
+at_fn_check_prepare_trace "calc.at:693"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91980,13 +96002,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_202
-#AT_START_203
-at_fn_group_banner 203 'calc.at:689' \
+#AT_STOP_208
+#AT_START_209
+at_fn_group_banner 209 'calc.at:703' \
   "Calculator %skeleton \"lalr1.cc\" %defines %locations" "" 13
 at_xfail=no
 (
-  $as_echo "203. $at_setup_line: testing $at_desc ..."
+  $as_echo "209. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -92050,7 +96072,7 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -92118,8 +96140,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -92323,9 +96343,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:689: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:703: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:689"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:703"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -92333,29 +96353,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:689: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:703"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:689: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:703: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:689"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:703"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -92364,16 +96384,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:689: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:703: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:689"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:703"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -92382,7 +96402,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92390,43 +96410,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:689: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:703"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:703"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:703: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:703"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:703: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:703"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:703: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:703"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:703: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:703"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92450,28 +96532,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92484,28 +96566,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92542,15 +96624,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92560,28 +96642,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92618,15 +96700,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92636,28 +96718,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92694,15 +96776,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92712,28 +96794,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92770,15 +96852,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92789,28 +96871,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92847,43 +96929,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92920,15 +97002,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92955,28 +97037,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93017,15 +97099,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93038,28 +97120,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93097,15 +97179,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93115,28 +97197,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93175,15 +97257,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93196,28 +97278,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:689: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93256,15 +97338,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:689: cat stderr"
-at_fn_check_prepare_trace "calc.at:689"
+$as_echo "$at_srcdir/calc.at:703: cat stderr"
+at_fn_check_prepare_trace "calc.at:703"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:689"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93276,13 +97358,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_203
-#AT_START_204
-at_fn_group_banner 204 'calc.at:698' \
+#AT_STOP_209
+#AT_START_210
+at_fn_group_banner 210 'calc.at:712' \
   "Calculator %language \"C++\" %defines %locations " "" 13
 at_xfail=no
 (
-  $as_echo "204. $at_setup_line: testing $at_desc ..."
+  $as_echo "210. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -93346,7 +97428,7 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -93414,8 +97496,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -93619,9 +97699,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:698: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:712: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:698"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:712"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -93629,29 +97709,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:698: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:712"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:698: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:712: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:698"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:712"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -93660,16 +97740,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:698: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:712: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:698"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:712"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -93678,7 +97758,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93686,43 +97766,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:698: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:712"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:712"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:712: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:712"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:712: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:712"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:712: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:712"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:712: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:712"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93746,28 +97888,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93780,28 +97922,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93838,15 +97980,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93856,28 +97998,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93914,15 +98056,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93932,28 +98074,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93990,15 +98132,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94008,28 +98150,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94066,15 +98208,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94085,28 +98227,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94143,43 +98285,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94216,15 +98358,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94251,28 +98393,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94313,15 +98455,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94334,28 +98476,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94393,15 +98535,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94411,28 +98553,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94471,15 +98613,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94492,28 +98634,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:698: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94552,15 +98694,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:698: cat stderr"
-at_fn_check_prepare_trace "calc.at:698"
+$as_echo "$at_srcdir/calc.at:712: cat stderr"
+at_fn_check_prepare_trace "calc.at:712"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:698"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94572,13 +98714,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_204
-#AT_START_205
-at_fn_group_banner 205 'calc.at:699' \
+#AT_STOP_210
+#AT_START_211
+at_fn_group_banner 211 'calc.at:713' \
   "Calculator %language \"C++\" %defines %locations %define location_type Span" "" 13
 at_xfail=no
 (
-  $as_echo "205. $at_setup_line: testing $at_desc ..."
+  $as_echo "211. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -94739,8 +98881,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -94944,9 +99084,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:699: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:713: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:699"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:713"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -94954,29 +99094,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:699: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:713"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:699: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:713: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:699"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:713"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -94985,16 +99125,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:699: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:713: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:699"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:713"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -95003,7 +99143,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95011,43 +99151,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:699: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:713"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:713"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:713: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:713"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:713: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:713"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:713: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:713"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:713: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:713"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95071,28 +99273,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95105,28 +99307,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95163,15 +99365,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95181,28 +99383,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95239,15 +99441,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95257,28 +99459,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95315,15 +99517,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95333,28 +99535,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95391,15 +99593,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95410,28 +99612,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95468,43 +99670,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95541,15 +99743,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95576,28 +99778,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95638,15 +99840,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95659,28 +99861,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95718,15 +99920,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95736,28 +99938,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95796,15 +99998,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95817,28 +100019,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95877,15 +100079,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:699: cat stderr"
-at_fn_check_prepare_trace "calc.at:699"
+$as_echo "$at_srcdir/calc.at:713: cat stderr"
+at_fn_check_prepare_trace "calc.at:713"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95897,13 +100099,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_205
-#AT_START_206
-at_fn_group_banner 206 'calc.at:700' \
+#AT_STOP_211
+#AT_START_212
+at_fn_group_banner 212 'calc.at:714' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "206. $at_setup_line: testing $at_desc ..."
+  $as_echo "212. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -95967,7 +100169,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -96035,8 +100237,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -96240,9 +100440,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:700: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:714: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:700"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:714"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -96250,29 +100450,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:700: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:714"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:700: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:714: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:700"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:714"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -96281,16 +100481,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:700: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:714: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:700"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:714"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -96299,7 +100499,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96307,43 +100507,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:700: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:714"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:714"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:714: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:714"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:714: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:714"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:714: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:714"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:714: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:714"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96367,28 +100629,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96401,28 +100663,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96458,15 +100720,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96476,28 +100738,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96533,15 +100795,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96551,28 +100813,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96608,15 +100870,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96626,28 +100888,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96683,15 +100945,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96702,28 +100964,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96759,43 +101021,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96831,15 +101093,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96866,28 +101128,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96927,15 +101189,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96948,28 +101210,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97006,15 +101268,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97024,28 +101286,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97083,15 +101345,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97104,28 +101366,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:700: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97163,15 +101425,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:700: cat stderr"
-at_fn_check_prepare_trace "calc.at:700"
+$as_echo "$at_srcdir/calc.at:714: cat stderr"
+at_fn_check_prepare_trace "calc.at:714"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:700"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97183,13 +101445,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_206
-#AT_START_207
-at_fn_group_banner 207 'calc.at:701' \
+#AT_STOP_212
+#AT_START_213
+at_fn_group_banner 213 'calc.at:715' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "207. $at_setup_line: testing $at_desc ..."
+  $as_echo "213. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -97253,7 +101515,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -97321,8 +101583,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -97526,9 +101786,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:701: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:715: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:701"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:715"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -97536,29 +101796,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:701: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:715"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:701: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:715: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:701"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:715"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -97567,16 +101827,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:701: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:715: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:701"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:715"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -97585,7 +101845,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97593,43 +101853,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:701: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:715"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:715"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:715: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:715"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:715: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:715"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:715: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:715"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:715: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:715"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97653,28 +101975,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97687,28 +102009,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97744,15 +102066,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97762,28 +102084,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97819,15 +102141,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97837,28 +102159,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97894,15 +102216,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97912,28 +102234,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97969,15 +102291,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97988,28 +102310,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98045,43 +102367,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98117,15 +102439,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98152,28 +102474,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98213,15 +102535,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98234,28 +102556,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98292,15 +102614,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98310,28 +102632,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98369,15 +102691,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98390,28 +102712,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:701: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98449,15 +102771,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:701: cat stderr"
-at_fn_check_prepare_trace "calc.at:701"
+$as_echo "$at_srcdir/calc.at:715: cat stderr"
+at_fn_check_prepare_trace "calc.at:715"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:701"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98469,13 +102791,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_207
-#AT_START_208
-at_fn_group_banner 208 'calc.at:702' \
+#AT_STOP_213
+#AT_START_214
+at_fn_group_banner 214 'calc.at:716' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "208. $at_setup_line: testing $at_desc ..."
+  $as_echo "214. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -98539,7 +102861,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -98607,8 +102929,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -98812,9 +103132,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:702: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:716: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:702"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:716"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -98822,29 +103142,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:702: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:716"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:702: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:716: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:702"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:716"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -98853,16 +103173,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:702: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:716: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:702"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:716"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -98871,7 +103191,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98879,43 +103199,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:702: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:716"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:716"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:716: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:716"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:716: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:716"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:716: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:716"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:716: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:716"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98939,28 +103321,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98973,28 +103355,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99030,15 +103412,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99048,28 +103430,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99105,15 +103487,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99123,28 +103505,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99180,15 +103562,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99198,28 +103580,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99255,15 +103637,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99274,28 +103656,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99331,43 +103713,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99403,15 +103785,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99438,28 +103820,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99499,15 +103881,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99520,28 +103902,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99578,15 +103960,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99596,28 +103978,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99655,15 +104037,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99676,28 +104058,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:702: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99735,15 +104117,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:702: cat stderr"
-at_fn_check_prepare_trace "calc.at:702"
+$as_echo "$at_srcdir/calc.at:716: cat stderr"
+at_fn_check_prepare_trace "calc.at:716"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:702"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99755,13 +104137,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_208
-#AT_START_209
-at_fn_group_banner 209 'calc.at:704' \
+#AT_STOP_214
+#AT_START_215
+at_fn_group_banner 215 'calc.at:718' \
   "Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "209. $at_setup_line: testing $at_desc ..."
+  $as_echo "215. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -99825,7 +104207,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -99893,8 +104275,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -100098,9 +104478,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:704: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:718: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:704"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:718"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -100108,29 +104488,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:704: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:718"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:704: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:718: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:704"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:718"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -100139,16 +104519,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:704: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:718: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:704"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:718"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -100157,7 +104537,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100165,43 +104545,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:704: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:718"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:718"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:718: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:718"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:718: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:718"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:718: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:718"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:718: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:718"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100225,28 +104667,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100259,28 +104701,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100316,15 +104758,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100334,28 +104776,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100391,15 +104833,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100409,28 +104851,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100466,15 +104908,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100484,28 +104926,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100541,15 +104983,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100560,28 +105002,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100617,43 +105059,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100689,15 +105131,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100724,28 +105166,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100785,15 +105227,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100806,28 +105248,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100864,15 +105306,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100882,28 +105324,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100941,15 +105383,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100962,28 +105404,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:704: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101021,15 +105463,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:704: cat stderr"
-at_fn_check_prepare_trace "calc.at:704"
+$as_echo "$at_srcdir/calc.at:718: cat stderr"
+at_fn_check_prepare_trace "calc.at:718"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:704"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101041,13 +105483,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_209
-#AT_START_210
-at_fn_group_banner 210 'calc.at:706' \
+#AT_STOP_215
+#AT_START_216
+at_fn_group_banner 216 'calc.at:720' \
   "Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 13
 at_xfail=no
 (
-  $as_echo "210. $at_setup_line: testing $at_desc ..."
+  $as_echo "216. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -101111,7 +105553,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -101179,8 +105621,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -101384,9 +105824,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:706: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:720: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:706"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:720"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -101394,29 +105834,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:706: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:720"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:706: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:720: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:706"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:720"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -101425,16 +105865,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:706: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:720: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:706"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:720"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -101443,7 +105883,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101451,43 +105891,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:706: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:720"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:720"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:720: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:720"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:720: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:720"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:720: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:720"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:720: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:720"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101511,28 +106013,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101545,28 +106047,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101602,15 +106104,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101620,28 +106122,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101677,15 +106179,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101695,28 +106197,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101752,15 +106254,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101770,28 +106272,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101827,15 +106329,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101846,28 +106348,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101903,43 +106405,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101975,15 +106477,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102010,28 +106512,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102071,15 +106573,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102092,28 +106594,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102150,15 +106652,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102168,28 +106670,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102227,15 +106729,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102248,28 +106750,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:706: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102307,15 +106809,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:706: cat stderr"
-at_fn_check_prepare_trace "calc.at:706"
+$as_echo "$at_srcdir/calc.at:720: cat stderr"
+at_fn_check_prepare_trace "calc.at:720"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:706"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102327,13 +106829,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_210
-#AT_START_211
-at_fn_group_banner 211 'calc.at:707' \
+#AT_STOP_216
+#AT_START_217
+at_fn_group_banner 217 'calc.at:721' \
   "Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 13
 at_xfail=no
 (
-  $as_echo "211. $at_setup_line: testing $at_desc ..."
+  $as_echo "217. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -102397,7 +106899,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -102465,8 +106967,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -102670,9 +107170,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:721: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:707"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:721"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -102680,29 +107180,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:721"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:707: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:721: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:707"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:721"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -102711,16 +107211,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:707: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:721: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:707"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:721"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -102729,7 +107229,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102737,43 +107237,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:707: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:721"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:721"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:721: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:721"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:721: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:721"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:721: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:721"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:721: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:721"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102797,28 +107359,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102831,28 +107393,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102888,15 +107450,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102906,28 +107468,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102963,15 +107525,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102981,28 +107543,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103038,15 +107600,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103056,28 +107618,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103113,15 +107675,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103132,28 +107694,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103189,43 +107751,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103261,15 +107823,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103296,28 +107858,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103357,15 +107919,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103378,28 +107940,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103436,15 +107998,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103454,28 +108016,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103513,15 +108075,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103534,28 +108096,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103593,15 +108155,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:707: cat stderr"
-at_fn_check_prepare_trace "calc.at:707"
+$as_echo "$at_srcdir/calc.at:721: cat stderr"
+at_fn_check_prepare_trace "calc.at:721"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:707"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103613,13 +108175,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_211
-#AT_START_212
-at_fn_group_banner 212 'calc.at:718' \
+#AT_STOP_217
+#AT_START_218
+at_fn_group_banner 218 'calc.at:732' \
   "Calculator %skeleton \"glr.cc\" %defines %locations" "" 14
 at_xfail=no
 (
-  $as_echo "212. $at_setup_line: testing $at_desc ..."
+  $as_echo "218. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -103683,7 +108245,7 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -103751,8 +108313,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -103956,9 +108516,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:718: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:732: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:718"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:732"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -103966,29 +108526,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:718: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:732"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:718: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:732: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:718"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:732"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -103997,16 +108557,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:718: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:732: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:718"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:732"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -104015,7 +108575,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104023,43 +108583,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:718: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:732"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:732"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:732: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:732"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:732: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:732"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:732: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:732"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:732: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:732"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104083,28 +108705,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104117,28 +108739,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104175,15 +108797,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104193,28 +108815,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104251,15 +108873,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104269,28 +108891,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104327,15 +108949,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104345,28 +108967,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104403,15 +109025,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104422,28 +109044,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104480,43 +109102,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104553,15 +109175,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104588,28 +109210,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104650,15 +109272,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104671,28 +109293,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104730,15 +109352,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104748,28 +109370,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104808,15 +109430,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104829,28 +109451,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:718: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104889,15 +109511,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:718: cat stderr"
-at_fn_check_prepare_trace "calc.at:718"
+$as_echo "$at_srcdir/calc.at:732: cat stderr"
+at_fn_check_prepare_trace "calc.at:732"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104909,13 +109531,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_212
-#AT_START_213
-at_fn_group_banner 213 'calc.at:727' \
+#AT_STOP_218
+#AT_START_219
+at_fn_group_banner 219 'calc.at:741' \
   "Calculator %language \"C++\" %glr-parser %defines %locations " "" 14
 at_xfail=no
 (
-  $as_echo "213. $at_setup_line: testing $at_desc ..."
+  $as_echo "219. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -104979,7 +109601,7 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -105047,8 +109669,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -105252,9 +109872,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:727: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:741: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:727"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:741"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -105262,29 +109882,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:727: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:741"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:727: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:741: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:727"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:741"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -105293,16 +109913,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:727: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:741: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:727"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:741"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -105311,7 +109931,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105319,43 +109939,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:727: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:741"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:741"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:741: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:741"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:741: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:741"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:741: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:741"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:741: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:741"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105379,28 +110061,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105413,28 +110095,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105471,15 +110153,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105489,28 +110171,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105547,15 +110229,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105565,28 +110247,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105623,15 +110305,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105641,28 +110323,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105699,15 +110381,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105718,28 +110400,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105776,43 +110458,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105849,15 +110531,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105884,28 +110566,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105946,15 +110628,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105967,28 +110649,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106026,15 +110708,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106044,28 +110726,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106104,15 +110786,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106125,28 +110807,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:727: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106185,15 +110867,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:727: cat stderr"
-at_fn_check_prepare_trace "calc.at:727"
+$as_echo "$at_srcdir/calc.at:741: cat stderr"
+at_fn_check_prepare_trace "calc.at:741"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:727"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106205,13 +110887,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_213
-#AT_START_214
-at_fn_group_banner 214 'calc.at:728' \
+#AT_STOP_219
+#AT_START_220
+at_fn_group_banner 220 'calc.at:742' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %define location_type Span" "" 14
 at_xfail=no
 (
-  $as_echo "214. $at_setup_line: testing $at_desc ..."
+  $as_echo "220. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -106372,8 +111054,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -106577,9 +111257,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:728: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:742: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:728"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:742"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -106587,29 +111267,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:728: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:742"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:728: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:742: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:728"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:742"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -106618,16 +111298,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:728: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:742: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:728"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:742"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -106636,7 +111316,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106644,43 +111324,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:728: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:742"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:742"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:742: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:742"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:742: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:742"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:742: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:742"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:742: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:742"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106704,28 +111446,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106738,28 +111480,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106796,15 +111538,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106814,28 +111556,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106872,15 +111614,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106890,28 +111632,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106948,15 +111690,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106966,28 +111708,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107024,15 +111766,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107043,28 +111785,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107101,43 +111843,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107174,15 +111916,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107209,28 +111951,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107271,15 +112013,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107292,28 +112034,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107351,15 +112093,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107369,28 +112111,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107429,15 +112171,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107450,28 +112192,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:728: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107510,15 +112252,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:728: cat stderr"
-at_fn_check_prepare_trace "calc.at:728"
+$as_echo "$at_srcdir/calc.at:742: cat stderr"
+at_fn_check_prepare_trace "calc.at:742"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:728"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107530,13 +112272,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_214
-#AT_START_215
-at_fn_group_banner 215 'calc.at:729' \
+#AT_STOP_220
+#AT_START_221
+at_fn_group_banner 221 'calc.at:743' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "215. $at_setup_line: testing $at_desc ..."
+  $as_echo "221. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -107600,7 +112342,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -107668,8 +112410,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -107873,9 +112613,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:729: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:743: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:729"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:743"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -107883,29 +112623,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:729: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:743"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:729: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:743: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:729"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:743"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -107914,16 +112654,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:729: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:743: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:729"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:743"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -107932,7 +112672,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107940,43 +112680,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:729: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:743"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:743"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:743: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:743"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:743: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:743"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:743: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:743"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:743: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:743"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108000,28 +112802,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108034,28 +112836,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108091,15 +112893,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108109,28 +112911,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108166,15 +112968,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108184,28 +112986,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108241,15 +113043,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108259,28 +113061,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108316,15 +113118,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108335,28 +113137,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108392,43 +113194,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108464,15 +113266,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108499,28 +113301,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108560,15 +113362,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108581,28 +113383,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108639,15 +113441,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108657,28 +113459,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108716,15 +113518,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108737,28 +113539,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:729: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108796,15 +113598,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:729: cat stderr"
-at_fn_check_prepare_trace "calc.at:729"
+$as_echo "$at_srcdir/calc.at:743: cat stderr"
+at_fn_check_prepare_trace "calc.at:743"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:729"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108816,13 +113618,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_215
-#AT_START_216
-at_fn_group_banner 216 'calc.at:730' \
+#AT_STOP_221
+#AT_START_222
+at_fn_group_banner 222 'calc.at:744' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "216. $at_setup_line: testing $at_desc ..."
+  $as_echo "222. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -108886,7 +113688,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -108954,8 +113756,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -109159,9 +113959,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:730: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:744: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:730"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:744"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -109169,29 +113969,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:730: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:744"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:730: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:744: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:730"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:744"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -109200,16 +114000,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:730: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:744: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:730"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:744"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -109218,7 +114018,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109226,43 +114026,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:730: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:744"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:744"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:744: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:744"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:744: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:744"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:744: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:744"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:744: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:744"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109286,28 +114148,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109320,28 +114182,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109377,15 +114239,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109395,28 +114257,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109452,15 +114314,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109470,28 +114332,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109527,15 +114389,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109545,28 +114407,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109602,15 +114464,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109621,28 +114483,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109678,43 +114540,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109750,15 +114612,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109785,28 +114647,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109846,15 +114708,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109867,28 +114729,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109925,15 +114787,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109943,28 +114805,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110002,15 +114864,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110023,28 +114885,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:730: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110082,15 +114944,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:730: cat stderr"
-at_fn_check_prepare_trace "calc.at:730"
+$as_echo "$at_srcdir/calc.at:744: cat stderr"
+at_fn_check_prepare_trace "calc.at:744"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:730"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110102,13 +114964,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_216
-#AT_START_217
-at_fn_group_banner 217 'calc.at:732' \
+#AT_STOP_222
+#AT_START_223
+at_fn_group_banner 223 'calc.at:746' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %debug" "" 14
 at_xfail=no
 (
-  $as_echo "217. $at_setup_line: testing $at_desc ..."
+  $as_echo "223. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -110172,7 +115034,7 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -110240,8 +115102,6 @@ yy::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -110445,9 +115305,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:732: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:746: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:732"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:746"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -110455,29 +115315,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:732: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:746"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:732: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:746: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:732"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:746"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -110486,16 +115346,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:732: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:746: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:732"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:746"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -110504,7 +115364,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110512,43 +115372,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:732: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:746"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:746"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:746: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:746"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:746: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:746"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:746: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:746"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:746: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:746"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110572,28 +115494,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110606,28 +115528,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110664,15 +115586,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110682,28 +115604,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110740,15 +115662,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110758,28 +115680,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110816,15 +115738,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110834,28 +115756,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110892,15 +115814,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110911,28 +115833,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110969,43 +115891,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111042,15 +115964,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111077,28 +115999,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111139,15 +116061,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111160,28 +116082,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111219,15 +116141,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111237,28 +116159,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111297,15 +116219,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111318,28 +116240,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:732: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111378,15 +116300,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:732: cat stderr"
-at_fn_check_prepare_trace "calc.at:732"
+$as_echo "$at_srcdir/calc.at:746: cat stderr"
+at_fn_check_prepare_trace "calc.at:746"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:732"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111398,13 +116320,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_217
-#AT_START_218
-at_fn_group_banner 218 'calc.at:733' \
+#AT_STOP_223
+#AT_START_224
+at_fn_group_banner 224 'calc.at:747' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "218. $at_setup_line: testing $at_desc ..."
+  $as_echo "224. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -111468,7 +116390,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -111536,8 +116458,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -111741,9 +116661,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:733: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:747: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:733"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:747"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -111751,29 +116671,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:733: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:747"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:733: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:747: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:733"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:747"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -111782,16 +116702,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:733: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:747: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:733"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:747"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -111800,7 +116720,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111808,43 +116728,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:733: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:747"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:747"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:747: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:747"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:747: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:747"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:747: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:747"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:747: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:747"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111868,28 +116850,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111902,28 +116884,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111959,15 +116941,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111977,28 +116959,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112034,15 +117016,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112052,28 +117034,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112109,15 +117091,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112127,28 +117109,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112184,15 +117166,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112203,28 +117185,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112260,43 +117242,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112332,15 +117314,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112367,28 +117349,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112428,15 +117410,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112449,28 +117431,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112507,15 +117489,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112525,28 +117507,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112584,15 +117566,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112605,28 +117587,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:733: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112664,15 +117646,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:733: cat stderr"
-at_fn_check_prepare_trace "calc.at:733"
+$as_echo "$at_srcdir/calc.at:747: cat stderr"
+at_fn_check_prepare_trace "calc.at:747"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:733"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112684,13 +117666,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_218
-#AT_START_219
-at_fn_group_banner 219 'calc.at:735' \
+#AT_STOP_224
+#AT_START_225
+at_fn_group_banner 225 'calc.at:749' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "219. $at_setup_line: testing $at_desc ..."
+  $as_echo "225. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -112754,7 +117736,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -112822,8 +117804,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -113027,9 +118007,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:735: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:749: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:735"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:749"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -113037,29 +118017,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:735: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:749"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:735: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:749: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:735"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:749"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -113068,16 +118048,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:735: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:749: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:735"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:749"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -113086,7 +118066,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113094,43 +118074,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:735: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:749"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:749"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:749: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:749"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:749: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:749"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:749: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:749"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:749: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:749"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113154,28 +118196,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113188,28 +118230,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113245,15 +118287,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113263,28 +118305,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113320,15 +118362,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113338,28 +118380,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113395,15 +118437,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113413,28 +118455,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113470,15 +118512,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113489,28 +118531,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113546,43 +118588,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113618,15 +118660,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113653,28 +118695,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113714,15 +118756,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113735,28 +118777,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113793,15 +118835,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113811,28 +118853,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113870,15 +118912,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113891,28 +118933,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:735: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113950,15 +118992,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:735: cat stderr"
-at_fn_check_prepare_trace "calc.at:735"
+$as_echo "$at_srcdir/calc.at:749: cat stderr"
+at_fn_check_prepare_trace "calc.at:749"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:735"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113970,13 +119012,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_219
-#AT_START_220
-at_fn_group_banner 220 'calc.at:737' \
+#AT_STOP_225
+#AT_START_226
+at_fn_group_banner 226 'calc.at:751' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 14
 at_xfail=no
 (
-  $as_echo "220. $at_setup_line: testing $at_desc ..."
+  $as_echo "226. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -114040,7 +119082,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -114108,8 +119150,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -114313,9 +119353,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:737: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:751: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:737"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:751"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -114323,29 +119363,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:737: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:751"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:737: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:751: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:737"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:751"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -114354,16 +119394,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:737: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:751: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:737"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:751"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -114372,7 +119412,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114380,43 +119420,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:737: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:751"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:751"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:751: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:751"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:751: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:751"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:751: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:751"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:751: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:751"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114440,28 +119542,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114474,28 +119576,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114531,15 +119633,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114549,28 +119651,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114606,15 +119708,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114624,28 +119726,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114681,15 +119783,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114699,28 +119801,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114756,15 +119858,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114775,28 +119877,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114832,43 +119934,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114904,15 +120006,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114939,28 +120041,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115000,15 +120102,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115021,28 +120123,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115079,15 +120181,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115097,28 +120199,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115156,15 +120258,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115177,28 +120279,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:737: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115236,15 +120338,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:737: cat stderr"
-at_fn_check_prepare_trace "calc.at:737"
+$as_echo "$at_srcdir/calc.at:751: cat stderr"
+at_fn_check_prepare_trace "calc.at:751"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:737"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115256,13 +120358,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_220
-#AT_START_221
-at_fn_group_banner 221 'calc.at:738' \
+#AT_STOP_226
+#AT_START_227
+at_fn_group_banner 227 'calc.at:752' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}" "" 14
 at_xfail=no
 (
-  $as_echo "221. $at_setup_line: testing $at_desc ..."
+  $as_echo "227. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -115326,7 +120428,7 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
    a constructor for position that initializes the filename.  The
    glr.cc skeleton does not (and in fact cannot: location/position
    are stored in a union, from which objects with constructors are
-   excluded in C++. */
+   excluded in C++). */
 %initial-action {
   @$.initialize ();
 }
@@ -115394,8 +120496,6 @@ calc::parser::error (const location_type& l, const std::string& m)
   (void) l;
   std::cerr << l << ": " << m << std::endl;
 }
-
-
 _ATEOF
 
 
@@ -115599,9 +120699,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/calc.at:738: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/calc.at:752: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o calc.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:738"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:752"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -115609,29 +120709,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/calc.at:738: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y" "calc.at:752"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:738: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:752: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:738"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:752"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -115640,16 +120740,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/calc.at:738: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:752: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:738"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:752"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -115658,7 +120758,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115666,43 +120766,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:738: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; bison -o calc.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:752"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS" "calc.at:752"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o calc calc.cc calc-lex.cc calc-main.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:752: sed -ne '/./q;=;p;' calc.cc"
+at_fn_check_prepare_trace "calc.at:752"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([cc], [c])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:752: sed -ne '\${/^\$/{=;p;};}' calc.cc"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:752"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.cc
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# No initial empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:752: sed -ne '/./q;=;p;' calc.hh"
+at_fn_check_prepare_trace "calc.at:752"
+( $at_check_trace; sed -ne '/./q;=;p;' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+# No trailing spaces.
+# FIXME: For 2.7: AT_CHECK([sed -ne '/[ ]$/{=;p;}' calc.AT_SKEL_CC_IF([hh], [h])])
+# No final empty lines.
+{ set +x
+$as_echo "$at_srcdir/calc.at:752: sed -ne '\${/^\$/{=;p;};}' calc.hh"
+at_fn_check_prepare_notrace 'a ${...} parameter expansion' "calc.at:752"
+( $at_check_trace; sed -ne '${/^$/{=;p;};}' calc.hh
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115726,28 +120888,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115760,28 +120922,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115817,15 +120979,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115835,28 +120997,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115892,15 +121054,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115910,28 +121072,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115967,15 +121129,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115985,28 +121147,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116042,15 +121204,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116061,28 +121223,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116118,43 +121280,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Exercise error messages with EOF: work on an empty file.
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc /dev/null
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116190,15 +121352,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116225,28 +121387,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116286,15 +121448,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116307,28 +121469,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116365,15 +121527,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116383,28 +121545,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116442,15 +121604,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116463,28 +121625,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/calc.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116522,15 +121684,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:738: cat stderr"
-at_fn_check_prepare_trace "calc.at:738"
+$as_echo "$at_srcdir/calc.at:752: cat stderr"
+at_fn_check_prepare_trace "calc.at:752"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:738"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116542,13 +121704,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_221
-#AT_START_222
-at_fn_group_banner 222 'torture.at:137' \
+#AT_STOP_227
+#AT_START_228
+at_fn_group_banner 228 'torture.at:137' \
   "Big triangle" "                                   " 15
 at_xfail=no
 (
-  $as_echo "222. $at_setup_line: testing $at_desc ..."
+  $as_echo "228. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -116728,13 +121890,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_222
-#AT_START_223
-at_fn_group_banner 223 'torture.at:227' \
+#AT_STOP_228
+#AT_START_229
+at_fn_group_banner 229 'torture.at:227' \
   "Big horizontal" "                                 " 15
 at_xfail=no
 (
-  $as_echo "223. $at_setup_line: testing $at_desc ..."
+  $as_echo "229. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -116924,13 +122086,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_223
-#AT_START_224
-at_fn_group_banner 224 'torture.at:363' \
+#AT_STOP_229
+#AT_START_230
+at_fn_group_banner 230 'torture.at:363' \
   "Many lookahead tokens" "                          " 15
 at_xfail=no
 (
-  $as_echo "224. $at_setup_line: testing $at_desc ..."
+  $as_echo "230. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -117206,13 +122368,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_224
-#AT_START_225
-at_fn_group_banner 225 'torture.at:459' \
+#AT_STOP_230
+#AT_START_231
+at_fn_group_banner 231 'torture.at:459' \
   "Exploding the Stack Size with Alloca" "           " 15
 at_xfail=no
 (
-  $as_echo "225. $at_setup_line: testing $at_desc ..."
+  $as_echo "231. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -117743,13 +122905,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_225
-#AT_START_226
-at_fn_group_banner 226 'torture.at:505' \
+#AT_STOP_231
+#AT_START_232
+at_fn_group_banner 232 'torture.at:505' \
   "Exploding the Stack Size with Malloc" "           " 15
 at_xfail=no
 (
-  $as_echo "226. $at_setup_line: testing $at_desc ..."
+  $as_echo "232. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -118267,13 +123429,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_226
-#AT_START_227
-at_fn_group_banner 227 'existing.at:76' \
+#AT_STOP_232
+#AT_START_233
+at_fn_group_banner 233 'existing.at:76' \
   "GNU AWK 3.1.0 Grammar: LALR(1)" "                 " 16
 at_xfail=no
 (
-  $as_echo "227. $at_setup_line: testing $at_desc ..."
+  $as_echo "233. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -118921,13 +124083,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_227
-#AT_START_228
-at_fn_group_banner 228 'existing.at:76' \
+#AT_STOP_233
+#AT_START_234
+at_fn_group_banner 234 'existing.at:76' \
   "GNU AWK 3.1.0 Grammar: IELR(1)" "                 " 16
 at_xfail=no
 (
-  $as_echo "228. $at_setup_line: testing $at_desc ..."
+  $as_echo "234. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -119885,13 +125047,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_228
-#AT_START_229
-at_fn_group_banner 229 'existing.at:76' \
+#AT_STOP_234
+#AT_START_235
+at_fn_group_banner 235 'existing.at:76' \
   "GNU AWK 3.1.0 Grammar: Canonical LR(1)" "         " 16
 at_xfail=no
 (
-  $as_echo "229. $at_setup_line: testing $at_desc ..."
+  $as_echo "235. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -120355,13 +125517,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_229
-#AT_START_230
-at_fn_group_banner 230 'existing.at:780' \
+#AT_STOP_235
+#AT_START_236
+at_fn_group_banner 236 'existing.at:780' \
   "GNU Cim Grammar: LALR(1)" "                       " 16
 at_xfail=no
 (
-  $as_echo "230. $at_setup_line: testing $at_desc ..."
+  $as_echo "236. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -121296,13 +126458,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_230
-#AT_START_231
-at_fn_group_banner 231 'existing.at:780' \
+#AT_STOP_236
+#AT_START_237
+at_fn_group_banner 237 'existing.at:780' \
   "GNU Cim Grammar: IELR(1)" "                       " 16
 at_xfail=no
 (
-  $as_echo "231. $at_setup_line: testing $at_desc ..."
+  $as_echo "237. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -122237,13 +127399,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_231
-#AT_START_232
-at_fn_group_banner 232 'existing.at:780' \
+#AT_STOP_237
+#AT_START_238
+at_fn_group_banner 238 'existing.at:780' \
   "GNU Cim Grammar: Canonical LR(1)" "               " 16
 at_xfail=no
 (
-  $as_echo "232. $at_setup_line: testing $at_desc ..."
+  $as_echo "238. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -122974,13 +128136,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_232
-#AT_START_233
-at_fn_group_banner 233 'existing.at:1400' \
+#AT_STOP_238
+#AT_START_239
+at_fn_group_banner 239 'existing.at:1400' \
   "GNU pic (Groff 1.18.1) Grammar: LALR(1)" "        " 16
 at_xfail=no
 (
-  $as_echo "233. $at_setup_line: testing $at_desc ..."
+  $as_echo "239. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -123962,13 +129124,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_233
-#AT_START_234
-at_fn_group_banner 234 'existing.at:1400' \
+#AT_STOP_239
+#AT_START_240
+at_fn_group_banner 240 'existing.at:1400' \
   "GNU pic (Groff 1.18.1) Grammar: IELR(1)" "        " 16
 at_xfail=no
 (
-  $as_echo "234. $at_setup_line: testing $at_desc ..."
+  $as_echo "240. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -126089,13 +131251,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_234
-#AT_START_235
-at_fn_group_banner 235 'existing.at:1400' \
+#AT_STOP_240
+#AT_START_241
+at_fn_group_banner 241 'existing.at:1400' \
   "GNU pic (Groff 1.18.1) Grammar: Canonical LR(1)" "" 16
 at_xfail=no
 (
-  $as_echo "235. $at_setup_line: testing $at_desc ..."
+  $as_echo "241. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -126893,13 +132055,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_235
-#AT_START_236
-at_fn_group_banner 236 'regression.at:25' \
+#AT_STOP_241
+#AT_START_242
+at_fn_group_banner 242 'regression.at:25' \
   "Trivial grammars" "                               " 17
 at_xfail=no
 (
-  $as_echo "236. $at_setup_line: testing $at_desc ..."
+  $as_echo "242. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127046,13 +132208,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_236
-#AT_START_237
-at_fn_group_banner 237 'regression.at:55' \
+#AT_STOP_242
+#AT_START_243
+at_fn_group_banner 243 'regression.at:55' \
   "YYSTYPE typedef" "                                " 17
 at_xfail=no
 (
-  $as_echo "237. $at_setup_line: testing $at_desc ..."
+  $as_echo "243. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127186,13 +132348,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_237
-#AT_START_238
-at_fn_group_banner 238 'regression.at:85' \
+#AT_STOP_243
+#AT_START_244
+at_fn_group_banner 244 'regression.at:85' \
   "Early token definitions with --yacc" "            " 17
 at_xfail=no
 (
-  $as_echo "238. $at_setup_line: testing $at_desc ..."
+  $as_echo "244. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127336,13 +132498,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_238
-#AT_START_239
-at_fn_group_banner 239 'regression.at:125' \
+#AT_STOP_244
+#AT_START_245
+at_fn_group_banner 245 'regression.at:125' \
   "Early token definitions without --yacc" "         " 17
 at_xfail=no
 (
-  $as_echo "239. $at_setup_line: testing $at_desc ..."
+  $as_echo "245. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127491,13 +132653,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_239
-#AT_START_240
-at_fn_group_banner 240 'regression.at:170' \
+#AT_STOP_245
+#AT_START_246
+at_fn_group_banner 246 'regression.at:170' \
   "Braces parsing" "                                 " 17
 at_xfail=no
 (
-  $as_echo "240. $at_setup_line: testing $at_desc ..."
+  $as_echo "246. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127617,13 +132779,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_240
-#AT_START_241
-at_fn_group_banner 241 'regression.at:194' \
+#AT_STOP_246
+#AT_START_247
+at_fn_group_banner 247 'regression.at:194' \
   "Duplicate string" "                               " 17
 at_xfail=no
 (
-  $as_echo "241. $at_setup_line: testing $at_desc ..."
+  $as_echo "247. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_241
-#AT_START_242
-at_fn_group_banner 242 'regression.at:222' \
+#AT_STOP_247
+#AT_START_248
+at_fn_group_banner 248 'regression.at:222' \
   "Rule Line Numbers" "                              " 17
 at_xfail=no
 (
-  $as_echo "242. $at_setup_line: testing $at_desc ..."
+  $as_echo "248. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128100,13 +133262,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_242
-#AT_START_243
-at_fn_group_banner 243 'regression.at:368' \
+#AT_STOP_248
+#AT_START_249
+at_fn_group_banner 249 'regression.at:368' \
   "Mixing %token styles" "                           " 17
 at_xfail=no
 (
-  $as_echo "243. $at_setup_line: testing $at_desc ..."
+  $as_echo "249. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128212,13 +133374,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_243
-#AT_START_244
-at_fn_group_banner 244 'regression.at:391' \
+#AT_STOP_249
+#AT_START_250
+at_fn_group_banner 250 'regression.at:391' \
   "Invalid inputs" "                                 " 17
 at_xfail=no
 (
-  $as_echo "244. $at_setup_line: testing $at_desc ..."
+  $as_echo "250. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128263,13 +133425,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_244
-#AT_START_245
-at_fn_group_banner 245 'regression.at:418' \
+#AT_STOP_250
+#AT_START_251
+at_fn_group_banner 251 'regression.at:418' \
   "Invalid inputs with {}" "                         " 17
 at_xfail=no
 (
-  $as_echo "245. $at_setup_line: testing $at_desc ..."
+  $as_echo "251. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128306,13 +133468,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_245
-#AT_START_246
-at_fn_group_banner 246 'regression.at:443' \
+#AT_STOP_251
+#AT_START_252
+at_fn_group_banner 252 'regression.at:443' \
   "Token definitions" "                              " 17
 at_xfail=no
 (
-  $as_echo "246. $at_setup_line: testing $at_desc ..."
+  $as_echo "252. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128360,7 +133522,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -128640,13 +133802,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_246
-#AT_START_247
-at_fn_group_banner 247 'regression.at:503' \
+#AT_STOP_252
+#AT_START_253
+at_fn_group_banner 253 'regression.at:503' \
   "Characters Escapes" "                             " 17
 at_xfail=no
 (
-  $as_echo "247. $at_setup_line: testing $at_desc ..."
+  $as_echo "253. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128779,13 +133941,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_247
-#AT_START_248
-at_fn_group_banner 248 'regression.at:536' \
+#AT_STOP_253
+#AT_START_254
+at_fn_group_banner 254 'regression.at:536' \
   "Web2c Report" "                                   " 17
 at_xfail=no
 (
-  $as_echo "248. $at_setup_line: testing $at_desc ..."
+  $as_echo "254. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129041,13 +134203,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_248
-#AT_START_249
-at_fn_group_banner 249 'regression.at:713' \
+#AT_STOP_254
+#AT_START_255
+at_fn_group_banner 255 'regression.at:713' \
   "Web2c Actions" "                                  " 17
 at_xfail=no
 (
-  $as_echo "249. $at_setup_line: testing $at_desc ..."
+  $as_echo "255. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129263,13 +134425,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_249
-#AT_START_250
-at_fn_group_banner 250 'regression.at:929' \
+#AT_STOP_255
+#AT_START_256
+at_fn_group_banner 256 'regression.at:928' \
   "Dancer " "                                        " 17
 at_xfail=no
 (
-  $as_echo "250. $at_setup_line: testing $at_desc ..."
+  $as_echo "256. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129347,7 +134509,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -129369,9 +134531,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:928: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o dancer.c dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:929"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:928"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129379,29 +134541,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:929"
+$as_echo "$at_srcdir/regression.at:928: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:928"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:928: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:928"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -129410,16 +134572,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:928: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:928"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -129428,7 +134590,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129436,135 +134598,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:929: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:929"
+$as_echo "$at_srcdir/regression.at:928: bison -o dancer.c dancer.y"
+at_fn_check_prepare_trace "regression.at:928"
 ( $at_check_trace; bison -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:929"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:929"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:929: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:929"
-( $at_check_trace; bison -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/regression.at:929: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS" "regression.at:929"
+$as_echo "$at_srcdir/regression.at:928: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS" "regression.at:928"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:929:  \$PREPARSER ./dancer"
-at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:929"
+$as_echo "$at_srcdir/regression.at:928:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:928"
 ( $at_check_trace;  $PREPARSER ./dancer
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:929: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:929"
+$as_echo "$at_srcdir/regression.at:928: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:928"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -129573,7 +134649,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected ':'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:928"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129583,13 +134659,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_250
-#AT_START_251
-at_fn_group_banner 251 'regression.at:930' \
+#AT_STOP_256
+#AT_START_257
+at_fn_group_banner 257 'regression.at:929' \
   "Dancer %glr-parser" "                             " 17
 at_xfail=no
 (
-  $as_echo "251. $at_setup_line: testing $at_desc ..."
+  $as_echo "257. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129667,7 +134743,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -129689,95 +134765,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:930"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:930"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:930: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:930"
-( $at_check_trace; bison -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o dancer.c dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:930"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:929"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129785,29 +134775,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:930"
+$as_echo "$at_srcdir/regression.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:929"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -129816,16 +134806,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:929"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -129834,7 +134824,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129842,49 +134832,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:930: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:930"
+$as_echo "$at_srcdir/regression.at:929: bison -o dancer.c dancer.y"
+at_fn_check_prepare_trace "regression.at:929"
 ( $at_check_trace; bison -o dancer.c dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/regression.at:930: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS" "regression.at:930"
+$as_echo "$at_srcdir/regression.at:929: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS" "regression.at:929"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:930:  \$PREPARSER ./dancer"
-at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:930"
+$as_echo "$at_srcdir/regression.at:929:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:929"
 ( $at_check_trace;  $PREPARSER ./dancer
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:930: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:930"
+$as_echo "$at_srcdir/regression.at:929: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:929"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -129893,7 +134883,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected ':'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:929"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129903,13 +134893,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_251
-#AT_START_252
-at_fn_group_banner 252 'regression.at:931' \
+#AT_STOP_257
+#AT_START_258
+at_fn_group_banner 258 'regression.at:930' \
   "Dancer %skeleton \"lalr1.cc\"" "                    " 17
 at_xfail=no
 (
-  $as_echo "252. $at_setup_line: testing $at_desc ..."
+  $as_echo "258. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129986,7 +134976,7 @@ int yylex (yy::parser::semantic_type *lvalp)
   static size_t toknum = 0;
   int res;
   (void) lvalp;;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -130017,95 +135007,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:931: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:931"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:931: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y" "regression.at:931"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:931: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:931"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:931: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:931"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:931: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:931"
-( $at_check_trace; bison -o dancer.c dancer.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:931: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o dancer.cc dancer.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:931"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:930"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o dancer.cc dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -130113,29 +135017,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:931: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.cc dancer.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.cc dancer.y" "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.cc dancer.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.cc dancer.y" "regression.at:930"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o dancer.cc dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:931: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:931"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -130144,16 +135048,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:931: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:931"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:930"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -130162,7 +135066,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130170,63 +135074,63 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:931: bison -o dancer.cc dancer.y"
-at_fn_check_prepare_trace "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930: bison -o dancer.cc dancer.y"
+at_fn_check_prepare_trace "regression.at:930"
 ( $at_check_trace; bison -o dancer.cc dancer.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:931: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:930"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:931: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.cc $LIBS" "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o dancer dancer.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.cc $LIBS" "regression.at:930"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o dancer dancer.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:931:  \$PREPARSER ./dancer"
-at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:930"
 ( $at_check_trace;  $PREPARSER ./dancer
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:931: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:931"
+$as_echo "$at_srcdir/regression.at:930: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:930"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -130235,7 +135139,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected ':'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:931"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130245,13 +135149,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_252
-#AT_START_253
-at_fn_group_banner 253 'regression.at:1014' \
+#AT_STOP_258
+#AT_START_259
+at_fn_group_banner 259 'regression.at:1012' \
   "Expecting two tokens " "                          " 17
 at_xfail=no
 (
-  $as_echo "253. $at_setup_line: testing $at_desc ..."
+  $as_echo "259. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -130324,9 +135228,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1012: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o expect2.c expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1014"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1012"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -130334,29 +135238,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1012: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1012"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1012: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1012"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -130365,16 +135269,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1012: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1012"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -130383,7 +135287,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130391,135 +135295,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1014: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1012: bison -o expect2.c expect2.y"
+at_fn_check_prepare_trace "regression.at:1012"
 ( $at_check_trace; bison -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1014"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1014"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:1014: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1014"
-( $at_check_trace; bison -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS" "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1012: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS" "regression.at:1012"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1014:  \$PREPARSER ./expect2"
-at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1012:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1012"
 ( $at_check_trace;  $PREPARSER ./expect2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1014: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1012: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1012"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -130528,7 +135346,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '+', expecting A or B
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1012"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130538,13 +135356,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_253
-#AT_START_254
-at_fn_group_banner 254 'regression.at:1015' \
+#AT_STOP_259
+#AT_START_260
+at_fn_group_banner 260 'regression.at:1013' \
   "Expecting two tokens %glr-parser" "               " 17
 at_xfail=no
 (
-  $as_echo "254. $at_setup_line: testing $at_desc ..."
+  $as_echo "260. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -130617,95 +135435,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1015: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1015"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:1015: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1015"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1015: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1015"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1015: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1015"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:1015: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1015"
-( $at_check_trace; bison -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:1015: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1013: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o expect2.c expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1015"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1013"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -130713,29 +135445,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1015: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1015"
+$as_echo "$at_srcdir/regression.at:1013: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1013"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1015: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1013: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1015"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1013"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -130744,16 +135476,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1015: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1013: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1015"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1013"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -130762,7 +135494,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130770,49 +135502,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1015: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1015"
+$as_echo "$at_srcdir/regression.at:1013: bison -o expect2.c expect2.y"
+at_fn_check_prepare_trace "regression.at:1013"
 ( $at_check_trace; bison -o expect2.c expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/regression.at:1015: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS" "regression.at:1015"
+$as_echo "$at_srcdir/regression.at:1013: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS" "regression.at:1013"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1015:  \$PREPARSER ./expect2"
-at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1015"
+$as_echo "$at_srcdir/regression.at:1013:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1013"
 ( $at_check_trace;  $PREPARSER ./expect2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1015: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1015"
+$as_echo "$at_srcdir/regression.at:1013: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1013"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -130821,7 +135553,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '+', expecting A or B
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1015"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1013"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130831,13 +135563,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_254
-#AT_START_255
-at_fn_group_banner 255 'regression.at:1016' \
+#AT_STOP_260
+#AT_START_261
+at_fn_group_banner 261 'regression.at:1014' \
   "Expecting two tokens %skeleton \"lalr1.cc\"" "      " 17
 at_xfail=no
 (
-  $as_echo "255. $at_setup_line: testing $at_desc ..."
+  $as_echo "261. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -130913,95 +135645,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1016: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1016"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/regression.at:1016: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y" "regression.at:1016"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1016"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$XSLTPROC \\
-             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1016"
-( $at_check_trace; $XSLTPROC \
-             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/regression.at:1016: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1016"
-( $at_check_trace; bison -o expect2.c expect2.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
-  at_save_special_files
-  mkdir xml-tests
-    # Don't combine these Bison invocations since we want to be sure that
-  # --report=all isn't required to get the full XML file.
-  { set +x
-$as_echo "$at_srcdir/regression.at:1016: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o expect2.cc expect2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1016"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1014"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o expect2.cc expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131009,29 +135655,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1016: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.cc expect2.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.cc expect2.y" "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.cc expect2.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.cc expect2.y" "regression.at:1014"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o expect2.cc expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1016"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -131040,16 +135686,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1016"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1014"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -131058,7 +135704,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131066,63 +135712,63 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1016: bison -o expect2.cc expect2.y"
-at_fn_check_prepare_trace "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014: bison -o expect2.cc expect2.y"
+at_fn_check_prepare_trace "regression.at:1014"
 ( $at_check_trace; bison -o expect2.cc expect2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1014"
 ( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1016: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.cc $LIBS" "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o expect2 expect2.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.cc $LIBS" "regression.at:1014"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o expect2 expect2.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1016:  \$PREPARSER ./expect2"
-at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1014"
 ( $at_check_trace;  $PREPARSER ./expect2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1016: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1016"
+$as_echo "$at_srcdir/regression.at:1014: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1014"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131131,7 +135777,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '+', expecting A or B
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1016"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1014"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131141,13 +135787,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_255
-#AT_START_256
-at_fn_group_banner 256 'regression.at:1024' \
+#AT_STOP_261
+#AT_START_262
+at_fn_group_banner 262 'regression.at:1022' \
   "Braced code in declaration in rules section" "    " 17
 at_xfail=no
 (
-  $as_echo "256. $at_setup_line: testing $at_desc ..."
+  $as_echo "262. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131200,7 +135846,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -131223,9 +135869,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1063: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1061: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1063"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1061"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131233,29 +135879,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1061"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1063: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y" "regression.at:1063"
+$as_echo "$at_srcdir/regression.at:1061: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y" "regression.at:1061"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1061"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1063: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1061: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1063"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1061"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -131264,16 +135910,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1061"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1063: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1061: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1063"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1061"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -131282,7 +135928,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1061"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131290,35 +135936,35 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1063: bison -t -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1063"
+$as_echo "$at_srcdir/regression.at:1061: bison -t -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1061"
 ( $at_check_trace; bison -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1061"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1064: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1064"
+$as_echo "$at_srcdir/regression.at:1062: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1062"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1064"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1062"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1065:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1065"
+$as_echo "$at_srcdir/regression.at:1063:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1063"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131327,13 +135973,13 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Bison would once convert this action to a midrule because of the subsequent braced code.
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1065"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1065: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1065"
+$as_echo "$at_srcdir/regression.at:1063: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1063"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131354,7 +136000,7 @@ Stack now 0
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1065"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1063"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131364,13 +136010,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_256
-#AT_START_257
-at_fn_group_banner 257 'regression.at:1091' \
+#AT_STOP_262
+#AT_START_263
+at_fn_group_banner 263 'regression.at:1089' \
   "String alias declared after use" "                " 17
 at_xfail=no
 (
-  $as_echo "257. $at_setup_line: testing $at_desc ..."
+  $as_echo "263. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131392,9 +136038,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1104: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1102: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1104"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1102"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131402,29 +136048,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1104"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1104: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y" "regression.at:1104"
+$as_echo "$at_srcdir/regression.at:1102: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y" "regression.at:1102"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1104"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1104: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1102: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1104"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1102"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -131433,16 +136079,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1104"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1104: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1102: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1104"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1102"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -131451,7 +136097,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1104"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131459,15 +136105,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1104: bison -t -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1104"
+$as_echo "$at_srcdir/regression.at:1102: bison -t -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1102"
 ( $at_check_trace; bison -t -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1104"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131477,13 +136123,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_257
-#AT_START_258
-at_fn_group_banner 258 'regression.at:1114' \
+#AT_STOP_263
+#AT_START_264
+at_fn_group_banner 264 'regression.at:1112' \
   "Extra lookahead sets in report" "                 " 17
 at_xfail=no
 (
-  $as_echo "258. $at_setup_line: testing $at_desc ..."
+  $as_echo "264. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131507,9 +136153,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1129: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1127: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot --report=all input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1129"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1127"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131517,29 +136163,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1129"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1129: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input.y" "regression.at:1129"
+$as_echo "$at_srcdir/regression.at:1127: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input.y" "regression.at:1127"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1129"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1129: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1127: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1129"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1127"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -131548,16 +136194,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1129"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1129: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1127: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1129"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1127"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -131566,7 +136212,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1129"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131574,22 +136220,22 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1129: bison --report=all input.y"
-at_fn_check_prepare_trace "regression.at:1129"
+$as_echo "$at_srcdir/regression.at:1127: bison --report=all input.y"
+at_fn_check_prepare_trace "regression.at:1127"
 ( $at_check_trace; bison --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1129"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1130: sed -n '/^state 1\$/,/^state 2\$/p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 1$/,/^state 2$/p' input.output" "regression.at:1130"
+$as_echo "$at_srcdir/regression.at:1128: sed -n '/^state 1\$/,/^state 2\$/p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^state 1$/,/^state 2$/p' input.output" "regression.at:1128"
 ( $at_check_trace; sed -n '/^state 1$/,/^state 2$/p' input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131611,7 +136257,7 @@ echo >>"$at_stdout"; $as_echo "state 1
 state 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1130"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1128"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131620,13 +136266,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_258
-#AT_START_259
-at_fn_group_banner 259 'regression.at:1155' \
+#AT_STOP_264
+#AT_START_265
+at_fn_group_banner 265 'regression.at:1153' \
   "Token number in precedence declaration" "         " 17
 at_xfail=no
 (
-  $as_echo "259. $at_setup_line: testing $at_desc ..."
+  $as_echo "265. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131681,7 +136327,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -131703,9 +136349,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1195"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131713,29 +136359,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1193: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1195"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1193"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -131744,16 +136390,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1193: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1195"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1193"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -131762,7 +136408,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131770,8 +136416,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1195: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1193"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131781,7 +136427,7 @@ input.y:27.5-19: warning: rule useless in parser due to conflicts: sr_conflict:
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131796,15 +136442,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror" "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Werror" "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131841,9 +136487,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/regression.at:1193: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1195"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1193"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131851,7 +136497,7 @@ at_status=$? at_failed=false
 $at_check_filter
 $at_diff experr "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131859,15 +136505,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error" "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error" "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=error
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 $at_diff experr "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131876,28 +136522,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror" "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror" "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y -Wnone -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1195: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror" "regression.at:1195"
+$as_echo "$at_srcdir/regression.at:1193: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror" "regression.at:1193"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y --warnings=none -Werror
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1195"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1193"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131905,41 +136551,41 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1199: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1199"
+$as_echo "$at_srcdir/regression.at:1197: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1197"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1199"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1197"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1200:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1200"
+$as_echo "$at_srcdir/regression.at:1198:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1198"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1200"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1198"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1200: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1200"
+$as_echo "$at_srcdir/regression.at:1198: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1198"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1200"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1198"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131949,13 +136595,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_259
-#AT_START_260
-at_fn_group_banner 260 'regression.at:1213' \
+#AT_STOP_265
+#AT_START_266
+at_fn_group_banner 266 'regression.at:1211' \
   "parse-gram.y: LALR = IELR" "                      " 17
 at_xfail=no
 (
-  $as_echo "260. $at_setup_line: testing $at_desc ..."
+  $as_echo "266. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131968,9 +136614,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1218: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1216: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c -Dlr.type=lalr input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1218"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1216"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c -Dlr.type=lalr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131978,29 +136624,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1218"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1216"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1218: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=lalr input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=lalr input.y" "regression.at:1218"
+$as_echo "$at_srcdir/regression.at:1216: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=lalr input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=lalr input.y" "regression.at:1216"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=lalr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1218"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1216"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1218: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1216: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1218"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1216"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -132009,16 +136655,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1218"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1216"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1218: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1216: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1218"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1216"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -132027,7 +136673,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1218"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1216"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132035,15 +136681,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1218: bison -o input.c -Dlr.type=lalr input.y"
-at_fn_check_prepare_trace "regression.at:1218"
+$as_echo "$at_srcdir/regression.at:1216: bison -o input.c -Dlr.type=lalr input.y"
+at_fn_check_prepare_trace "regression.at:1216"
 ( $at_check_trace; bison -o input.c -Dlr.type=lalr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1218"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1216"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132056,9 +136702,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1221: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1219: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c -Dlr.type=ielr input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1221"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1219"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c -Dlr.type=ielr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132066,31 +136712,31 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1221"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1219"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1221: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=ielr input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=ielr input.y" "regression.at:1221"
+$as_echo "$at_srcdir/regression.at:1219: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=ielr input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=ielr input.y" "regression.at:1219"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c -Dlr.type=ielr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1221"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1219"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1221: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1219: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1221"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1219"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -132099,17 +136745,17 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1221"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1219"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1221: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1219: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1221"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1219"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -132118,7 +136764,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1221"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1219"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
@@ -132127,15 +136773,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1221: bison -o input.c -Dlr.type=ielr input.y"
-at_fn_check_prepare_trace "regression.at:1221"
+$as_echo "$at_srcdir/regression.at:1219: bison -o input.c -Dlr.type=ielr input.y"
+at_fn_check_prepare_trace "regression.at:1219"
 ( $at_check_trace; bison -o input.c -Dlr.type=ielr input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1221"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1219"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
@@ -132144,15 +136790,15 @@ $at_traceon; }
 mv input.c ielr.c
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1224: diff lalr.c ielr.c"
-at_fn_check_prepare_trace "regression.at:1224"
+$as_echo "$at_srcdir/regression.at:1222: diff lalr.c ielr.c"
+at_fn_check_prepare_trace "regression.at:1222"
 ( $at_check_trace; diff lalr.c ielr.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1222"
 $at_failed && at_fn_log_failure  \
 "lalr.c" \
 "ielr.c"
@@ -132163,13 +136809,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_260
-#AT_START_261
-at_fn_group_banner 261 'regression.at:1234' \
+#AT_STOP_266
+#AT_START_267
+at_fn_group_banner 267 'regression.at:1232' \
   "%error-verbose and YYSTACK_USE_ALLOCA" "          " 17
 at_xfail=no
 (
-  $as_echo "261. $at_setup_line: testing $at_desc ..."
+  $as_echo "267. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132241,7 +136887,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -132262,9 +136908,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1290: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1288: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1290"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1288"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132272,29 +136918,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1288"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1290: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1290"
+$as_echo "$at_srcdir/regression.at:1288: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1288"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1288"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1290: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1288: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1290"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1288"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -132303,16 +136949,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1288"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1290: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1288: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1290"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1288"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -132321,7 +136967,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1288"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132329,48 +136975,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1290: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1290"
+$as_echo "$at_srcdir/regression.at:1288: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1288"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1288"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1291: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1291"
+$as_echo "$at_srcdir/regression.at:1289: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1289"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1291"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1289"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1292:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1292"
+$as_echo "$at_srcdir/regression.at:1290:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1290"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1292"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1290"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1292: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1292"
+$as_echo "$at_srcdir/regression.at:1290: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1290"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -132380,7 +137026,7 @@ syntax error, unexpected \$end, expecting 12345678911234567892123456789312345678
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1292"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1290"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132390,13 +137036,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_261
-#AT_START_262
-at_fn_group_banner 262 'regression.at:1313' \
+#AT_STOP_267
+#AT_START_268
+at_fn_group_banner 268 'regression.at:1311' \
   "%error-verbose overflow" "                        " 17
 at_xfail=no
 (
-  $as_echo "262. $at_setup_line: testing $at_desc ..."
+  $as_echo "268. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132496,7 +137142,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -132520,9 +137166,9 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1398: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1398"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132530,29 +137176,29 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1398"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1400"
+$as_echo "$at_srcdir/regression.at:1398: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1398"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1398"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1398: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1398"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -132561,16 +137207,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1398"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1398: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1398"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -132579,7 +137225,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1398"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132587,15 +137233,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1400: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1400"
+$as_echo "$at_srcdir/regression.at:1398: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1398"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1398"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132607,35 +137253,35 @@ $at_traceon; }
 # as much sense.  We ignore the warnings.
 CFLAGS="$NO_WERROR_CFLAGS"
 { set +x
-$as_echo "$at_srcdir/regression.at:1407: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1407"
+$as_echo "$at_srcdir/regression.at:1405: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1405"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1407"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1409:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1409"
+$as_echo "$at_srcdir/regression.at:1407:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1407"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1409"
+at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1407"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1409: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1409"
+$as_echo "$at_srcdir/regression.at:1407: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1407"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -132646,7 +137292,7 @@ memory exhausted
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1409"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1407"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132656,13 +137302,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_262
-#AT_START_263
-at_fn_group_banner 263 'regression.at:1423' \
+#AT_STOP_268
+#AT_START_269
+at_fn_group_banner 269 'regression.at:1421' \
   "LAC: Exploratory stack" "                         " 17
 at_xfail=no
 (
-  $as_echo "263. $at_setup_line: testing $at_desc ..."
+  $as_echo "269. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132735,11 +137381,11 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1502: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1500: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
@@ -132749,15 +137395,15 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1502: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1500: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -132766,16 +137412,16 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1502: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1500: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1502"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1500"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -132784,16 +137430,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1502: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1500: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1502"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1500"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -132802,7 +137448,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132810,10 +137456,10 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1500: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -132824,47 +137470,47 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 21 shift/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1502"
+$as_echo "$at_srcdir/regression.at:1500: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1500"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1502:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
-at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1502"
+$as_echo "$at_srcdir/regression.at:1500:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1500"
 ( $at_check_trace;  $PREPARSER ./input > stdout.txt 2> stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1502"
+$as_echo "$at_srcdir/regression.at:1500: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1500"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132873,8 +137519,8 @@ $at_traceon; }
 # Make sure syntax error doesn't forget that 'a' is expected.  It would
 # be forgotten without lookahead correction.
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1502"
+$as_echo "$at_srcdir/regression.at:1500: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1500"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -132883,7 +137529,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "syntax error, unexpected 'c', expecting 'a' or 'b'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132891,9 +137537,9 @@ $at_traceon; }
 # Check number of default reductions in inconsistent states to be sure
 # syntax error is detected before unnecessary reductions are performed.
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1500: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132902,7 +137548,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "14" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132910,9 +137556,9 @@ $at_traceon; }
 # Check number of default reductions in consistent states to be sure
 # it is performed before the syntax error is detected.
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1500: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132921,7 +137567,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "2" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132929,9 +137575,9 @@ $at_traceon; }
 # Check number of reallocs to be sure reallocated memory isn't somehow
 # lost between LAC invocations.
 { set +x
-$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+$as_echo "$at_srcdir/regression.at:1500: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
 ( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
            || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -132940,7 +137586,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "3" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133015,11 +137661,11 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1503: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1501: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
@@ -133029,15 +137675,15 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1503: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1501: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -133046,16 +137692,16 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1503: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1501: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1503"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1501"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -133064,16 +137710,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1503: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1501: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1503"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1501"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -133082,7 +137728,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133090,10 +137736,10 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1501: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -133104,47 +137750,47 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 21 shift/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1503"
+$as_echo "$at_srcdir/regression.at:1501: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1501"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1503:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
-at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1503"
+$as_echo "$at_srcdir/regression.at:1501:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1501"
 ( $at_check_trace;  $PREPARSER ./input > stdout.txt 2> stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1503"
+$as_echo "$at_srcdir/regression.at:1501: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1501"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133153,8 +137799,8 @@ $at_traceon; }
 # Make sure syntax error doesn't forget that 'a' is expected.  It would
 # be forgotten without lookahead correction.
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1503"
+$as_echo "$at_srcdir/regression.at:1501: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1501"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -133163,7 +137809,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "syntax error, unexpected 'c', expecting 'a' or 'b'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133171,9 +137817,9 @@ $at_traceon; }
 # Check number of default reductions in inconsistent states to be sure
 # syntax error is detected before unnecessary reductions are performed.
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1501: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133182,7 +137828,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "14" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133190,9 +137836,9 @@ $at_traceon; }
 # Check number of default reductions in consistent states to be sure
 # it is performed before the syntax error is detected.
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1501: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133201,7 +137847,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "2" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133209,9 +137855,9 @@ $at_traceon; }
 # Check number of reallocs to be sure reallocated memory isn't somehow
 # lost between LAC invocations.
 { set +x
-$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+$as_echo "$at_srcdir/regression.at:1501: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
 ( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
            || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133220,7 +137866,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "3" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133294,11 +137940,11 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1504: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1502: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
@@ -133308,15 +137954,15 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1504: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1502: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -133325,16 +137971,16 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1504: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1502: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1504"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1502"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -133343,16 +137989,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1504: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1502: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1504"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1502"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -133361,7 +138007,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133369,10 +138015,10 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1502: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -133383,47 +138029,47 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 21 shift/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1504"
+$as_echo "$at_srcdir/regression.at:1502: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1502"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1504:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
-at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1504"
+$as_echo "$at_srcdir/regression.at:1502:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1502"
 ( $at_check_trace;  $PREPARSER ./input > stdout.txt 2> stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1504"
+$as_echo "$at_srcdir/regression.at:1502: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1502"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133432,8 +138078,8 @@ $at_traceon; }
 # Make sure syntax error doesn't forget that 'a' is expected.  It would
 # be forgotten without lookahead correction.
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1504"
+$as_echo "$at_srcdir/regression.at:1502: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1502"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -133442,7 +138088,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "syntax error, unexpected 'c', expecting 'a' or 'b'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133450,9 +138096,9 @@ $at_traceon; }
 # Check number of default reductions in inconsistent states to be sure
 # syntax error is detected before unnecessary reductions are performed.
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133461,7 +138107,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "14" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133469,9 +138115,9 @@ $at_traceon; }
 # Check number of default reductions in consistent states to be sure
 # it is performed before the syntax error is detected.
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
            < stdout.txt || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133480,7 +138126,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "2" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133488,9 +138134,9 @@ $at_traceon; }
 # Check number of reallocs to be sure reallocated memory isn't somehow
 # lost between LAC invocations.
 { set +x
-$as_echo "$at_srcdir/regression.at:1504: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+$as_echo "$at_srcdir/regression.at:1502: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1504"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
 ( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
            || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133499,7 +138145,7 @@ $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "3" | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1504"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1502"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133574,11 +138220,11 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1505: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+$as_echo "$at_srcdir/regression.at:1503: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
                   --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
@@ -133588,15 +138234,15 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1505: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1503: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
                  -Dparse.lac.memory-trace=full \\
                  -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -133605,16 +138251,942 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1503: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1503"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1503: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1503"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -Dparse.lac.memory-trace=full \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -Dparse.lac.memory-trace=full \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y: conflicts: 21 shift/reduce
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1503"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1503"
+( $at_check_trace;  $PREPARSER ./input > stdout.txt 2> stderr.txt
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1503"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+# Make sure syntax error doesn't forget that 'a' is expected.  It would
+# be forgotten without lookahead correction.
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1503"
+( $at_check_trace; grep 'syntax error,' stderr.txt
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "syntax error, unexpected 'c', expecting 'a' or 'b'
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Check number of default reductions in inconsistent states to be sure
+# syntax error is detected before unnecessary reductions are performed.
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+           < stdout.txt || exit 77"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
+           < stdout.txt || exit 77
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "14" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Check number of default reductions in consistent states to be sure
+# it is performed before the syntax error is detected.
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+           < stdout.txt || exit 77"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
+           < stdout.txt || exit 77
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "2" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+# Check number of reallocs to be sure reallocated memory isn't somehow
+# lost between LAC invocations.
+{ set +x
+$as_echo "$at_srcdir/regression.at:1503: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+           || exit 77"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1503"
+( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
+           || exit 77
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "3" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1503"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_269
+#AT_START_270
+at_fn_group_banner 270 'regression.at:1515' \
+  "LAC: Memory exhaustion" "                         " 17
+at_xfail=no
+(
+  $as_echo "270. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+# Check for memory exhaustion during parsing.
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%code {
+  #include <stdio.h>
+  static void yyerror (const char *msg);
+  static int yylex (void);
+  #define YYMAXDEPTH 8
+}
+
+%error-verbose
+
+%%
+
+S: A A A A A A A A A ;
+A: /*empty*/ | 'a' ;
+
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (const char *msg)
+{
+
+  fprintf (stderr, "%s\n", msg);
+}
+#include <assert.h>
+static
+int yylex (void)
+{
+  static char const input[] = "";
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  ;
+  return res;
+}
+int
+main (void)
+{
+  yydebug = 1;
+  return yyparse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/regression.at:1554: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1554"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:1554: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1554"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1554: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1554"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1554: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1554"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/regression.at:1554: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1554"
+( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y: conflicts: 8 shift/reduce
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1554: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1554"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1554"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1555:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1555"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1555"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1555: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1555"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "Starting parse
+Entering state 0
+Reading a token: Now at end of input.
+LAC: initial context established for \$end
+LAC: checking lookahead \$end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded)
+memory exhausted
+Cleanup: discarding lookahead token \$end ()
+Stack now 0
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1555"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+# Induce an immediate syntax error with an undefined token, and check
+# for memory exhaustion while building syntax error message.
+
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%code {
+  #include <stdio.h>
+  static void yyerror (const char *msg);
+  static int yylex (void);
+  #define YYMAXDEPTH 8
+}
+
+%error-verbose
+
+%%
+
+S: A A A A A A A A A ;
+A: /*empty*/ | 'a' ;
+
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (const char *msg)
+{
+
+  fprintf (stderr, "%s\n", msg);
+}
+#include <assert.h>
+static
+int yylex (void)
+{
+  static char const input[] = "z";
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  ;
+  return res;
+}
+int
+main (void)
+{
+  yydebug = 1;
+  return yyparse ();
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/regression.at:1568: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1568"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:1568: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1568"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1568: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1568"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1568: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1568"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/regression.at:1568: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+                 -t -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1568"
+( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
+                 -t -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y: conflicts: 8 shift/reduce
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1568: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1568"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1568"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1569:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1569"
+( $at_check_trace;  $PREPARSER ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1569"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1569: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1569"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "Starting parse
+Entering state 0
+Reading a token: Next token is token \$undefined ()
+LAC: initial context established for \$undefined
+LAC: checking lookahead \$undefined: Always Err
+Constructing syntax error message
+LAC: checking lookahead \$end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded)
+syntax error
+memory exhausted
+Cleanup: discarding lookahead token \$undefined ()
+Stack now 0
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1569"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_270
+#AT_START_271
+at_fn_group_banner 271 'regression.at:1664' \
+  "Lex and parse params: \"yacc.c\"" "                 " 17
+at_xfail=no
+(
+  $as_echo "271. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+## FIXME: Improve parsing of parse-param and use the generated
+## yyerror.
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%defines
+%locations
+%skeleton "yacc.c"
+%union { int ival; }
+%parse-param { int x }
+// Spaces, tabs, and new lines.
+%parse-param { 
+        int y   
+         
+}
+
+%{
+#include <stdio.h>
+#include <stdlib.h>
+
+
+static
+void
+yyerror (int x, int y, const char *msg)
+{
+  fprintf (stderr, "x: %d, y: %d, %s\n", x, y, msg);
+}
+
+  static int yylex (void);
+%}
+
+%%
+exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
+%%
+#include <assert.h>
+static
+int yylex (void)
+{
+  static char const input[] = "a";
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  ;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
+
+
+
+int
+main (void)
+{
+  return !!yyparse(1, 2);
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/regression.at:1664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1664"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:1664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1664"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1664: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1664"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  cp xml-tests/test.dot expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1664: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1664"
+( $at_check_trace; $XSLTPROC \
+             `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
+             xml-tests/test.xml
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/regression.at:1664: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1664"
+( $at_check_trace; bison -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/regression.at:1664: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1664"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1664: ./input"
+at_fn_check_prepare_trace "regression.at:1664"
+( $at_check_trace; ./input
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "x: 1, y: 2
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1664"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_271
+#AT_START_272
+at_fn_group_banner 272 'regression.at:1665' \
+  "Lex and parse params: \"glr.c\"" "                  " 17
+at_xfail=no
+(
+  $as_echo "272. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+
+
+## FIXME: Improve parsing of parse-param and use the generated
+## yyerror.
+cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%defines
+%locations
+%skeleton "glr.c"
+%union { int ival; }
+%parse-param { int x }
+// Spaces, tabs, and new lines.
+%parse-param { 
+        int y   
+         
+}
+
+%{
+#include <stdio.h>
+#include <stdlib.h>
+
+
+static
+void
+yyerror (int x, int y, const char *msg)
+{
+  fprintf (stderr, "x: %d, y: %d, %s\n", x, y, msg);
+}
+
+  static int yylex (void);
+%}
+
+%%
+exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
+%%
+#include <assert.h>
+static
+int yylex (void)
+{
+  static char const input[] = "a";
+  static size_t toknum = 0;
+  int res;
+  ;
+  assert (toknum < sizeof input / sizeof input[0]);
+  res = input[toknum++];
+  ;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
+
+
+
+int
+main (void)
+{
+  return !!yyparse(1, 2);
+}
+_ATEOF
+
+
+
+if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
+  at_save_special_files
+  mkdir xml-tests
+    # Don't combine these Bison invocations since we want to be sure that
+  # --report=all isn't required to get the full XML file.
+  { set +x
+$as_echo "$at_srcdir/regression.at:1665: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1665"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
+                  --graph=xml-tests/test.dot -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:1665: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y" "regression.at:1665"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1505: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1665: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1505"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1665"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -133623,16 +139195,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1505: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1665: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1505"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1665"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -133641,7 +139213,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133649,164 +139221,68 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1505: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -Dparse.lac.memory-trace=full \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
-( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -Dparse.lac.memory-trace=full \
-                 -t -o input.c input.y
+$as_echo "$at_srcdir/regression.at:1665: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1665"
+( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y: conflicts: 21 shift/reduce
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1505"
+   { set +x
+$as_echo "$at_srcdir/regression.at:1665: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1665"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
-at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1505"
-( $at_check_trace;  $PREPARSER ./input > stdout.txt 2> stderr.txt
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; tee stderr <"$at_stderr"
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1505"
-$at_failed && at_fn_log_failure
-$at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1505: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1505"
-( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+$as_echo "$at_srcdir/regression.at:1665: ./input"
+at_fn_check_prepare_trace "regression.at:1665"
+( $at_check_trace; ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-# Make sure syntax error doesn't forget that 'a' is expected.  It would
-# be forgotten without lookahead correction.
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1505"
-( $at_check_trace; grep 'syntax error,' stderr.txt
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "syntax error, unexpected 'c', expecting 'a' or 'b'
+echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-# Check number of default reductions in inconsistent states to be sure
-# syntax error is detected before unnecessary reductions are performed.
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
-           < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
-( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
-           < stdout.txt || exit 77
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "14" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-# Check number of default reductions in consistent states to be sure
-# it is performed before the syntax error is detected.
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
-           < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
-( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
-           < stdout.txt || exit 77
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "2" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-# Check number of reallocs to be sure reallocated memory isn't somehow
-# lost between LAC invocations.
-{ set +x
-$as_echo "$at_srcdir/regression.at:1505: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
-           || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1505"
-( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
-           || exit 77
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo >>"$at_stdout"; $as_echo "3" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1505"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1665"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
-
-
-
   set +x
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_263
-#AT_START_264
-at_fn_group_banner 264 'regression.at:1517' \
-  "LAC: Memory exhaustion" "                         " 17
+#AT_STOP_272
+#AT_START_273
+at_fn_group_banner 273 'regression.at:1666' \
+  "Lex and parse params: \"lalr1.cc\"" "               " 17
 at_xfail=no
 (
-  $as_echo "264. $at_setup_line: testing $at_desc ..."
+  $as_echo "273. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
 
 
-# Check for memory exhaustion during parsing.
-
+## FIXME: Improve parsing of parse-param and use the generated
+## yyerror.
 cat >input.y <<'_ATEOF'
 %code top {
 #include <config.h>
@@ -133816,47 +139292,66 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%code {
-  #include <stdio.h>
-  static void yyerror (const char *msg);
-  static int yylex (void);
-  #define YYMAXDEPTH 8
+%defines
+%locations
+%skeleton "lalr1.cc"
+%union { int ival; }
+%parse-param { int x }
+// Spaces, tabs, and new lines.
+%parse-param { 
+        int y   
+         
 }
 
-%error-verbose
+%{
+#include <stdio.h>
+#include <stdlib.h>
 
-%%
 
-S: A A A A A A A A A ;
-A: /*empty*/ | 'a' ;
 
-%%
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
+  static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+%}
 
-  fprintf (stderr, "%s\n", msg);
-}
+%%
+exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
+%%
 #include <assert.h>
 static
-int yylex (void)
+int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static char const input[] = "";
+  static char const input[] = "a";
   static size_t toknum = 0;
   int res;
-  ;
-  assert (toknum < sizeof input);
+  (void) lvalp;(void) llocp;
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
+  (*llocp).begin.line = (*llocp).end.line = 1;
+  (*llocp).begin.column = (*llocp).end.column = toknum;
   return res;
 }
+
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
+{
+  (void) l;
+  std::cerr << l << ": " << m << std::endl;
+}
+
+int
+yyparse (int x, int y)
+{
+  yy::parser parser(x, y);
+  return parser.parse ();
+}
+
+
 int
 main (void)
 {
-  yydebug = 1;
-  return yyparse ();
+  return !!yyparse(1, 2);
 }
 _ATEOF
 
@@ -133868,43 +139363,39 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1556: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1556"
+$as_echo "$at_srcdir/regression.at:1666: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.cc input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1666"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+                  --graph=xml-tests/test.dot -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1556: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1556"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+$as_echo "$at_srcdir/regression.at:1666: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y" "regression.at:1666"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1556: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1666: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1556"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1666"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -133913,16 +139404,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1556: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1666: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1556"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1666"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -133931,7 +139422,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133939,78 +139430,82 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1556: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1556"
-( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+$as_echo "$at_srcdir/regression.at:1666: bison -o input.cc input.y"
+at_fn_check_prepare_trace "regression.at:1666"
+( $at_check_trace; bison -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y: conflicts: 8 shift/reduce
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
 { set +x
-$as_echo "$at_srcdir/regression.at:1556: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1556"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+$as_echo "$at_srcdir/regression.at:1666: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1666"
+( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1556"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
-
 { set +x
-$as_echo "$at_srcdir/regression.at:1557:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1557"
-( $at_check_trace;  $PREPARSER ./input
+$as_echo "$at_srcdir/regression.at:1666: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "regression.at:1666"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo stderr:; tee stderr <"$at_stderr"
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1557"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
 { set +x
-$as_echo "$at_srcdir/regression.at:1557: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1557"
-( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+$as_echo "$at_srcdir/regression.at:1666: ./input"
+at_fn_check_prepare_trace "regression.at:1666"
+( $at_check_trace; ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "Starting parse
-Entering state 0
-Reading a token: Now at end of input.
-LAC: initial context established for \$end
-LAC: checking lookahead \$end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded)
-memory exhausted
-Cleanup: discarding lookahead token \$end ()
-Stack now 0
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
-  $at_diff - "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1557"
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1666"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-# Induce an immediate syntax error with an undefined token, and check
-# for memory exhaustion while building syntax error message.
+  set +x
+  $at_times_p && times >"$at_times_file"
+) 5>&1 2>&1 7>&- | eval $at_tee_pipe
+read at_status <"$at_status_file"
+#AT_STOP_273
+#AT_START_274
+at_fn_group_banner 274 'regression.at:1667' \
+  "Lex and parse params: \"glr.cc\"" "                 " 17
+at_xfail=no
+(
+  $as_echo "274. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
 
+
+
+## FIXME: Improve parsing of parse-param and use the generated
+## yyerror.
 cat >input.y <<'_ATEOF'
 %code top {
 #include <config.h>
@@ -134020,47 +139515,66 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%code {
-  #include <stdio.h>
-  static void yyerror (const char *msg);
-  static int yylex (void);
-  #define YYMAXDEPTH 8
+%defines
+%locations
+%skeleton "glr.cc"
+%union { int ival; }
+%parse-param { int x }
+// Spaces, tabs, and new lines.
+%parse-param { 
+        int y   
+         
 }
 
-%error-verbose
+%{
+#include <stdio.h>
+#include <stdlib.h>
 
-%%
 
-S: A A A A A A A A A ;
-A: /*empty*/ | 'a' ;
 
-%%
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
+  static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+%}
 
-  fprintf (stderr, "%s\n", msg);
-}
+%%
+exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
+%%
 #include <assert.h>
 static
-int yylex (void)
+int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static char const input[] = "z";
+  static char const input[] = "a";
   static size_t toknum = 0;
   int res;
-  ;
-  assert (toknum < sizeof input);
+  (void) lvalp;(void) llocp;
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
+  (*llocp).begin.line = (*llocp).end.line = 1;
+  (*llocp).begin.column = (*llocp).end.column = toknum;
   return res;
 }
+
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
+{
+  (void) l;
+  std::cerr << l << ": " << m << std::endl;
+}
+
+int
+yyparse (int x, int y)
+{
+  yy::parser parser(x, y);
+  return parser.parse ();
+}
+
+
 int
 main (void)
 {
-  yydebug = 1;
-  return yyparse ();
+  return !!yyparse(1, 2);
 }
 _ATEOF
 
@@ -134072,43 +139586,39 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
     # Don't combine these Bison invocations since we want to be sure that
   # --report=all isn't required to get the full XML file.
   { set +x
-$as_echo "$at_srcdir/regression.at:1570: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
-                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1570"
+$as_echo "$at_srcdir/regression.at:1667: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \\
+                  --graph=xml-tests/test.dot -o input.cc input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1667"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --report-file=xml-tests/test.output \
-                  --graph=xml-tests/test.dot -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+                  --graph=xml-tests/test.dot -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:1570: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1570"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+$as_echo "$at_srcdir/regression.at:1667: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y" "regression.at:1667"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1570: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1667: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2text.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1570"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1667"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml
@@ -134117,16 +139627,16 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   cp xml-tests/test.dot expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1570: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1667: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
              xml-tests/test.xml"
-at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1570"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1667"
 ( $at_check_trace; $XSLTPROC \
              `VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --print-datadir`/xslt/xml2dot.xsl \
              xml-tests/test.xml
@@ -134135,7 +139645,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134143,91 +139653,75 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1570: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
-                 -t -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1570"
-( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
-                 -t -o input.c input.y
+$as_echo "$at_srcdir/regression.at:1667: bison -o input.cc input.y"
+at_fn_check_prepare_trace "regression.at:1667"
+( $at_check_trace; bison -o input.cc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y: conflicts: 8 shift/reduce
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
 { set +x
-$as_echo "$at_srcdir/regression.at:1570: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "regression.at:1570"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+$as_echo "$at_srcdir/regression.at:1667: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1667"
+( $at_check_trace; $BISON_CXX_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1570"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
-
 { set +x
-$as_echo "$at_srcdir/regression.at:1571:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1571"
-( $at_check_trace;  $PREPARSER ./input
+$as_echo "$at_srcdir/regression.at:1667: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "regression.at:1667"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo stderr:; tee stderr <"$at_stderr"
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1571"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
 { set +x
-$as_echo "$at_srcdir/regression.at:1571: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:1571"
-( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+$as_echo "$at_srcdir/regression.at:1667: ./input"
+at_fn_check_prepare_trace "regression.at:1667"
+( $at_check_trace; ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "Starting parse
-Entering state 0
-Reading a token: Next token is token \$undefined ()
-LAC: initial context established for \$undefined
-LAC: checking lookahead \$undefined: Always Err
-Constructing syntax error message
-LAC: checking lookahead \$end: R2 G3 R2 G5 R2 G6 R2 G7 R2 G8 R2 G9 R2 G10 R2 G11 R2 (max size exceeded)
-syntax error
-memory exhausted
-Cleanup: discarding lookahead token \$undefined ()
-Stack now 0
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
-  $at_diff - "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1571"
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
-
   set +x
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_264
-#AT_START_265
-at_fn_group_banner 265 'c++.at:102' \
+#AT_STOP_274
+#AT_START_275
+at_fn_group_banner 275 'c++.at:102' \
   "Doxygen Public Documentation" "                   " 18
 at_xfail=no
 (
-  $as_echo "265. $at_setup_line: testing $at_desc ..."
+  $as_echo "275. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -134410,13 +139904,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_265
-#AT_START_266
-at_fn_group_banner 266 'c++.at:103' \
+#AT_STOP_275
+#AT_START_276
+at_fn_group_banner 276 'c++.at:103' \
   "Doxygen Private Documentation" "                  " 18
 at_xfail=no
 (
-  $as_echo "266. $at_setup_line: testing $at_desc ..."
+  $as_echo "276. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -134599,13 +140093,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_266
-#AT_START_267
-at_fn_group_banner 267 'c++.at:161' \
+#AT_STOP_276
+#AT_START_277
+at_fn_group_banner 277 'c++.at:161' \
   "Relative namespace references" "                  " 18
 at_xfail=no
 (
-  $as_echo "267. $at_setup_line: testing $at_desc ..."
+  $as_echo "277. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -135185,13 +140679,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_267
-#AT_START_268
-at_fn_group_banner 268 'c++.at:167' \
+#AT_STOP_277
+#AT_START_278
+at_fn_group_banner 278 'c++.at:167' \
   "Absolute namespace references" "                  " 18
 at_xfail=no
 (
-  $as_echo "268. $at_setup_line: testing $at_desc ..."
+  $as_echo "278. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136344,13 +141838,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_268
-#AT_START_269
-at_fn_group_banner 269 'c++.at:176' \
+#AT_STOP_278
+#AT_START_279
+at_fn_group_banner 279 'c++.at:176' \
   "Syntactically invalid namespace references" "     " 18
 at_xfail=no
 (
-  $as_echo "269. $at_setup_line: testing $at_desc ..."
+  $as_echo "279. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -137049,13 +142543,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_269
-#AT_START_270
-at_fn_group_banner 270 'java.at:360' \
+#AT_STOP_279
+#AT_START_280
+at_fn_group_banner 280 'java.at:360' \
   "Calculator " "                                    " 19
 at_xfail=no
 (
-  $as_echo "270. $at_setup_line: testing $at_desc ..."
+  $as_echo "280. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -137817,13 +143311,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_270
-#AT_START_271
-at_fn_group_banner 271 'java.at:360' \
+#AT_STOP_280
+#AT_START_281
+at_fn_group_banner 281 'java.at:360' \
   "Calculator %error-verbose " "                     " 19
 at_xfail=no
 (
-  $as_echo "271. $at_setup_line: testing $at_desc ..."
+  $as_echo "281. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -138576,13 +144070,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_271
-#AT_START_272
-at_fn_group_banner 272 'java.at:360' \
+#AT_STOP_281
+#AT_START_282
+at_fn_group_banner 282 'java.at:360' \
   "Calculator %locations " "                         " 19
 at_xfail=no
 (
-  $as_echo "272. $at_setup_line: testing $at_desc ..."
+  $as_echo "282. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -139349,13 +144843,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_272
-#AT_START_273
-at_fn_group_banner 273 'java.at:360' \
+#AT_STOP_282
+#AT_START_283
+at_fn_group_banner 283 'java.at:360' \
   "Calculator %error-verbose %locations " "          " 19
 at_xfail=no
 (
-  $as_echo "273. $at_setup_line: testing $at_desc ..."
+  $as_echo "283. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -140113,13 +145607,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_273
-#AT_START_274
-at_fn_group_banner 274 'java.at:369' \
+#AT_STOP_283
+#AT_START_284
+at_fn_group_banner 284 'java.at:369' \
   "Calculator %lex-param { InputStream is } " "      " 19
 at_xfail=no
 (
-  $as_echo "274. $at_setup_line: testing $at_desc ..."
+  $as_echo "284. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -140879,13 +146373,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_274
-#AT_START_275
-at_fn_group_banner 275 'java.at:369' \
+#AT_STOP_284
+#AT_START_285
+at_fn_group_banner 285 'java.at:369' \
   "Calculator %error-verbose %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "275. $at_setup_line: testing $at_desc ..."
+  $as_echo "285. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -141636,13 +147130,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_275
-#AT_START_276
-at_fn_group_banner 276 'java.at:369' \
+#AT_STOP_285
+#AT_START_286
+at_fn_group_banner 286 'java.at:369' \
   "Calculator %locations %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "276. $at_setup_line: testing $at_desc ..."
+  $as_echo "286. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -142407,13 +147901,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_276
-#AT_START_277
-at_fn_group_banner 277 'java.at:369' \
+#AT_STOP_286
+#AT_START_287
+at_fn_group_banner 287 'java.at:369' \
   "Calculator %error-verbose %locations %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "277. $at_setup_line: testing $at_desc ..."
+  $as_echo "287. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -143169,13 +148663,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_277
-#AT_START_278
-at_fn_group_banner 278 'java.at:455' \
+#AT_STOP_287
+#AT_START_288
+at_fn_group_banner 288 'java.at:455' \
   "Java parser class and package names" "            " 20
 at_xfail=no
 (
-  $as_echo "278. $at_setup_line: testing $at_desc ..."
+  $as_echo "288. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -143791,13 +149285,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_278
-#AT_START_279
-at_fn_group_banner 279 'java.at:476' \
+#AT_STOP_288
+#AT_START_289
+at_fn_group_banner 289 'java.at:476' \
   "Java parser class modifiers" "                    " 20
 at_xfail=no
 (
-  $as_echo "279. $at_setup_line: testing $at_desc ..."
+  $as_echo "289. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -145493,13 +150987,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_279
-#AT_START_280
-at_fn_group_banner 280 'java.at:534' \
+#AT_STOP_289
+#AT_START_290
+at_fn_group_banner 290 'java.at:534' \
   "Java parser class extends and implements" "       " 20
 at_xfail=no
 (
-  $as_echo "280. $at_setup_line: testing $at_desc ..."
+  $as_echo "290. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -145965,13 +151459,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_280
-#AT_START_281
-at_fn_group_banner 281 'java.at:554' \
+#AT_STOP_290
+#AT_START_291
+at_fn_group_banner 291 'java.at:554' \
   "Java %parse-param and %lex-param" "               " 20
 at_xfail=no
 (
-  $as_echo "281. $at_setup_line: testing $at_desc ..."
+  $as_echo "291. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -147851,13 +153345,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_281
-#AT_START_282
-at_fn_group_banner 282 'java.at:628' \
+#AT_STOP_291
+#AT_START_292
+at_fn_group_banner 292 'java.at:628' \
   "Java throws specifications" "                     " 20
 at_xfail=no
 (
-  $as_echo "282. $at_setup_line: testing $at_desc ..."
+  $as_echo "292. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -154178,13 +159672,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_282
-#AT_START_283
-at_fn_group_banner 283 'java.at:717' \
+#AT_STOP_292
+#AT_START_293
+at_fn_group_banner 293 'java.at:717' \
   "Java stype, position_class and location_class" "  " 20
 at_xfail=no
 (
-  $as_echo "283. $at_setup_line: testing $at_desc ..."
+  $as_echo "293. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -154573,13 +160067,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_283
-#AT_START_284
-at_fn_group_banner 284 'java.at:748' \
+#AT_STOP_293
+#AT_START_294
+at_fn_group_banner 294 'java.at:748' \
   "Java syntax error handling without error token" " " 20
 at_xfail=no
 (
-  $as_echo "284. $at_setup_line: testing $at_desc ..."
+  $as_echo "294. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -154788,13 +160282,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_284
-#AT_START_285
-at_fn_group_banner 285 'cxx-type.at:394' \
+#AT_STOP_294
+#AT_START_295
+at_fn_group_banner 295 'cxx-type.at:394' \
   "GLR: Resolve ambiguity, impure, no locations" "   " 21
 at_xfail=no
 (
-  $as_echo "285. $at_setup_line: testing $at_desc ..."
+  $as_echo "295. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -155241,13 +160735,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_285
-#AT_START_286
-at_fn_group_banner 286 'cxx-type.at:401' \
+#AT_STOP_295
+#AT_START_296
+at_fn_group_banner 296 'cxx-type.at:401' \
   "GLR: Resolve ambiguity, impure, locations" "      " 21
 at_xfail=no
 (
-  $as_echo "286. $at_setup_line: testing $at_desc ..."
+  $as_echo "296. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -155709,13 +161203,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_286
-#AT_START_287
-at_fn_group_banner 287 'cxx-type.at:407' \
+#AT_STOP_296
+#AT_START_297
+at_fn_group_banner 297 'cxx-type.at:407' \
   "GLR: Resolve ambiguity, pure, no locations" "     " 21
 at_xfail=no
 (
-  $as_echo "287. $at_setup_line: testing $at_desc ..."
+  $as_echo "297. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -156162,13 +161656,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_287
-#AT_START_288
-at_fn_group_banner 288 'cxx-type.at:414' \
+#AT_STOP_297
+#AT_START_298
+at_fn_group_banner 298 'cxx-type.at:414' \
   "GLR: Resolve ambiguity, pure, locations" "        " 21
 at_xfail=no
 (
-  $as_echo "288. $at_setup_line: testing $at_desc ..."
+  $as_echo "298. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -156630,13 +162124,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_288
-#AT_START_289
-at_fn_group_banner 289 'cxx-type.at:421' \
+#AT_STOP_298
+#AT_START_299
+at_fn_group_banner 299 'cxx-type.at:421' \
   "GLR: Merge conflicting parses, impure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "289. $at_setup_line: testing $at_desc ..."
+  $as_echo "299. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -157088,13 +162582,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_289
-#AT_START_290
-at_fn_group_banner 290 'cxx-type.at:428' \
+#AT_STOP_299
+#AT_START_300
+at_fn_group_banner 300 'cxx-type.at:428' \
   "GLR: Merge conflicting parses, impure, locations" "" 21
 at_xfail=no
 (
-  $as_echo "290. $at_setup_line: testing $at_desc ..."
+  $as_echo "300. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -157561,13 +163055,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_290
-#AT_START_291
-at_fn_group_banner 291 'cxx-type.at:435' \
+#AT_STOP_300
+#AT_START_301
+at_fn_group_banner 301 'cxx-type.at:435' \
   "GLR: Merge conflicting parses, pure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "291. $at_setup_line: testing $at_desc ..."
+  $as_echo "301. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -158019,13 +163513,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_291
-#AT_START_292
-at_fn_group_banner 292 'cxx-type.at:441' \
+#AT_STOP_301
+#AT_START_302
+at_fn_group_banner 302 'cxx-type.at:441' \
   "GLR: Merge conflicting parses, pure, locations" " " 21
 at_xfail=no
 (
-  $as_echo "292. $at_setup_line: testing $at_desc ..."
+  $as_echo "302. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -158492,13 +163986,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_292
-#AT_START_293
-at_fn_group_banner 293 'cxx-type.at:448' \
+#AT_STOP_302
+#AT_START_303
+at_fn_group_banner 303 'cxx-type.at:448' \
   "GLR: Verbose messages, resolve ambiguity, impure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "293. $at_setup_line: testing $at_desc ..."
+  $as_echo "303. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -158950,13 +164444,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_293
-#AT_START_294
-at_fn_group_banner 294 'glr-regression.at:25' \
+#AT_STOP_303
+#AT_START_304
+at_fn_group_banner 304 'glr-regression.at:25' \
   "Badly Collapsed GLR States" "                     " 22
 at_xfail=no
 (
-  $as_echo "294. $at_setup_line: testing $at_desc ..."
+  $as_echo "304. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -159188,13 +164682,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_294
-#AT_START_295
-at_fn_group_banner 295 'glr-regression.at:117' \
+#AT_STOP_304
+#AT_START_305
+at_fn_group_banner 305 'glr-regression.at:117' \
   "Improper handling of embedded actions and dollar(-N) in GLR parsers" "" 22
 at_xfail=no
 (
-  $as_echo "295. $at_setup_line: testing $at_desc ..."
+  $as_echo "305. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -159501,13 +164995,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_295
-#AT_START_296
-at_fn_group_banner 296 'glr-regression.at:233' \
+#AT_STOP_305
+#AT_START_306
+at_fn_group_banner 306 'glr-regression.at:233' \
   "Improper merging of GLR delayed action sets" "    " 22
 at_xfail=no
 (
-  $as_echo "296. $at_setup_line: testing $at_desc ..."
+  $as_echo "306. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -159756,13 +165250,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_296
-#AT_START_297
-at_fn_group_banner 297 'glr-regression.at:345' \
+#AT_STOP_306
+#AT_START_307
+at_fn_group_banner 307 'glr-regression.at:345' \
   "Duplicate representation of merged trees" "       " 22
 at_xfail=no
 (
-  $as_echo "297. $at_setup_line: testing $at_desc ..."
+  $as_echo "307. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -159828,7 +165322,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -160003,13 +165497,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_297
-#AT_START_298
-at_fn_group_banner 298 'glr-regression.at:436' \
+#AT_STOP_307
+#AT_START_308
+at_fn_group_banner 308 'glr-regression.at:436' \
   "User destructor for unresolved GLR semantic value" "" 22
 at_xfail=no
 (
-  $as_echo "298. $at_setup_line: testing $at_desc ..."
+  $as_echo "308. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160060,7 +165554,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -160219,13 +165713,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_298
-#AT_START_299
-at_fn_group_banner 299 'glr-regression.at:496' \
+#AT_STOP_308
+#AT_START_309
+at_fn_group_banner 309 'glr-regression.at:496' \
   "User destructor after an error during a split parse" "" 22
 at_xfail=no
 (
-  $as_echo "299. $at_setup_line: testing $at_desc ..."
+  $as_echo "309. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160276,7 +165770,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -160429,13 +165923,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_299
-#AT_START_300
-at_fn_group_banner 300 'glr-regression.at:550' \
+#AT_STOP_309
+#AT_START_310
+at_fn_group_banner 310 'glr-regression.at:550' \
   "Duplicated user destructor for lookahead" "       " 22
 at_xfail=no
 (
-  $as_echo "300. $at_setup_line: testing $at_desc ..."
+  $as_echo "310. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160660,13 +166154,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_300
-#AT_START_301
-at_fn_group_banner 301 'glr-regression.at:639' \
+#AT_STOP_310
+#AT_START_311
+at_fn_group_banner 311 'glr-regression.at:639' \
   "Incorrectly initialized location for empty right-hand side in GLR" "" 22
 at_xfail=no
 (
-  $as_echo "301. $at_setup_line: testing $at_desc ..."
+  $as_echo "311. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160897,13 +166391,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_301
-#AT_START_302
-at_fn_group_banner 302 'glr-regression.at:733' \
+#AT_STOP_311
+#AT_START_312
+at_fn_group_banner 312 'glr-regression.at:733' \
   "No users destructors if stack 0 deleted" "        " 22
 at_xfail=no
 (
-  $as_echo "302. $at_setup_line: testing $at_desc ..."
+  $as_echo "312. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161119,13 +166613,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_302
-#AT_START_303
-at_fn_group_banner 303 'glr-regression.at:810' \
+#AT_STOP_312
+#AT_START_313
+at_fn_group_banner 313 'glr-regression.at:810' \
   "Corrupted semantic options if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "303. $at_setup_line: testing $at_desc ..."
+  $as_echo "313. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161177,7 +166671,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -161330,13 +166824,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_303
-#AT_START_304
-at_fn_group_banner 304 'glr-regression.at:864' \
+#AT_STOP_313
+#AT_START_314
+at_fn_group_banner 314 'glr-regression.at:864' \
   "Undesirable destructors if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "304. $at_setup_line: testing $at_desc ..."
+  $as_echo "314. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161389,7 +166883,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -161545,13 +167039,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_304
-#AT_START_305
-at_fn_group_banner 305 'glr-regression.at:922' \
+#AT_STOP_314
+#AT_START_315
+at_fn_group_banner 315 'glr-regression.at:922' \
   "Leaked semantic values if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "305. $at_setup_line: testing $at_desc ..."
+  $as_echo "315. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161655,7 +167149,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   if (res == PARENT_RHS_AFTER)
     parent_rhs_after_value = 1;;
@@ -161822,13 +167316,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_305
-#AT_START_306
-at_fn_group_banner 306 'glr-regression.at:1045' \
+#AT_STOP_315
+#AT_START_316
+at_fn_group_banner 316 'glr-regression.at:1045' \
   "Incorrect lookahead during deterministic GLR" "   " 22
 at_xfail=no
 (
-  $as_echo "306. $at_setup_line: testing $at_desc ..."
+  $as_echo "316. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161921,7 +167415,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   yylval.value = res + 'A' - 'a';
   return res;
@@ -162102,13 +167596,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_306
-#AT_START_307
-at_fn_group_banner 307 'glr-regression.at:1169' \
+#AT_STOP_316
+#AT_START_317
+at_fn_group_banner 317 'glr-regression.at:1169' \
   "Incorrect lookahead during nondeterministic GLR" "" 22
 at_xfail=no
 (
-  $as_echo "307. $at_setup_line: testing $at_desc ..."
+  $as_echo "317. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -162464,13 +167958,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_307
-#AT_START_308
-at_fn_group_banner 308 'glr-regression.at:1386' \
+#AT_STOP_317
+#AT_START_318
+at_fn_group_banner 318 'glr-regression.at:1386' \
   "Leaked semantic values when reporting ambiguity" "" 22
 at_xfail=no
 (
-  $as_echo "308. $at_setup_line: testing $at_desc ..."
+  $as_echo "318. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -162545,7 +168039,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -162703,13 +168197,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_308
-#AT_START_309
-at_fn_group_banner 309 'glr-regression.at:1468' \
+#AT_STOP_318
+#AT_START_319
+at_fn_group_banner 319 'glr-regression.at:1468' \
   "Leaked lookahead after nondeterministic parse syntax error" "" 22
 at_xfail=no
 (
-  $as_echo "309. $at_setup_line: testing $at_desc ..."
+  $as_echo "319. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -162760,7 +168254,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   if (res == 'b')
     lookahead_value = 1;
@@ -162919,13 +168413,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_309
-#AT_START_310
-at_fn_group_banner 310 'glr-regression.at:1528' \
+#AT_STOP_319
+#AT_START_320
+at_fn_group_banner 320 'glr-regression.at:1528' \
   "Uninitialized location when reporting ambiguity" "" 22
 at_xfail=no
 (
-  $as_echo "310. $at_setup_line: testing $at_desc ..."
+  $as_echo "320. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163158,13 +168652,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_310
-#AT_START_311
-at_fn_group_banner 311 'glr-regression.at:1613' \
+#AT_STOP_320
+#AT_START_321
+at_fn_group_banner 321 'glr-regression.at:1613' \
   "Missed %merge type warnings when LHS type is declared later" "" 22
 at_xfail=no
 (
-  $as_echo "311. $at_setup_line: testing $at_desc ..."
+  $as_echo "321. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163219,7 +168713,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -163259,13 +168753,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_311
-#AT_START_312
-at_fn_group_banner 312 'glr-regression.at:1666' \
+#AT_STOP_321
+#AT_START_322
+at_fn_group_banner 322 'glr-regression.at:1666' \
   "Ambiguity reports" "                              " 22
 at_xfail=no
 (
-  $as_echo "312. $at_setup_line: testing $at_desc ..."
+  $as_echo "322. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163306,7 +168800,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -163520,13 +169014,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_312
-#AT_START_313
-at_fn_group_banner 313 'push.at:24' \
+#AT_STOP_322
+#AT_START_323
+at_fn_group_banner 323 'push.at:24' \
   "Memory Leak for Early Deletion" "                 " 23
 at_xfail=no
 (
-  $as_echo "313. $at_setup_line: testing $at_desc ..."
+  $as_echo "323. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163725,13 +169219,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_313
-#AT_START_314
-at_fn_group_banner 314 'push.at:83' \
+#AT_STOP_323
+#AT_START_324
+at_fn_group_banner 324 'push.at:83' \
   "Multiple impure instances" "                      " 23
 at_xfail=no
 (
-  $as_echo "314. $at_setup_line: testing $at_desc ..."
+  $as_echo "324. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163779,7 +169273,7 @@ int yylex (void)
   static size_t toknum = 0;
   int res;
   ;
-  assert (toknum < sizeof input);
+  assert (toknum < sizeof input / sizeof input[0]);
   res = input[toknum++];
   ;
   return res;
@@ -164130,13 +169624,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_314
-#AT_START_315
-at_fn_group_banner 315 'push.at:144' \
+#AT_STOP_324
+#AT_START_325
+at_fn_group_banner 325 'push.at:144' \
   "Unsupported Skeletons" "                          " 23
 at_xfail=no
 (
-  $as_echo "315. $at_setup_line: testing $at_desc ..."
+  $as_echo "325. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -164172,4 +169666,4 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_315
+#AT_STOP_325